본 문서는 armis의 Blueborne 문서를 바탕으로 작성한 글임을 밝힙니다.
휴대폰, 노트북, 모니터, 스피커, 마우스, 키보드, 이어폰 등등 여러 기기 대부분은 블루투스(Bluetooth)기능을 가지고 있다. 블루투스 기능이 있는 기기만 수십 억대에 이르는데, 블루본(BlueBorne)이 공개되면서 가히 놀란 사람도 무척이나 많았으리라. 블루본은 블루투스와 관련한 취약점 8개로 이루어진 문서로 혹자는 이를 ‘블루투스 스택 해킹의 숨겨져 왔던 성서’라고 표현할 정도다. 그렇다고 세상 완벽한 블루투스에서 취약점 나와 놀라운 것일까. 반어법이다. 오늘은 블루투스 취약점을 모아서 발표한 armis의 블루본에 대해 이야기해 볼까 한다. 참고로 오늘 글에서는 블루본에서 다룬 취약점에 관한 내용 1도 없으며, 단순히 블루투스 취약점에 대해 글을 써본다. 하지만 블루본에서 다룬 취약점에 대해 아예 글을 안 쓰겠다는 것은 아니다. 다만, 오늘 글이 아니라 언젠가 쓰겠다는 이야기다. 처음에 “누나, 누나, 블루본 내용을 요약해서 그레이뉴스에 올려요” 이런 얘기를 들었을 때 “오 그럴까”하며 아주 긍정적으로 받아들였었다. 41페이지의 블루본 문서를 보기 전까지. 아무튼, 하고 싶어지면 써보겠다. 이보다 더 좋은 시나리오는 몽 행님이 먼저 하나하나 해보시면서 글을 쓰시고, 내가 그걸 모아서 하나의 기사 글로 엮으면 아주 좋을 것 같은데.
블루투스는 단거리 통신을 위해 가장 널리 보급된 프로토콜로, armis의 예상에 따르면 현재 82억 개 이상의 블루투스 장비가 사용되고 있으며, 그 수가 하루가 다르게 증가하고 있다고 한다. 앞서 얘기한 것처럼 스마트 TV, 자동차, 스피커 등등 수많은 기기를 생각하면 오히려 블루투스 기능이 없는 기기를 찾는 것이 더 어려울 수도 있겠다. 블루투스는 Bluetooth SIG (Special Interests Group)에서 처음 만들어졌으며 여기에서 개발, 관리, 라이센스를 유지하고 있다. Bluetooth SIG는 블루투스 기술개발 및 제품 보급을 지원하기 위해 다국적기업들이 함께 설립한 비영리 단체로, 2010년 기준으로 전 세계 1만 3,000개 회사를 회원으로 두고 있다. 따라서, 이번 블루본은 많은 회원 수를 보유하고 있는 만큼 Microsoft, Apple, Google, Samsung 등 여러 기업 제품이 고스란히 영향을 받을 것으로 보인다.
블루투스는 우리가 알게 모르게 여러 발전을 해왔었다. BLE (Bluetooth Low Energy)와 같이 블루투스를 사용하기 위한 적은 전원 공급 관련 기술이나 Bluetooth Mesh라고 하여 정교한 구조로 큰 네트워크를 형성할 수 있는 블루투스 연결 토폴로지 기술이 현재 구현되어 적용된 기술이다. 이렇게 꾸준하게 발전해온 블루투스는 어느덧 Bluetooth 5.0이 되어 ‘저가격-저전력’ 지향에 따라 저렴한 가격으로 수많은 IoT 기기를 연결하고, 더 많은 데이터를 전송할 수 있게 되었다. 특히, 우리가 주목해야 할 것은 2.1버전에서 나온 페어링과 관련한 SSP(Secure Simple Pairing) 기능 되시겠다.
블루투스는 SMP (Security Management Protocol)라고 하여, 블루투스의 다양한 보안 메커니즘을 제공한다. 이를 흔히 우리가 아는 말로 페어링이라고 하는데 페어링이란, 블루투스의 네트워크망에서 검색된 장치를 서로 연결하는 과정으로, 페이링이 되어야지만 기기끼리 서로 데이터를 송수신할 수 있다. 본래, 2.1 버전 이전에는 기기에 하드 코딩된 PIN 코드를 교환하여 페어링을 했었다. 하지만 이러한 교환 메커니즘은 여러 문제를 낳았다. 따라서 이런 취약한 연결 방식이 보안성을 가지고 레벨업 해서 나온 것이 SSP인 것이다. SSP는 SMP의 보안 메커니즘을 거의 완벽하게 수행했다. 단순히 연결만을 하는 것이 아니라, 상대방에게 동의를 구하여 상대방이 “OK”해줄 때만 키를 제공하여 연결하고, 이후 오가는 데이터도 제공되는 키를 통해 암호화하여 송수신된다는 것이SSP의 방식이다. 이는 생각보다 단단한 보안 메커니즘이다. 여러 해킹 고수들이 시도했지만, 난공불락의 기술인지라 아주 안전해 보이는 기능이었던 것이다. 그래서 이 기능으로 블루투스는 깨지지 않는 보안으로 여겨졌을지 모른다.
그래서 블루투스가 2007년 7월 26일에 SSP 기능을 가진 2.1이 발표되면서 알게 모르게 안전하다고 생각했던 것 같다. 그렇다면 단순히 이런 고정관념을 깨서 이번 블루투스 해킹이 주목을 받은 것일까. arims에 따르면, 한층 더 강화된 페어링 기능 외에도 블루투스의 구조는 상당히 복잡하다고 한다. 취약점을 찾으려면 보통은 스펙문서를 많이 본다. 블루투스도 스펙 문서가 존재하는데, 이 스펙문서가 워낙 복잡하고 어려운지라 전문가들도 보기 어렵다고한다. 하지만 운영체제도 분석해서 취약점을 찾아내는 해커들인데, 블루투스 스펙문서가 아무리 어렵다고 하여 과연 못 찾아내는 이유가 되었을까. 개인적인 생각으로는 아마 진짜 해킹 고수들은 이미 이 취약점을 알고 있지 않았을까 생각된다. 그래서 자신들이 필요할 때 사용하거나 혹은 정부에 팔거나 하지 않았을까.
그런 의미로 armis에서 발표한 블루본이 아주 주목받는 것이다. SSL의 취약점, 하트블리드처럼 블루투스의 ‘안전하다’라는 고정관념을 깨버리고 이를 모두에게 공개해버린 것이다. 물론, 블루본이 주목받는 이유가 이뿐만은 아니다. 그 이유로 첫 번째는 armis에서 공개한 블루본 문서에는 여러 개의 취약점을 하나로 모아 8개를 한번에 빵! 터트렸다는 점이다. 만약, armis가 자신들이 찾은 취약점 하나, 하나 차례로 발표했다면 어땠을까. 아마도 WikiLeaks에 줄기차게 나오는 vault 7과 같은 운명이 되지 않았을까 생각한다. CIA 해킹 Tool이 공개된다고 하였을 때 얼마나 놀랐던가. 하지만 하나씩 나오고 있는 지금, 그때만큼 주목받지 못한다. 블루본이 주목받는 이유 두 번째는 공개한 모든 취약점이 페어링 전에 해킹한다는 것이다. 그것도 힙, 스택 레벨, 논리적 결함 등 상당히 깊숙한 공격 포인트로 말이다. 아는 행님은 이 블루본을 보고 ‘놀라워’, ‘짱이야’라는 감탄사를 날리실 정도다. 물론 저 감탄사에는 여러 의미가 있겠지마는. 이러한 점들 때문에 블루본이 더욱 주목받는 것이 아닐까 생각이 든다.
그렇다면 블루본(BlueBorne)은 대체 뭘까. 블루본은 armis가 발표한 문서로, 해커가 블루투스 연결의 취약점을 통해 대상 기기를 완벽하게 제어할 수 있는 제로데이 취약점 8개 내용을 포함하고 있다. 블루본은 블루투스 기능을 가진 수많은 기기에 영향을 주고, 사용자의 ‘확인’이라는 응답을 받지 않아도 공격을 할 수 있어 상당히 크리티컬하다. 즉, 82억대 이상의 기기가 이 공격에 노출되어 있고, 블루투스 기능만 켜져 있으면 이 공격 범위 안에 들어온다는 것이다. 더욱이, 블루본 공격으로 원격 코드 실행, 중간자 공격 등 다양한 종류의 공격과, 블루투스 네트워크로 Mirai와 같은 대규모 봇넷을 생성하는 등 매우 광범위하게 쓰일 수 있다. 블루본에서 공개한 제로데이 취약점은 아래와 같다.
안드로이드의 정보 유출 취약점 (CVE-2017-0785)
안드로이드의 블루투스 네트워크 인캡슐레이션 프로토콜 (BNEP)에 존재하는 원격 코드 실행 취약점 (CVE-2017-0781)
안드로이드의 BNEP PAN 프로필에 존재하는 원격 코드 실행 취약점 (CVE-2017-0782)
안드로이드의 블루투스 파인애플에 존재하는 논리적 결함 (CVE-2017-0783)
리눅스 커널 원격 코드 실행 취약점 (CVE-2017-1000251)
리눅스 블루투스 스택 (BlueZ) 정보 유출 취약점 (CVE-2017-1000250)
윈도우의 블루투스 파인애플 취약점 ? 논리적 결함 (CVE-2017-8628)
애플의 Low Energy 오디오 프로토콜 원격 코드 실행 취약점 (CVE 미등록 상태)
현재 공개된 취약점 8개에 대해 각 기업의 제품은 빠르게 보안 패치를 적용하고 있다. 예를 들어, Apple은 이미 이 취약점에 대해 패치를 완료하여 iOS 9.3.5 이하 버전 및 7.2.2 이하 버전에서만 취약점을 가지고 있고, Windows 역시 9월 12일 보안 패치를 하였다. 리눅스와 구글도 이에 대해 패치를 준비하고 있는 것으로 보고 있다. 즉, Apple과 Microsoft의 제품은 패치가 된 상태이며, 리눅스를 기반으로 하고 있는 삼성 기어 S3 (Smartwatch), 삼성 스마트 TV, 삼성 스마트 냉장고 등은 현재 패치가 안 된 것으로 보인다. 또한, 구글의 Android 역시 파트너들에게 보안 패치를 권고한 상태라고 알렸다. 어쨌든, 기업에서 생각이 있고, 사용자가 보안 패치를 받으면 이번에 공개한 블루본에 있는 취약점은 해결될 것으로 보인다. 하지만 문제는 패치가 힘든 기기들이다. 인터넷이 연결되어 있지 않은 블루투스 기기들은 어떻게 패치할 것인가. 예를 들어, 블루투스 헤드셋, 인터넷이 연결되어 있지 않은 스피커 등등 보안 패치가 힘든 기기들도 많다는 것이다. 생각을 아니 해볼 수 없는 문제라고 본다. 그리고 현재 armis 에서는 블루본에 있는 8개의 취약점 외에도 아직 공개하지 않은 취약점을 가지고 있다고 밝혔다.
아무튼 블루투스에 관련된 제로데이 취약점 8개를 공개하고, armis 기업은 순식간에 급부상했다. 아마도 모두가 이번 취약점을 보면서 “아, 내가 먼저 찾아낼 수도 있었는데” 라고 생각했을지 모른다. 그런 의미로 armis는 어떻게 이런 블루투스 취약점을 찾아내려 했을까. 앞서 얘기했듯이 순식간에 레벨업 된 기업의 명성도 생각했었으리라. 그리고 슬그머니 나오고 있는 WIFI 취약점에서도 동기부여가 되었지 않았을까 생각한다. 그런 의미로 세상에 완벽한 보안은 없다. 우리가 안전하다고 생각했던 SSL에서도 취약점이 나온 것만으로 우리는 이미 한방 먹었지 않았는가. 그리고 우리가 기술이 부족해서 못 찾는 것도 아니라고 생각한다. 난 부족하지만. 아무튼, 하고 싶은 말은 누구든 충분히 해볼 수 있었을 것이란 이야기다.