
AppleMediaServices의 제로데이: Bag 가져오기 실패로 Mescal/Absinthe 서명이 비활성화됩니다. Apple 서비스에 대한 요청이 서명되지 않은 채 진행되어 다운그레이드, 재생(replay), 우회 위험에 노출됩니다. 분석, 로그 증거 및 PoC 공격 로직을 포함합니다.
요약
이 문제는 실제 제로데이 취약점으로, 특정 버전의 회귀 버그라기보다는 AppleMediaServices.framework의 구조적 설계 결함을 반영합니다.
Apple의 AppleMediaServices 프레임워크에 있는 심각한 fail-open 결함으로 인해 원격 구성 파일("Bag")을 로드하지 못하면 요청 서명이 자동으로 비활성화될 수 있습니다. 이는 iOS, macOS, tvOS 및 watchOS에 영향을 미칩니다.
DNS 조작, 시간 초과 또는 네트워크 간섭으로 인해 Bag을 가져올 수 없는 경우 AppleMediaServices 데몬은 Mescal/Absinthe 서명을 비활성화하고 서명되지 않은 요청을 Apple 서버로 전송합니다. 이러한 요청에는 무결성 보호 기능이 없어 사용자가 다운그레이드 및 재생 공격에 노출됩니다.
로그 증거:
발견
영향을 받는 시스템
AppleMediaServices.framework를 사용하는 모든 Apple 플랫폼이 영향을 받습니다.
영향을 받는 데몬은 다음과 같습니다:
취약점 개요
Apple 기기는 다음 엔드포인트에서 동적 구성 Bag을 가져옵니다:
https://bag.itunes.apple.com/bag.xml?deviceClass=...&format=json
이 구성에는 발신 요청에 서명해야 하는지 여부를 결정하는 useAMSMescal, mescalURL, absintheURL 같은 플래그가 포함됩니다.
Bag을 로드하지 못하면 AppleMediaServices는 실패를 기록하고 서명 로직을 비활성화한 뒤 서명되지 않은 요청을 전송합니다. 서명 검증, 무결성 검사 또는 강제 폴백 메커니즘이 없습니다. Bag은 인증되지 않고 서명되지 않았기 때문에 보안 상태가 네트워크 간섭에 취약합니다.
개념 증명
전제 조건:
악용 절차:
DNS NXDOMAIN 응답, TCP 핸드셰이크 중단 또는 지연된 응답을 사용하여 Bag 엔드포인트에 대한 접근을 차단하거나 변조합니다.
시스템 로그에서 Bag 로드 실패와 Mescal/Absinthe 서명 건너뜀이 표시되는지 확인합니다.
시스템 구성 요소(예: App Store, Music 앱)가 요청을 전송하도록 트리거합니다. 네트워크 트래픽을 모니터링하고 다음 서명 헤더가 없는지 확인합니다:
결과:
서명되지 않은 트래픽이 검증 없이 Apple 엔드포인트로 전송됩니다. 이로 인해 변조, 재생 및 기타 무결성 위험이 발생할 수 있습니다.
위협 모델
bag.itunes.apple.com 접근을 차단하는 DNS 중독 또는 변조AMSBagManager의 Frida 또는 탈옥 변조권장 수정 조치
서명된 구성 CMS, JWT 또는 HMAC을 사용하여 Bag에 서명하고 클라이언트 측에서 서명을 검증합니다.
안전 실패 기본값 AppleMediaServices는 Bag을 가져오거나 검증할 수 없을 때 서명 종속 트래픽을 차단해야 합니다.
서버 측 강제 Apple의 백엔드 API는 Mescal 또는 Absinthe 보호가 필요한 서명되지 않은 요청을 거부해야 합니다.
검증된 캐싱 Bag 콘텐츠는 무결성 검사를 통과하고 정의된 만료 제약 조건 내에 있을 때만 캐시되어야 합니다.
심각도 근거
Apple 기기는 App Store부터 미디어 재생까지 신뢰를 위해 서명된 요청에 의존합니다. 구성 파일을 로드할 수 없을 때마다 이러한 서명이 사라지면 Wi-Fi 네트워크의 공격자가 사용자가 모르는 사이에 무결성을 제거하고 트래픽을 주입하거나 재생할 수 있습니다. 단 한 번의 Bag 요청 실패로 Apple의 보안 보장이 fail-open 상태가 됩니다.