> THE-ARSENAL
> _

무대 위에 최고급 그랜드 피아노가 한 대 놓여 있다. 피아니스트는 건반을 두드려 아름다운 선율을 만들어낸다. 이것이 피아노 제작자가 의도한 기계의 목적이다. 건반을 누르면 해머가 현을 때리고, 소리가 난다. 완벽하게 설계된 '정상 기계(Normal Machine)'의 세계다.

그런데 어느 날 밤, 연미복 대신 검은 옷을 입은 불청객이 무대에 난입한다. 그는 건반을 치는 대신 피아노 뚜껑을 연다. 그리고 펜치로 피아노 내부의 팽팽한 강철 현을 끊어낸다. 그는 그 끊어진 현들을 서로 엮어 올가미를 만들고, 페달을 분해해 방아쇠 장치로 쓴다. 순식간에 아름다운 악기는 치명적인 덫으로 변한다. 피아노는 고장 나지 않았다. 피아노를 구성하는 부품들의 물성을 극한으로 이용했을 뿐이다.

우리는 이것을 해킹이라고 부른다. 그리고 이 비유는 당신이 손에 쥔 스마트폰, 책상 위의 노트북 안에서 벌어지는 일과 소름 끼치도록 똑같다. 해커들은 소프트웨어라는 피아노를 연주하지 않는다. 그들은 코드를 분해하고 재조립해, 개발자가 상상조차 한 적 없는 '제2의 기계'를 만들어낸다. 보안 업계의 가장 심오한 이론가들이 '기이한 기계(Weird Machine)'라고 명명한 이 유령 같은 존재에 대해 이야기해 볼 참이다. 우리가 안전하다고 믿는 투명한 상자 속에, 사실은 괴물이 살고 있다.

기이한 기계(Weird Machine)란 무엇인가?

보통 사람들은 해킹을 당했다고 하면, 누군가 내 컴퓨터에 몰래 들어와서 '악성 바이러스'라는 나쁜 프로그램을 설치했다고 생각한다. 미안하지만 그건 세기말의 낡은 상상이다. 현대의 고도화된 방어 시스템은 외부의 낯선 프로그램을 철저하게 차단한다. 그렇다면 해커는 어떻게 침투할까? 답은 간단하다. 외부에서 무기를 가져오는 대신, 당신의 집 안에 있는 가구들로 무기를 만든다.

'기이한 기계'는 해커가 설치하는 것이 아니다. 당신이 매일 쓰는 카카오톡, 엑셀, 인스타그램 앱 안에 이미 잠재되어 있다. 소프트웨어는 수백만 줄의 코드로 이루어져 있다. 이 코드들은 각각 "메모리에 1을 더해라", "화면을 갱신해라", "파일을 저장해라" 같은 작은 명령어들의 집합이다. 해커는 이 정상적이고 합법적인 명령어 조각들, 전문 용어로 '가젯(Gadget)'이라고 부르는 파편들을 찾아낸다.

그리고 이 조각들을 개발자가 의도하지 않은 순서로 실행시킨다. "파일을 저장해라"라는 명령어 뒤에 "화면을 꺼라" 대신 "관리자 권한을 넘겨라"와 유사한 효과를 내는 코드 조각을 이어 붙이는 식이다. 마치 스크래블 게임의 알파벳 타일로 단어를 만드는 대신, 타일을 겹쳐 쌓아 칼을 만드는 것과 같다. 타일은 죄가 없다. 그것을 기괴하게 쌓아 올린 방식이 문제일 뿐이다. 이 순간, 당신의 평범한 앱은 '기이한 기계'로 돌변하여 해커의 명령을 수행하기 시작한다.

튜링의 저주: 복잡한 시스템은 필연적으로 괴물을 낳는다

왜 개발자들은 애초에 이런 기괴한 기계가 만들어지지 않도록 막지 못할까? 여기서 우리는 현대 컴퓨터 과학의 아버지, 앨런 튜링의 이름을 빌려 '튜링의 저주'라 부를 수밖에 없는 슬픈 진실과 마주하게 된다.

시스템이 일정 수준 이상으로 복잡해지면, 그 시스템은 필연적으로 '튜링 완전(Turing Complete)'해진다. 어렵게 들리겠지만, 쉽게 말해 "무엇이든 계산할 수 있는 상태"가 된다는 뜻이다. 개발자는 단지 '채팅 기능'만 넣고 싶었을지라도, 그 채팅 기능을 구현하기 위해 들어간 수만 줄의 코드가 서로 상호작용하는 과정에서, 우연히 계산기 기능도, 엑셀 기능도, 심지어 해킹 도구로서의 기능도 수행할 수 있는 잠재력을 갖게 된다.

이것은 막을 수 있는 버그가 아니다. 복잡성의 부산물이다. 기능이 많아질수록, 코드가 길어질수록, 그 안에서 조합 가능한 '경우의 수'는 우주만큼 늘어난다. 개발자는 그중에서 '정상적인 작동'이라는 아주 좁은 길 하나만 테스트했을 뿐이다. 나머지 99.9%의 미지의 영역은 해커들의 영토다. 그곳에는 개발자가 이름 붙이지 않은 수많은 '기이한 기계'들이 잠들어 있고, 해커는 그 기계를 깨우는 주문(Exploit)을 찾아내는 탐험가들이다.

의도하지 않은 계산: 버그가 아니라 '숨겨진 기능'이다

이 관점에서 보면 '버그'라는 단어는 틀렸다. 그것은 오류가 아니라 '놀라운 기능'이다. 단지 우리가 주문하지 않았을 뿐. 해커가 시스템을 장악하는 과정은 파괴가 아니라 '창조'에 가깝다. 예를 들어 그들은 '반환 지향 프로그래밍(ROP)'이라는 기술을 통해, 메모리 속에 흩어진 정상 코드의 꼬리표들을 엮어 낸다.

예를 들어보자. 어떤 이미지 뷰어 프로그램이 있다. 이 프로그램은 사진을 보여주는 기능만 있어야 한다. 그런데 해커가 특수하게 조작된 이미지 파일을 이 프로그램으로 연다. 겉보기엔 평범한 사진이지만, 이 파일의 데이터는 프로그램의 메모리 처리 방식을 미세하게 비튼다. 프로그램은 사진을 렌더링 하려던 붓을 놓치고, 대신 해커가 의도한 대로 메모리 주소를 뛰어넘어 다니기 시작한다.

A 함수의 끝부분, B 함수의 중간 부분, C 함수의 도입부를 징검다리 건너듯 밟고 지나가자, 뜬금없이 '계산기 앱'이 실행되거나 시스템의 중요 파일이 밖으로 전송된다. 이미지 뷰어는 고장 난 것이 아니다. 해커가 입력한 데이터에 따라 충실하게, 아주 기이한 방식으로 '계산'을 수행했을 뿐이다. 우리는 이것을 버그라고 부르지만, 해커에게는 그저 '숨겨진 기능의 발견'이다.

계산기가 비행기 조종석을 탈취할 수 있을까?

이 이론이 현실에서 얼마나 섬뜩하게 적용되는지 보여주는 유명한 사례가 있다. 바로 '폰트(Font)' 취약점이다. 우리는 예쁜 글씨체를 보기 위해 폰트 파일을 다운로드한다. 폰트는 그저 글씨 모양일 뿐이라고 생각한다. 하지만 컴퓨터 내부에서 폰트를 화면에 그리는 '폰트 엔진'은 매우 복잡한 수학적 계산을 수행하는 기계다.

몇 년 전, 특정 폰트 엔진의 취약점이 발견되었다. 해커는 글씨의 곡선을 그리는 수학 공식을 악용했다. 사용자가 악성 폰트가 포함된 웹페이지를 보는 순간, 폰트 엔진은 글자를 그리는 대신 폰트 파일 안에 숨겨진 기하학적 수식을 풀기 시작했다. 그리고 그 수식의 결과값은 놀랍게도 '윈도우 커널 권한 탈취'였다.

글씨를 보여주는 도구가, 시스템의 심장부를 장악하는 무기로 변한 것이다. 조종사가 비행기 매뉴얼을 읽고 있는데, 그 매뉴얼의 폰트가 비행기의 자동 조종 장치를 해킹해 버린 셈이다. 이것이 바로 기이한 기계의 공포다. 화면도 없는 프린터가 게임을 실행하고, 스마트 전구가 와이파이 비밀번호를 뱉어낸다. 모든 사물이 컴퓨터가 된 세상에서, 모든 사물은 잠재적인 '기이한 기계'다.

통제할 수 없는 것을 사랑하는 법: 보안의 패러다임 시프트

우리는 이제 인정해야 한다. 우리가 만든 투명한 상자 속의 유령을 완전히 쫓아내는 것은 불가능하다는 것을. 시스템이 유용해질수록, 즉 복잡해질수록 기이한 기계의 출현 가능성은 높아진다. 이것은 기술적 한계가 아니라 논리적 필연이다. 완벽하게 안전한 시스템을 만들려면, 아무 기능도 없는 계산기를 만들면 된다. 하지만 우리는 스마트폰을 원하지 않는가.

그렇다면 우리는 공포에 떨며 살아야 할까? 아니다. 관점을 바꿔야 한다. "절대로 뚫리지 않는 시스템"이라는 오만을 버려야 한다. 대신 "언젠가 기이한 기계가 작동할 수 있음"을 전제로, 그 기계가 작동하더라도 피해를 최소화할 수 있는 구조(격리, 샌드박싱) 등의 대응 방안을 마련해야 한다.

해커들의 시선으로 세상을 보는 것은 때로 섬뜩하지만, 동시에 경이롭다. 그들은 닫힌 결말의 소설을 읽으면서도 행간에 숨겨진 새로운 문장을 찾아내는 독자들이다. 당신의 스마트폰은 단순히 전화를 거는 기계가 아니다. 누군가 건드리기 전까지는 조용히 잠들어 있는, 무한한 가능성의 카오스다. 오늘 밤 당신이 무심코 누르는 '확인' 버튼 뒤에서, 어떤 기이한 기계가 톱니바퀴를 돌리기 시작할지 아무도 모른다. 그 불확실성을 인지하는 것, 그것이 21세기 디지털 시민이 갖춰야 할 진짜 교양이다.

3줄 요약

  1. '기이한 기계'는 외부의 악성코드가 아니라, 복잡한 시스템 내부의 정상적인 코드 조각들이 의도치 않게 재조립되어 발생하는 해킹 메커니즘이다.
  2. 시스템이 복잡해질수록 튜링 완전성에 의해 필연적으로 예상치 못한 계산(해킹)이 가능한 상태가 되며, 이는 단순한 버그 수정으로 막을 수 없다.
  3. 폰트 파일 하나로 시스템 전체를 장악하는 사례처럼, 모든 디지털 도구는 잠재적인 무기이므로 완벽한 보안에 대한 환상을 버리고 격리 등의 대응 방안을 마련해야 한다.