iPhone을 벽돌로 만들 수 있는 한 줄의 코드

15 hours ago 4

  • 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 NotificationsCoreOS 계층의 일부로, 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에서 모든 문제가 해결됨

Read Entire Article