이전 BootROM 익스플로잇인 checkm8(2019년, A5~A11 칩 대상)과 달리, usbliter8은 A12·A13 칩 세대를 새롭게 겨냥합니다 . A11 칩은 USB 드라이버가 매 패킷 처리 후 포인터를 수동으로 재설정하여 영향을 받지 않으며, A14 이후 칩은 시큐어ROM에서 USB DART(메모리 보호)를 올바르게 설정하여 이 취약점을 차단합니다
.
링 버퍼 포인터 불일치: USB 컨트롤러는 최대 3개의 USB 셋업 패킷을 DMA(직접 메모리 접근) 버퍼에 저장합니다. 각 쓰기 후 하드웨어 포인터는 데이터 크기만큼 증가하고, 세 번째 패킷 후에는 24바이트를 고정적으로 감소시켜 리셋합니다 .
초소형 패킷 공격: 컨트롤러는 일반적인 8바이트보다 작은 패킷도 수용하지만, 항상 4바이트 정렬로 저장합니다. 작은 패킷이 수신되면 포인터 증가량(실제로 쓰인 데이터)과 고정 감소량(24바이트)이 일치하지 않아 12바이트 단위의 버퍼 언더플로(buffer underflow)가 발생합니다 . 즉, 포인터가 메모리 상에서 '뒤로 걷게' 됩니다.
메모리 덮어쓰기: 이를 통해 공격자는 부팅 중 접근 불가능한 SRAM(정적 램) 영역, 특히 스택 데이터와 힙 메타데이터를 덮어쓸 수 있습니다 .
코드 실행: A12 칩에서는 USB 태스크 스택에 저장된 링크 레지스터(LR)를 덮어써 프로그램 카운터(PC)를 직접 탈취합니다. A13 칩의 경우 PAC(포인터 인증 코드) 보호가 있어 힙 체크섬 및 패닉 카운터를 우회하는 다단계 공격이 필요합니다 .
BootROM(시큐어ROM)은 칩이 전원을 켤 때 가장 먼저 실행되는 코드로, 칩 제조 과정에서 읽기 전용 메모리(ROM)에 영구적으로 기록되어 공장 출하 후에는 변경이 불가능합니다 . 취약점의 근본 원인이 USB 컨트롤러의 하드웨어 버그이기 때문에 애플은 펌웨어나 OS 업데이트로 이를 해결할 수 없습니다
. 유일한 실질적 해결책은 A14 이상 칩을 탑재한 신형 기기로 업그레이드하는 것입니다
.
이 취약점을 악용하려면 공격자가 기기를 DFU(Device Firmware Update) 모드로 전환한 상태에서 물리적 USB 접근이 필요하므로 원격 공격은 불가능합니다 . 공격에 성공하면 보안 설정이 일시적으로 낮춰지고, 서명되지 않은 소프트웨어를 부팅할 수 있게 되며, 기기의 USB 시리얼 번호가 'PWND'로 표시됩니다
. 직접적으로 시큐어 인클레이브(Secure Enclave)를 위협하지는 않지만, 시큐어 인클레이브 공격의 문턱을 크게 낮출 수 있습니다
. 이 취약점은 아이폰에 대한 탈옥(jailbreak) 도구 개발에도 활용될 가능성이 있습니다
.
Comments
0 comments