iMessage Media Parser Zero-Click โ†’ CoreAudio RCE โ†’ PAC/RPAC โ†’ Kernel โ†’ CryptoTokenKit Abuse

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

์ด ํŽ˜์ด์ง€๋Š” iOS์˜ ํ˜„๋Œ€์ ์ธ zero-click ๊ณต๊ฒฉ ํ‘œ๋ฉด๊ณผ iMessage์˜ ์ž๋™ ๋ฏธ๋””์–ด ํŒŒ์‹ฑ์„ ์•…์šฉํ•ด CoreAudio๋ฅผ ์†์ƒ์‹œํ‚ค๊ณ  BlastDoor๋ฅผ ์šฐํšŒํ•˜๋ฉฐ RPAC ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด Pointer Authentication (PAC)์„ ๋ฌด๋ ฅํ™”ํ•˜๊ณ  Kernel๋กœ ๊ถŒํ•œ ์ƒ์Šนํ•œ ๋‹ค์Œ CryptoTokenKit์„ ์•…์šฉํ•ด ๋ฌด๋‹จ ํ‚ค ์‚ฌ์šฉ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ด€์ฐฐ๋œ ์ข…๋‹จ๊ฐ„ ์ต์Šคํ”Œ๋กœ์ž‡ ์ฒด์ธ์„ ์š”์•ฝํ•œ๋‹ค.

๊ฒฝ๊ณ : ์ด๋Š” ์ˆ˜๋น„์ˆ˜, ์—ฐ๊ตฌ์ž ๋ฐ ๋ ˆ๋“œํŒ€์ด ๊ธฐ์ˆ ์„ ์ดํ•ดํ•˜๋„๋ก ๋•๊ธฐ ์œ„ํ•œ ๊ต์œก์šฉ ์š”์•ฝ์ด๋‹ค. ๊ณต๊ฒฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ๋ผ.

์ „์ฒด ํ๋ฆ„

  • Delivery vector: a malicious audio attachment (e.g., .amr / MP4 AAC) sent via iMessage/SMS.
  • Auto-ingestion: iOS๊ฐ€ ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ ์—†์ด ๋ฏธ๋””์–ด๋ฅผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฐ ๋ณ€ํ™˜์„ ์œ„ํ•ด ์ž๋™ ํŒŒ์‹ฑํ•œ๋‹ค.
  • Parser bug: malformed structures๊ฐ€ CoreAudioโ€™s AudioConverterService๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํž™ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†์ƒ์‹œํ‚จ๋‹ค.
  • Code exec in media context: ๋ฏธ๋””์–ด ํŒŒ์‹ฑ ํ”„๋กœ์„ธ์Šค ๋‚ด๋ถ€์—์„œ RCE๊ฐ€ ๋ฐœ์ƒ; ํŠน์ • ๊ฒฝ๋กœ(์˜ˆ: โ€œknown senderโ€ framing path)์—์„œ BlastDoor ๊ฒฉ๋ฆฌ๋ฅผ ์šฐํšŒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด๊ณ ๋จ.
  • PAC/RPAC bypass: ์ž„์˜ R/W๋ฅผ ํš๋“ํ•˜๋ฉด RPAC ๊ฒฝ๋กœ์—์„œ์˜ PAC ์šฐํšŒ๋กœ arm64e PAC ํ•˜์—์„œ ์•ˆ์ •์ ์ธ ์ œ์–ด ํ๋ฆ„์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Kernel escalation: ์ฒด์ธ์€ userland exec์„ kernel exec์œผ๋กœ ์ „ํ™˜ํ•œ๋‹ค(์˜ˆ: ๋กœ๊ทธ์— ๋ณด์ด๋Š” wireless/AppleBCMWLAN ์ฝ”๋“œ ๊ฒฝ๋กœ ๋ฐ AMPDU ์ฒ˜๋ฆฌ ๊ฒฝ๋กœ ๋“ฑ).
  • Post-exploitation: Kernel ๊ถŒํ•œ์„ ํš๋“ํ•˜๋ฉด CryptoTokenKit์„ ์•…์šฉํ•ด Secure Enclaveโ€“backed ํ‚ค๋กœ ์„œ๋ช… ์ˆ˜ํ–‰, ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ(Keychain contexts) ์ฝ๊ธฐ, ๋ฉ”์‹œ์ง€/2FA ๊ฐ€๋กœ์ฑ„๊ธฐ, ์‚ฌ์šฉ์ž ํ”„๋กฌํ”„ํŠธ ์—†์ด ๋™์ž‘์„ ์€๋ฐ€ํžˆ ์Šน์ธ, ๋งˆ์ดํฌ/์นด๋ฉ”๋ผ/GPS์˜ ์Šคํ…”์Šค ๊ฐ์‹œ ํ™œ์„ฑํ™” ๋“ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

iMessage/BlastDoor ๊ณต๊ฒฉ ํ‘œ๋ฉด ๋ฉ”๋ชจ

BlastDoor๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฉ”์‹œ์ง€ ์ฝ˜ํ…์ธ ๋ฅผ ํŒŒ์‹ฑํ•˜๋„๋ก ์„ค๊ณ„๋œ ๊ฐ•ํ™”๋œ ์„œ๋น„์Šค์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ด€์ฐฐ๋œ ๋กœ๊ทธ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ โ€œknown senderโ€๋กœ ํ”„๋ ˆ์ด๋ฐ๋  ๋•Œ์™€ ์ถ”๊ฐ€ ํ•„ํ„ฐ(e.g., Blackhole)๊ฐ€ ์™„ํ™”๋  ๋•Œ ๋ณดํ˜ธ๊ฐ€ ์šฐํšŒ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ์‹œ์‚ฌํ•œ๋‹ค:

IDSDaemon    BlastDoor: Disabled for framing messages
SpamFilter   Blackhole disabled; user has disabled filtering unknown senders.

์š”์•ฝ:

  • ์ž๋™ ํŒŒ์‹ฑ์€ ์—ฌ์ „ํžˆ ์›๊ฒฉ zero-click ๊ณต๊ฒฉ ํ‘œ๋ฉด์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ์ •์ฑ…/์ปจํ…์ŠคํŠธ ๊ฒฐ์ •(์•Œ๋ ค์ง„ ๋ฐœ์‹ ์ž, ํ•„ํ„ฐ๋ง ์ƒํƒœ)์€ ์‹ค์ œ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์— ์‹ค์งˆ์ ์ธ ๋ณ€ํ™”๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CoreAudio: AudioConverterService ํž™ ์†์ƒ (userland RCE)

์˜ํ–ฅ๋ฐ›๋Š” ๊ตฌ์„ฑ ์š”์†Œ:

  • CoreAudio โ†’ AudioConverterService โ†’ AAC/AMR/MP4 ํŒŒ์‹ฑ ๋ฐ ๋ณ€ํ™˜ ํ๋ฆ„

๊ด€์ฐฐ๋œ ํŒŒ์„œ ์ ‘์  (๋กœ๊ทธ):

AudioConverterService    ACMP4AACBaseDecoder.cpp: inMagicCookie=0x0, inMagicCookieByteSize=39

Technique summary:

  • ์ž˜๋ชป๋œ container/codec metadata(e.g., invalid/short/NULL magic cookie)๊ฐ€ decode setup ๋„์ค‘ ๋ฉ”๋ชจ๋ฆฌ ์†์ƒ์„ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ํƒญ ์—†์ด iMessage media conversion path์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.
  • media parsing ํ”„๋กœ์„ธ์Šค์—์„œ code execution์„ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. write-up์€ ๊ด€์ฐฐ๋œ ์ „๋‹ฌ ๊ฒฝ๋กœ์—์„œ ์ด๊ฒƒ์ด BlastDoor๋ฅผ ํƒˆ์ถœํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋ฉฐ, ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Practical tips:

  • Fuzz AAC/AMR magic cookie์™€ MP4 codec atoms์„ AudioConverterService conversions ๋Œ€์ƒ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜์„ธ์š”.
  • decoder initialization ์ฃผ๋ณ€์˜ heap overflows/underflows, OOB reads/writes, ๋ฐ size/length confusion์— ์ง‘์ค‘ํ•˜์„ธ์š”.

PAC bypass via RPAC path (CVE-2025-31201)

arm64e Pointer Authentication (PAC)์€ return addresses ๋ฐ function pointers์˜ ํƒˆ์ทจ๋ฅผ ๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ฒด์ธ์—์„œ๋Š” arbitrary read/write๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„ ์ดํ›„ RPAC path๋ฅผ ์‚ฌ์šฉํ•ด PAC๋ฅผ ๋ฌด๋ ฅํ™”ํ–ˆ๋‹ค๊ณ  ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

Key idea:

  • arbitrary R/W๋กœ ๊ณต๊ฒฉ์ž๋Š” ์œ ํšจํ•œ re-signed pointers๋ฅผ ์กฐ์ž‘ํ•˜๊ฑฐ๋‚˜ PAC-tolerant ๊ฒฝ๋กœ๋กœ ์‹คํ–‰์„ ํ”ผ๋ฒ—ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅธ๋ฐ” โ€œRPAC pathโ€๋Š” PAC ์ œ์•ฝ ํ•˜์—์„œ ์ œ์–ด ํ๋ฆ„์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ userland RCE๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” kernel exploit ์„ค์ •์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Notes for researchers:

  • KASLR์„ ๋ฌด๋ ฅํ™”ํ•˜๊ณ  PAC ํ•˜์—์„œ๋„ ROP/JOP ์ฒด์ธ์„ ์•ˆ์ •ํ™”ํ•˜๊ธฐ ์œ„ํ•ด info leak๋ฅผ ์ˆ˜์ง‘ํ•˜์„ธ์š”.
  • controllable ํ•œ ๋ฐฉ์‹์œผ๋กœ PAC๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ธ์ฆํ•˜๋Š” callsites๋ฅผ ํ‘œ์ ์œผ๋กœ ์‚ผ์œผ์„ธ์š”(e.g., attacker-controlled ๊ฐ’์œผ๋กœ ์ƒ์„ฑ๋œ signatures, ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ context keys, ๋˜๋Š” pointers๋ฅผ re-signํ•˜๋Š” gadget sequences).
  • SoC/OS์— ๋”ฐ๋ฅธ Apple์˜ hardening ์ฐจ์ด๋ฅผ ์˜ˆ์ƒํ•˜์„ธ์š”; ์‹ ๋ขฐ์„ฑ์€ leak, entropy, ๊ทธ๋ฆฌ๊ณ  ๊ฐ•๋ ฅํ•œ primitives์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

Kernel escalation: wireless/AMPDU path example

๊ด€์ฐฐ๋œ ์ฒด์ธ์—์„œ, memory corruption๊ณผ PAC bypass primitive๋กœ userland์— ์ง„์ž…ํ•œ ์ดํ›„ malformed AMPDU ์ฒ˜๋ฆฌ ํ•˜์˜ Wiโ€‘Fi stack(AppleBCMWLAN) ์ฝ”๋“œ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด kernel ์ œ์–ด๊ฐ€ ๋‹ฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ ๋กœ๊ทธ:

IO80211ControllerMonitor::setAMPDUstat unhandled kAMPDUStat_ type 14
IO80211ControllerMonitor::setAMPDUstat unhandled kAMPDUStat_ type 13

์ผ๋ฐ˜ ๊ธฐ๋ฒ•:

  • userland primitives๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ kernel R/W ๋˜๋Š” controlled call paths๋ฅผ ๊ตฌ์ถ•.
  • ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ kernel surfaces (IOKit, networking/AMPDU, media shared memory, Mach interfaces)์„ ์•…์šฉํ•˜์—ฌ kernel PC control ๋˜๋Š” arbitrary memory๋ฅผ ํš๋“.
  • read/write primitives๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ PPL/SPTM ์ œ์•ฝ์„ ๋ฌด๋ ฅํ™”ํ•˜์—ฌ ์•ˆ์ •ํ™”.

Post-exploitation: CryptoTokenKit and identity/signing abuse

์ปค๋„์ด ์†์ƒ๋˜๋ฉด identityservicesd์™€ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์žฅํ•˜์—ฌ CryptoTokenKit์„ ํ†ตํ•ด privileged cryptographic operations๋ฅผ ์‚ฌ์šฉ์ž ํ”„๋กฌํ”„ํŠธ ์—†์ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์‹œ ๋กœ๊ทธ:

CryptoTokenKit    operation:2 algo:algid:sign:ECDSA:digest-X962:SHA256
CryptoTokenKit    <sepk:p256(d) kid=9a86778f7163e305> parsed for identityservicesd

์˜ํ–ฅ:

  • Secure Enclaveโ€“backed ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ํ—ˆ๊ฐ€๋˜์ง€ ์•Š์€ ์„œ๋ช…(tokens, messages, payments)์„ ์ˆ˜ํ–‰ํ•˜์—ฌ, ํ‚ค๊ฐ€ ๋‚ด๋ณด๋‚ด์ง€ ์•Š๋”๋ผ๋„ ์‹ ๋ขฐ ๋ชจ๋ธ์„ ํŒŒ๊ดดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 2FA ์ฝ”๋“œ/๋ฉ”์‹œ์ง€๋ฅผ ์€๋ฐ€ํžˆ ๊ฐ€๋กœ์ฑ„๊ณ , ๊ฒฐ์ œ/์†ก๊ธˆ์„ ์Šน์ธํ•˜๋ฉฐ, ์Šคํ…”์Šค ๋งˆ์ดํฌ/์นด๋ฉ”๋ผ/GPS๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ์–ด ๊ด€์ :

  • ์ปค๋„ ์ดํ›„ ๋ฌด๊ฒฐ์„ฑ ์†์ƒ์€ ์น˜๋ช…์ ์œผ๋กœ ๊ฐ„์ฃผ: CTK ์†Œ๋น„์ž์— ๋Œ€ํ•ด ๋Ÿฐํƒ€์ž„ attestation์„ ๊ฐ•์ œํ•˜๊ณ , ambient authority๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ฉฐ, ์‚ฌ์šฉ ์‹œ์ ์— entitlements๋ฅผ ๊ฒ€์ฆํ•˜์‹ญ์‹œ์˜ค.

์žฌํ˜„ ๋ฐ ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ํžŒํŠธ (์‹คํ—˜์‹ค ์ „์šฉ)

  • Delivery: iMessage/SMS๋ฅผ ํ†ตํ•ด ์กฐ์ž‘๋œ AMR/MP4-AAC ์˜ค๋””์˜ค๋ฅผ ๋Œ€์ƒ ๊ธฐ๊ธฐ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • ํŒŒ์‹ฑ ๋ฐ ๋ฌด์„  ์Šคํƒ ๋ฐ˜์‘ ์ฃผ์œ„์˜ ๊ด€๋ จ ๋กœ๊ทธ ๋ผ์ธ์„ ํ†ตํ•ด ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ๋ฅผ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค.
  • ์žฅ์น˜๋Š” ์ตœ์‹  ํŒจ์น˜ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•˜๊ณ , ๊ฒฉ๋ฆฌ๋œ ์‹คํ—˜์‹ค ํ™˜๊ฒฝ์—์„œ๋งŒ ํ…Œ์ŠคํŠธํ•˜์‹ญ์‹œ์˜ค.

์™„ํ™” ๋ฐ ํ•˜๋“œ๋‹ ์•„์ด๋””์–ด

  • Patch level: iOS 18.4.1์ด ์ด ์ฒด์ธ์„ ์ˆ˜์ •ํ•œ ๊ฒƒ์œผ๋กœ ๋ณด๊ณ ๋˜์—ˆ์œผ๋‹ˆ ์žฅ์น˜๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค.
  • Parser hardening: codec cookies/atoms ๋ฐ ๊ธธ์ด์— ๋Œ€ํ•œ ์—„๊ฒฉํ•œ ๊ฒ€์ฆ; ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ(bounding) ํฌํ•จ์˜ ๋ฐฉ์–ด์  ๋””์ฝ”๋”ฉ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ˜„ํ•˜์‹ญ์‹œ์˜ค.
  • iMessage isolation: ๋ฏธ๋””์–ด ํŒŒ์‹ฑ์— ๋Œ€ํ•ด โ€œknown senderโ€ ์ปจํ…์ŠคํŠธ์—์„œ BlastDoor/Blackhole ์™„ํ™”๋ฅผ ํ”ผํ•˜์‹ญ์‹œ์˜ค.
  • PAC hardening: PAC-gadget ๊ฐ€์šฉ์„ฑ์„ ์ค„์ด๊ณ , ์„œ๋ช…์ด ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ์ปจํ…์ŠคํŠธ์— ๋ฐ”์ธ๋”ฉ๋˜๋„๋ก ํ•˜๋ฉฐ, PAC-ํ—ˆ์šฉ ์šฐํšŒ ๊ฐ€๋Šฅ ํŒจํ„ด์„ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค.
  • CryptoTokenKit: ํ‚ค ๋ฐ”์ธ๋”ฉ ์—ฐ์‚ฐ์— ๋Œ€ํ•ด post-kernel attestation๊ณผ ํ˜ธ์ถœ ์‹œ์ ์˜ ๊ฐ•ํ•œ entitlements๋ฅผ ์š”๊ตฌํ•˜์‹ญ์‹œ์˜ค.
  • Kernel surfaces: ๋ฌด์„  AMPDU/status ์ฒ˜๋ฆฌ ๋ถ€์œ„๋ฅผ ๊ฐ•ํ™”ํ•˜๊ณ , ํƒˆ์ทจ ํ›„ userland์—์„œ ๊ณต๊ฒฉ์ž ์ œ์–ด ์ž…๋ ฅ์„ ์ตœ์†Œํ™”ํ•˜์‹ญ์‹œ์˜ค.

์˜ํ–ฅ ๋ฐ›๋Š” ๋ฒ„์ „ (๋ณด๊ณ ๋œ ๋ฐ”)

  • iOS 18.x, iOS 18.4.1 ์ด์ „ (2025-04-16).
  • Primary: CoreAudio โ†’ AudioConverterService (iMessage/SMS๋ฅผ ํ†ตํ•œ ๋ฏธ๋””์–ด ์ž๋™ ํŒŒ์‹ฑ ๊ฒฝ๋กœ).
  • Chained: PAC/RPAC ๊ฒฝ๋กœ ๋ฐ AppleBCMWLAN AMPDU ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•œ ์ปค๋„ ๊ถŒํ•œ ์ƒ์Šน.

References

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ