-
iOS의 취약점 발견: iOS의 취약점을 발견하여 간단한 코드로 iPhone을 벽돌로 만들 수 있는 방법을 설명함
-
Darwin Notifications: Darwin Notifications는 Apple 운영 체제에서 프로세스 간 간단한 메시지 교환을 위한 저수준 메커니즘임
-
취약점의 본질: Darwin Notifications는 수신 및 전송에 특별한 권한이 필요하지 않으며, 발신자를 검증하는 메커니즘이 없음
-
Proof of Concept: "EvilNotify"라는 테스트 앱을 통해 iOS 시스템 전체에 영향을 미칠 수 있는 다양한 기능을 시연함
-
완화 조치: Apple은 민감한 Darwin Notifications 전송에 제한된 권한을 요구하는 방식으로 취약점을 완화함
iOS의 취약점 발견
- iOS의 취약점을 발견하여 간단한 코드로 iPhone을 벽돌로 만들 수 있는 방법을 설명함
- 이 취약점은 간단한 구현으로 인해 특히 흥미로웠음
- Apple의 운영 체제에서 여전히 사용되는 레거시 공개 API를 활용함
Darwin Notifications
-
Darwin Notifications는 CoreOS 계층의 일부로, Apple 운영 체제에서 프로세스 간 간단한 메시지 교환을 위한 저수준 메커니즘임
- 각 알림은 UInt64로 표시되는 state를 가질 수 있으며, 일반적으로 0 또는 1로 true 또는 false를 나타냄
-
notify_post 함수는 이벤트를 다른 프로세스에 알리기 위해 사용됨
취약점의 본질
- Apple 운영 체제의 모든 프로세스는 Darwin Notifications를 수신할 수 있으며, 특별한 권한이 필요하지 않음
- 데이터 전송량이 제한적이기 때문에 민감한 데이터 유출 위험은 크지 않음
- 발신자를 검증하는 메커니즘이 없어, 잠재적인 서비스 거부 공격에 악용될 수 있음
Proof of Concept: EvilNotify
- "EvilNotify"라는 테스트 앱을 통해 iOS 시스템 전체에 영향을 미칠 수 있는 다양한 기능을 시연함
- 시스템 전반에 걸쳐 제스처를 차단하거나, 화면 잠금을 강제하거나, "복원 진행 중" 모드를 트리거할 수 있음
- 이러한 기능은 사용자가 앱을 강제 종료하더라도 시스템 전체에 영향을 미침
"Restore in Progress"
- "복원 진행 중" 모드는 단일 코드 라인으로 트리거될 수 있으며, 이는 장치를 재부팅하도록 강제함
-
notify_post("com.apple.MobileSync.BackupAgent.RestoreStarted") 코드 한 줄로 장치가 "복원 진행 중" 모드에 들어가게 됨
- 이 모드는 장치가 실제로 복원되지 않기 때문에 실패하며, 유일한 해결책은 "재시작" 버튼을 누르는 것임
Denial of Service: VeryEvilNotify
- "VeryEvilNotify"라는 앱을 통해 장치를 반복적으로 재부팅하여 서비스 거부 상태로 만들 수 있음
- 위젯 확장을 사용하여 시스템이 앱을 백그라운드에서 주기적으로 실행하도록 함
- 위젯 확장은 시스템이 백그라운드에서 주기적으로 실행되며, notify_post 함수를 호출하여 "복원 진행 중" 모드를 반복적으로 트리거함
Timeline
- 2024년 6월 26일: Apple에 초기 보고서 제출
- 2024년 9월 27일: Apple로부터 완화 조치가 진행 중이라는 메시지 수신
- 2025년 1월 28일: 문제 해결 및 보상 자격 확인
- 2025년 3월 11일: 버그가 CVE-2025-24091로 할당되고 iOS/iPadOS 18.3에서 해결됨
- 버그 바운티 금액: 미화 17,500달러
Mitigation
- Apple은 민감한 Darwin Notifications 전송에 제한된 권한을 요구하는 방식으로 취약점을 완화함
-
com.apple.private.restrict-post 접두사가 있는 알림은 발신 프로세스가 특정 권한을 가져야만 전송할 수 있음
- iOS 18.2 베타 2부터 이러한 메커니즘이 도입되었으며, iOS 18.3에서 모든 문제가 해결됨