GN⁺: "오퍼레이션 트라이앵귤레이션: 연구원들의 아이폰을 공격할 때 얻게 되는 것"
(securelist.com)'Operation Triangulation' 공격 체인
- 악의적인 iMessage 첨부 파일을 보내어 사용자 모르게 애플리케이션에서 처리함.
- 이 첨부 파일은 문서화되지 않은, 애플 전용 ADJUST TrueType 폰트 명령어의 원격 코드 실행 취약점 CVE-2023-41990을 이용함.
- 반환/점프 지향 프로그래밍과 NSExpression/NSPredicate 쿼리 언어로 작성된 다단계를 사용하여 JavaScriptCore 라이브러리 환경을 패치하고 JavaScript로 작성된 권한 상승 익스플로잇을 실행함.
- JavaScript 익스플로잇은 완전히 읽을 수 없게 난독화되어 있으며 크기를 최소화하고 있음. 약 11,000줄의 코드가 주로 JavaScriptCore와 커널 메모리 파싱 및 조작에 할애됨.
- JavaScriptCore의 디버깅 기능 DollarVM($vm)을 이용하여 스크립트에서 JavaScriptCore의 메모리를 조작하고 네이티브 API 함수를 실행할 수 있는 능력을 획득함.
- 구형 및 신형 아이폰 모두를 지원하도록 설계되었으며, 최신 모델의 취약점을 이용하기 위한 Pointer Authentication Code(PAC) 우회를 포함함.
- XNU의 메모리 매핑 시스템 호출(mach_make_memory_entry 및 vm_map)의 정수 오버플로 취약점 CVE-2023-32434을 이용하여 사용자 수준에서 장치의 전체 물리 메모리에 대한 읽기/쓰기 접근을 획득함.
- 하드웨어 메모리 매핑 I/O(MMIO) 레지스터를 사용하여 Page Protection Layer(PPL)를 우회함. 이는 CVE-2023-38606으로 완화됨.
- 모든 취약점을 이용한 후 JavaScript 익스플로잇은 장치에서 원하는 작업을 수행할 수 있으며, 스파이웨어를 실행하는 대신 IMAgent 프로세스를 시작하고 장치에서 익스플로잇 흔적을 지우는 페이로드를 주입하거나 Safari 프로세스를 보이지 않는 모드로 실행하여 다음 단계가 있는 웹 페이지로 전달함.
- 웹 페이지에는 피해자를 확인하는 스크립트가 있으며, 검사를 통과하면 다음 단계인 Safari 익스플로잇을 받음.
- Safari 익스플로잇은 CVE-2023-32435를 사용하여 쉘코드를 실행함.
- 쉘코드는 Mach 객체 파일 형태의 또 다른 커널 익스플로잇을 실행함. 이는 CVE-2023-32434 및 CVE-2023-38606과 동일한 취약점을 사용함. 크기와 기능 면에서 방대하지만 JavaScript로 작성된 커널 익스플로잇과는 완전히 다름. 관련된 부분은 두 익스플로잇이 공유하지만, 대부분의 코드는 커널 메모리 파싱 및 조작에 할애됨. 다양한 사후 침투 유틸리티를 포함하고 있으나 대부분 사용되지 않음.
- 익스플로잇은 루트 권한을 획득하고 스파이웨어를 로드하는 다른 단계를 실행함.
미스터리와 CVE-2023-38606 취약점
- 최근 아이폰 모델에는 커널 메모리의 민감한 영역에 대한 추가적인 하드웨어 기반 보안 보호 기능이 있음.
- 이 보호 기능은 공격자가 커널 메모리를 읽고 쓸 수 있게 되더라도 장치를 완전히 제어할 수 없도록 방지함.
- 공격자는 애플이 설계한 SoC의 또 다른 하드웨어 기능을 사용하여 이 하드웨어 기반 보안 보호를 우회함.
- 공격자는 데이터, 목적지 주소, 데이터 해시를 펌웨어에서 사용하지 않는 칩의 알려지지 않은 하드웨어 레지스터에 쓰는 방식으로 하드웨어 기반 메모리 보호를 우회함.
- 이 알려지지 않은 하드웨어 기능은 아마도 애플 엔지니어나 공장에서 디버깅이나 테스트 목적으로 사용하려고 의도했거나 실수로 포함된 것으로 추정됨.
기술적 세부 사항
- SoC에 있는 다양한 주변 장치는 CPU가 이 장치들을 작동시키기 위해 사용할 수 있는 특수 하드웨어 레지스터를 제공함.
- 이러한 하드웨어 레지스터는 CPU가 접근할 수 있는 메모리에 매핑되어 있으며, "메모리 매핑 I/O(MMIO)"로 알려져 있음.
- 애플 제품(iPhone, Mac 등)의 주변 장치 MMIO 주소 범위는 DeviceTree라는 특수 파일 형식에 저장됨.
- 공격에 사용된 대부분의 MMIO는 DeviceTree에 정의된 어떠한 MMIO 범위에도 속하지 않음.
- 공격자가 펌웨어에서 사용하지 않는 MMIO를 어떻게 알아냈는지, 어떤 주변 장치가 이 MMIO 주소에 속하는지는 불명확함.
- 이 MMIO 레지스터들은 GPU 코프로세서에 속하는 것으로 확인됨.
- 공격자들은 이 MMIO 레지스터들을 사용하여 Page Protection Layer(PPL)를 우회하고, 페이지 테이블 항목을 패치하는 데 사용함.
- 해시 계산 방법은 공격에 사용된 하드웨어 기능이 데이터를 요청된 위치에 직접 메모리 액세스(DMA) 작업을 수행하도록 함.
GN⁺의 의견
- 이 연구는 아이폰을 대상으로 한 매우 정교한 공격 체인을 밝혀냄. 이는 보안 연구자들에게 매우 중요한 발견이며, 애플 제품의 보안을 강화하는 데 기여할 수 있음.
- 공격자들이 펌웨어에서 사용되지 않는 하드웨어 기능을 어떻게 알아냈는지는 여전히 미스터리로 남아 있음. 이는 하드웨어 보안 연구의 중요성을 강조함.
- 이 글은 소프트웨어 및 하드웨어 보안에 관심 있는 사람들에게 매우 흥미로운 내용을 제공함. 고도로 복잡한 공격 방법과 이를 분석하는 과정은 보안 연구의 깊이와 필요성을 보여줌.
Hacker News 의견
-
MMIO 남용에 대한 놀라운 점
- 공격자들이 매우 뛰어난 연구 능력을 가지고 있거나, 더 가능성이 높게는 애플을 해킹하여 내부 하드웨어 문서를 획득했을 것임.
- 애플은 해당 기능이 위험하다는 것을 알고 있었으며, 이를 숨기고 디지털 서명 기능으로 추가 보호했음.
- 실리콘 분해와 역공학 없이는 이 기능을 찾는 것이 불가능하므로, 개발자를 해킹하여 내부 문서를 훔칠 가능성이 있음.
- 사파리를 통해 다른 취약점 체인을 사용하여 재해킹하는 방식은 내부적으로 매우 분리된 대규모 조직을 시사함.
- 연구원들이 러시아인이라는 점을 고려할 때, 이는 NSA나 GCHQ의 작업일 가능성이 높음.
- 맬웨어는 광고 추적을 활성화할 수 있으며, 보안 연구자들이 자주 사용하는 클라우드 iPhone 서비스 호스팅을 감지할 수 있음.
- iOS/macOS 맬웨어 플랫폼은 10년 이상 개발되어 왔으며, 이미지 바이트를 업로드하지 않고 기기에서 사진의 객체 인식과 OCR을 위해 ML을 사용함.
- 보안을 통한 은폐가 효과가 없다는 주장에는 동의하지 않음. 이 플랫폼은 10년 동안 알려지지 않고 사용되어 왔음.
-
Steve Weis의 트위터 요약
- iMessage 취약점은 놀라운데, 90년대부터 존재하는 TrueType 취약점, 2개의 커널 취약점, 브라우저 취약점, 그리고 출시된 소프트웨어에서 사용되지 않은 문서화되지 않은 하드웨어 기능이 포함됨.
-
Coresight에 대한 설명
- Coresight는 백도어가 아니라 모든 ARM CPU의 디버그 기능임.
- 애플의 메모리 보호 기능과 함께 작동하기 위해 필요한 Coresight의 확장으로 보임.
- 공개 문서가 없음에도 수천 명의 애플 엔지니어가 이를 활용할 수 있는 수정된 gdb나 다른 도구에 접근할 수 있을 것임.
-
MMIO 레지스터 발견 가능성에 대한 추측
- 무작위로 모든 레지스터 주소를 탐색하여 MMIO 레지스터를 발견할 수 있었을 가능성에 대한 질문.
- 타이밍 차이만으로 유효한 주소임을 알 수 있었을 것이며, 20비트 해시로서 해시도 무차별 대입으로 풀 수 있었을 것임.
-
칩 디버깅 기능에서 데이터 해시 사용 여부에 대한 의문
- 생산에서 비활성화되어야 하는 디버깅 기능에서 해시 사용의 목적에 대한 의문.
- 전자 엔지니어가 아니지만, 디버깅 기능은 간단하고 빠르게 작동하여 간섭을 최소화하는 것이 최선임.
- 공급망 공격자가 모든 애플 칩에 이를 심을 수 있었을 가능성은 매우 낮음.
-
해시 알고리즘의 특징에 대한 관찰
- 모든 데이터가 0일 때 해시 값이 0이고, 단일 비트에 대해서는 sbox 테이블에서 단일 값을 가짐.
- 이러한 해시 알고리즘은 내부 문서 없이도 역공학이 가능했을 수 있음.
-
공격자의 노력에 대한 감탄
- 이러한 공격자들이 자신들의 작업에 대해 인정받지 못하는 것에 대한 불만을 느낄지에 대한 궁금증.
-
공격자가 이용한 기능에 대한 설명
- 공격자들은 하드웨어 기반 메모리 보호를 우회하여 특정 물리적 주소에 데이터를 쓸 수 있음.
- 펌웨어에서 사용되지 않는 칩의 알려지지 않은 하드웨어 레지스터에 데이터, 목적지 주소, 데이터 해시를 쓰는 방식임.
-
새로 발견된 취약점의 중요성
- 새로 발견된 취약점을 얻는 것보다 자신의 취약점이 타협될 수 있는지 아는 것이 더 중요함.
- 반정보 작전을 방지할 수 있음.