2016년 10월 21일, 미국 동부 사람들에게 인터넷의 상당 부분이 멈췄다. 트위터가 안 열렸다. 레딧, 넷플릭스, 스포티파이, 깃허브 — 전부 깜빡이거나 죽었다. 사람들이 흔히 상상하는 방식으로 해킹당한 건 아무것도 없었다. 유출된 데이터베이스도 없었다. 공격자들은 대다수 사용자가 이름도 들어본 적 없는 회사, 큰 이름들의 DNS를 대신 운영하던 Dyn을 노렸고, 봇넷에서 나온 세 차례의 트래픽으로 그곳을 때렸다.
정작 스캔들이었어야 했지만 대개 그렇지 못했던 부분은, 그 봇넷이 무엇으로 만들어졌느냐다. 탈취된 서버가 아니었다. 기발한 브라우저 익스플로잇도 아니었다. 그것은 가정용 보안 카메라, DVR(디지털 영상 저장장치), 공유기로 만들어졌다 — 사람들의 거실과 작은 사무실에 놓인 값싼 플라스틱 상자들. 그중 수십만 대가 동시에 장악되어 Dyn을 향해 겨눠졌다.
그리고 그것들은 대단한 무언가에 장악된 게 아니었다. 미라이는 공장 초기 비밀번호를 그냥 입력해서 들어갔다.
침입한 게 아니라 로그인했다
미라이의 ‘기발한 부분’은 이게 전부다. 그리고 기발하지 않다는 점이 이야기의 핵심이라 정확히 짚고 싶다. 이 악성코드는 텔넷 포트 — 23번, 그리고 사촌 격인 2323번 — 가 열린 장치를 찾아 인터넷을 훑었다. 텔넷은 1969년에 나온 원격 접속 프로토콜로, 비밀번호를 포함해 모든 걸 평문으로 보낸다. 2016년에 인터넷을 향해 열려 있을 이유가 전혀 없는데도, 수백만 대의 소비자용 장치가 이걸 열어둔 채 출하됐다.
미라이는 열린 텔넷 포트를 찾으면, 하드코딩된 62개의 아이디·비밀번호 조합으로 로그인을 시도했다. admin/admin. root/root. root/123456. support/support. 제조사가 똑같은 장치에 똑같이 찍어 넣고 아무도 바꾸도록 강제하지 않는 초기 자격증명. 62개 중 하나라도 통하면 그 장치는 이제 봇이 됐다. 통제 서버에 자신을 보고하고, 명령을 기다리며, 그사이 다음 희생양을 찾아 스캔했다.
그게 다다. 그게 공격이다. 메모리 손상도, 제로데이도, 권한 상승도 없다. 장치들은 만들어진 그대로 정확히 동작했을 뿐이다 — 함께 딸려 온 자격증명으로 로그인을 받아준 것. 미라이는 그 자격증명을 알고 있었을 뿐이고, 사실 모두가 알고 있었다. 그건 설명서에 있었고, 스티커에 인쇄돼 있었고, 검색엔진에 색인돼 있었다.
장치들은 왜 거절하지 못했나
웹캠에게 비밀번호가 있다는 걸 탓할 수는 없다. 탓해야 할 건 그 비밀번호를 거기에 놓고, 고칠 수 없게 만든 경제 구조 전체다.
3만 원짜리 IP 카메라는 누군가가 관리하는 컴퓨터가 아니다. 그건 가전이다. 공장에서 — 여러 브랜드가 상표만 바꿔 다는 화이트라벨 보드인 경우가 많다 — 펌웨어에 초기 로그인이 박히고, 제조사 편의를 위해 텔넷이 켜지고, 아무도 절대 쓰지 않을 업데이트 방식과 함께 출하된다. 이걸 산 사람은 전원을 꽂고, 휴대폰으로 영상을 보고, 다시는 건드리지 않는다. 초인종 카메라에는 ‘패치 화요일’이 없다. 패치 자체가 아예 없는 경우가 흔하다.
그러니 취약점은 버그가 아니었다. 그건 비즈니스 모델이었다. 사슬의 모든 당사자는 보안을 건너뛸 합리적 이유가 있었다: 칩 제조사는 디버깅이 쉬워서 텔넷을 켠 레퍼런스 펌웨어를 팔았고, 브랜드는 바꾸면 돈이 드니 그대로 출하했고, 유통사는 이 물건이 봇넷에 징집될 수 있는지가 아니라 가격으로 경쟁했고, 구매자는 이 중 무엇도 평가할 방법이 없었고 평가할 수 있었어도 더 내지 않았을 것이다. 불안전이야말로 비용 최적화된 기본값이었고, 그것이 수백만 대 규모로 확장됐다. 미라이는 그 시스템의 구멍을 찾은 게 아니다. 미라이가 그 시스템 자체를, 우리에게 되읽어준 것이다.
소스 코드는 일부러 공개됐다
Dyn 공격 몇 주 전인 2016년 9월 말, “Anna-senpai”라는 닉네임을 쓴 누군가가 미라이의 전체 소스 코드를 해킹 포럼에 올렸다. 무기를 지키려는 사람이 할 짓이 아니다. 발뺌하려는 사람이 하는 짓이다: 일단 코드가 공개되어 누구나 자기 사본을 돌릴 수 있게 되면, 어느 봇넷의 트래픽도 당신을 깔끔하게 가리키지 못한다.
위장으로는 통했고, 봉쇄로는 역효과였다. 소스를 공개한 것은 하나의 봇넷을 하나의 템플릿으로 바꿔놓았다. 몇 주 만에 서로 다른 사람들이 돌리는 수십 개의 미라이 변종이 생겼고, 저마다 똑같은 무방비 장치 풀을 스캔하며, 때로는 같은 카메라를 두고 서로 싸웠다. Dyn 공격은 이렇게 커지고 쪼개진 생태계에 기댔다. 소스 코드는 회수할 수 없다. “IoT 봇넷은 이렇게 만든다”가 일단 내려받을 수 있는 파일이 되면, 그건 풍경의 영구적 일부가 된다. 미라이의 후손들은 오늘도 23번 포트를 스캔하고 있다.
원조를 만든 사람들은 잡혔는데, 그 자체가 작은 아이러니다. 2017년 12월, 세 남자 — Anna-senpai였던 럿거스 대학 컴퓨터공학과 학생 Paras Jha, 그리고 Josiah White와 Dalton Norman — 가 연방 컴퓨터 범죄 혐의에 유죄를 인정했다. 동기는 거의 공격적일 만큼 시시했다: 마인크래프트 서버를 둘러싼 장사에서 시작됐다. DDoS 힘으로 경쟁 서버를 마비시키고, 정작 자신들이 날리는 바로 그 공격에 대한 ‘보호’를 팔았다. 그들은 FBI에 협조했고, 아무도 실형을 살지 않았다 — 보호관찰, 사회봉사, 배상. 그때까지 인터넷이 본 최대 규모의 DDoS 사건은 비디오 게임을 둘러싼 사업 다툼으로 거슬러 올라갔다.
아무도 끝까지 배우지 못한 두 교훈
미라이는 두 가지를 가르쳤고, 업계는 각각을 절반씩만 배웠다.
첫째는 DNS에 관한 것이다. Dyn 공격은 사람들이 못 들어간 사이트들을 망가뜨린 게 아니다. 트위터도 넷플릭스도 그동안 멀쩡히 떠 있었다. 망가진 건 그것들이 어디 사는지 알려주는 주소록이었다. 충분히 많은 회사가 DNS를 단 하나의 제공업체에 위탁해 둔 탓에, 그 한 곳을 무너뜨리는 것이 그들 모두를 한꺼번에 무너뜨렸다. 이건 그 이후 모든 대형 장애와 같은 형태다 — 아무도 신경 쓰지 않다가 실패하는 순간 드러나는 공유 의존성, 그리고 그 폭발 반경은 모든 고객이 동시에다. 우리는 더 싸고 대개 더 안정적이라는 이유로 더 적은 제공업체로 계속 집중하고, 그 ‘대개’가 통하다가 통하지 않는 순간마다 계속 놀란다.
둘째는 장치에 관한 것이고, 우리가 거의 손대지 못한 교훈이다. 인터넷에 연결된 가전의 수는 2016년 이후 자릿수가 하나 더 늘었다 — 더 많은 카메라, 더 많은 온도조절기, 더 많은 스피커, 칩 하나와 초기 비밀번호 하나와 업데이트 경로 없음을 갖춘 더 많은 물건들. 그 사이 법도 생겼다(캘리포니아와 영국은 연결 장치의 보편적 초기 비밀번호를 금지했다). 그런 법은 언저리에서 도움이 된다. 그러나 근본 경제는 움직이지 않았다: 보안 비용을 부담하는 사람과, 불안전의 대가를 치르는 사람이 서로 다르다. 당신의 카메라가 징집돼도 당신은 다치지 않는다. 다치는 건 Dyn이고, Dyn에 의존한 모두다.
미라이는 명석한 공격자에 관한 이야기가 아니었다. 그건 모두가 이미 아는 비밀번호를 아는 누구에게든 문을 열어주는 장치로 가득 찬 세상, 그리고 그것들이 그러지 않으리라 가정한 인터넷에 관한 이야기였다. 흥미로운 건 공격자가 아니다. 흥미로운 건 문들이 열려 있었다는 것, 그리고 지금도 대부분 여전히 열려 있다는 것이다.