
CVE-2019-19194에 대한 writeup 및 이론적 PoC(Proof-of-Concept)
이 문서는 CVE-2019-19194에 대한 라이트업이자 이론적 개념 증명(Proof-of-Concept)입니다.
⚠️ 이 CVE는 https://asset-group.github.io/disclosures/sweyntooth/에서 발견되었습니다.
이 보고서는 Zero LTK 초기화 취약점(CVE-2019-19194)이 보안 연결 페어링 절차를 우회하여 공격자가 Bluetooth Low Energy(BLE) 애플리케이션의 통신을 완전히 제어할 수 있게 하는 방법을 설명합니다.
이 취약점은 보안 연결 페어링 절차를 지원하는 Telink SMP 구현을 사용하는 제품에 영향을 미칩니다.
BLE는 저전력, 근거리 무선 통신 시스템입니다. 두 장치 간의 원격 연결과 보안을 제공하는 일련의 표준화된 프로토콜로 구성됩니다.
BLE 스택은 호스트와 컨트롤러라는 두 가지 아키텍처 블록에 분산되어 있습니다.
스택 분산 구조 덕분에 각 블록을 물리적으로 분리된 구성 요소로 구현할 수 있습니다.
호스트 컨트롤러 인터페이스(HCI)라는 표준 논리 인터페이스가 두 블록 간의 통신을 가능하게 합니다.
BLE 애플리케이션은 호스트 블록 위에 위치합니다.

물리 계층은 2.4GHz 스펙트럼에 걸친 ISM(산업, 과학, 의료) 무선 대역에서 동작합니다. 40개의 채널을 사용하며, 그중 3개는 광고 채널이고 37개는 데이터 채널입니다.
링크 계층(LL)은 여기서 설명하지 않을 많은 역할을 담당합니다. 링크 계층은 중요한 역할과 상태를 정의하는 상태 머신에 의해 제어됩니다:
논리 링크 제어 및 적응 프로토콜은 프로토콜 다중화 계층 역할을 합니다. 하위 계층과 상위 계층 간 패킷의 분할 및 재결합을 처리합니다.
일반 액세스 프로파일은 장치 검색과 연결에 관한 것입니다. 즉, GAP는 광고 패킷의 전송과 스캔을 통한 수신 절차를 정의합니다.
두 BLE 장치 간 연결이 수립되면, GATT는 클라이언트/서버 모델을 사용하여 두 장치 간 데이터를 교환합니다. 클라이언트와 서버는 모두 속성 프로토콜(ATT)을 사용합니다.
SM은 페어링, 본딩 및 키 분배와 같은 보안 관련 절차를 지원합니다. 장치 페어링은 Bluetooth 보안의 기반으로 간주됩니다. 일단 페어링되면 두 장치는 통신을 암호화하고 서로를 인증할 수 있습니다...
BLE 통신에 관여하는 다양한 프로토콜 중에서, zero LTK 설치 CVE는 보안 연결 모드의 페어링 절차 중에 발생합니다.

보안 연결 페어링 모드는 "더 안전한 방식"으로, 레거시 모드의 약점을 해결하기 위해 개발되었습니다. 그러나 zero LTK 설치 CVE는 잘못된 SC 페어링 구현이 보안을 우회할 수 있게 한다는 사실을 발견했습니다.

중앙 장치가 페어링 요청을 보내고 두 장치는 보안 기능과 요구 사항을 교환합니다. 이 단계에서 페어링 모드가 정의됩니다.
공개 키 교환: 중앙 장치가 공개 키 교환을 시작합니다. 주변 장치와 중앙 장치는 모두 수신한 키가 P-256 곡선 위에 있는지 확인합니다.
DHKey 계산: 각 장치는 자신의 개인 키(SK)와 상대 장치의 공개 키(PK)를 사용하여 Diffie-Hellman 키(DHKey)를 계산합니다. 이렇게 하여 두 장치는 동일한 DHKey 값을 보유하게 됩니다.
Central: DHKey = p256(SKc, PKp)
Peripheral: DHKey = p256(SKp, PKc)
MITM 보호가 요청된 경우, 페어링 장치의 신뢰성을 확인하기 위한 대화형 절차가 진행됩니다.
장기 키(LTK) 계산 및 상호 확인: 장치들은 서로를 인증하고 LTK 키를 계산합니다. 3단계 전에 링크를 암호화하기 위해 LTK에서 세션 키가 도출됩니다.
암호화된 링크를 통해 장치들은 키를 분배할 수 있습니다.
zero LTK 설치의 근본 원인은 두 장치가 페어링 절차 중 어느 상태에 있는지 검사하지 않는다는 것입니다. 따라서 공격자인 중앙 장치는 키 생성 및 인증 단계를 건너뛸 수 있습니다. 그 결과 주변 장치의 LTK 키가 0으로 설정되며, 결과적으로 쉽게 도출할 수 있는 세션 키가 생성됩니다.

⚠️ BLE 검색, 광고 또는 페어링 절차의 pcap을 확보하지 못했고, Telink SMP 구현이 탑재된 BLE 장치도 없었기 때문에 이는 완전히 이론적인 개념 증명입니다.