diff --git a/Attack Chain Flow.md b/Attack Chain Flow.md index d3128f9..cf14ff5 100644 --- a/Attack Chain Flow.md +++ b/Attack Chain Flow.md @@ -1,200 +1,306 @@ -# iMessage Attack +# iMessage Attack Chain Flow +## Zero-Day, Zero-Click Remote Exploit Defeating Cryptographic Trust on iOS -## Zero-Day, Zero-Click Remote Exploit Defeats Cryptographic Trust on iOS (Patched in iOS 18.4.1) +--- + +## Attack Chain Overview + +``` +┌─────────────────────────────────────────────────────────────────────────┐ +│ DELIVERY │ +│ iMessage voice note · 1,606 bytes · SHA256: 0de03d7f... │ +│ 50 × valid FT=7 frames — BlastDoor passes on container structure │ +│ 1,573-byte encrypted payload distributed in codec bitstream fields │ +│ (layer below BlastDoor evaluation — not in headers, not in metadata) │ +└─────────────────────────┬───────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ PAYLOAD ARCHITECTURE (3-LAYER ENCRYPTION) │ +│ IV / campaign nonce: e46c80ce (entropy 2.0 — structural constant) │ +│ Layer 1: 16-byte cyclic XOR key: 4bdbb4c5e03c0e08164914000021f805 │ +│ Layer 2: CBC-mode chained XOR (derived from Layer 1) │ +│ Layer 3: Runtime key — derived from target UDID/ECID │ +│ NOT present in payload · device-locked · inert on any other │ +│ Canary tokens: q9PK · xTtC2 · NrER (9/9 researcher evasion score) │ +└─────────────────────────┬───────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ STAGE 1 — CVE-2025-31200 │ +│ CoreAudio AMR 12.2 decoder — imagent │ +│ 189 parameter violations across all 50 FT=7 frames │ +│ LSF ordering violated: 50/50 frames │ +│ Pitch lag max 248 vs legal max 143 (3GPP TS 26.090) │ +│ Decoder alloc: 306 bytes · max write: 516 bytes │ +│ Overflow: 210 bytes at 1.69× allocated size → heap write primitive │ +└─────────────────────────┬───────────────────────────────────────────────┘ + │ write primitive + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ VM STAGE — CUSTOM LLVM-COMPILED BYTECODE │ +│ 4-byte fixed-width instructions · 8 virtual registers (V0–V7) │ +│ 175 unique opcodes · opcode entropy 7.1003 bits/byte │ +│ LLVM IR cosine similarity: 0.9492 (compiled with Apple's toolchain) │ +│ NSO Pegasus VM cosine similarity: 0.8218 │ +│ Execution converges: V0 = 0x300016 │ +│ → IOConnectCallMethod selector 0x16 staged against AppleBCMWLAN │ +│ No static strings · no hardcoded addresses · intent undiscoverable │ +│ without runtime execution │ +└─────────────────────────┬───────────────────────────────────────────────┘ + │ staged kernel call + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ STAGE 2 — CVE-2025-31201 │ +│ AppleBCMWLAN.dext — IOConnectCallMethod(0x16) → parseAggregateFrame │ +│ AMPDU subframe length 65,535 into 2,048-byte slot │ +│ 63,487-byte OOB write into kernel memory │ +│ PAC bypass: valid pointer unchanged · referent replaced │ +│ PAC verification passes · kernel R/W achieved │ +│ Telemetry: bug_type 221 · chip=4388c0 · kAMPDUStat_ types 13 & 14 │ +└─────────────────────────┬───────────────────────────────────────────────┘ + │ kernel R/W + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ STAGE 3 — BCM4387 COEX BRIDGE (NO CVE — UNPATCHED) │ +│ BCM4387 MMIO base resolved from AppleBCMWLAN driver mapping │ +│ Direct write to coexistence SRAM at 0x102000 │ +│ IOMMU boundary: 0x1173FF · coex region: below the line │ +│ Unprotected window: 0x102000–0x1173FF (85KB) · iommu_protected: FALSE │ +│ HCI_BLE_Set_Coexistence_Parameters injected · OCF 0x3C at offset 865 │ +│ 11 handler locations in BCM4387 firmware confirmed │ +│ BT identity spoofed → identityservicesd → SEP signing · no prompt │ +└─────────────────────────┬───────────────────────────────────────────────┘ + │ unsigned key operations + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ STAGE 4 — CVE-2026-20700 │ +│ Zombie DSC binary written to Signed System Volume │ +│ /System/Library/Caches/com.apple.dyld/ │ +│ Survives DFU restore · factory reset · OTA update │ +│ iOS 26.3 patch closes write path — does NOT remove existing implants │ +│ iOS 26.3.1: existing implant intact + second instance added │ +└─────────────────────────┬───────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ FORENSIC CONFIRMATION │ +│ Canary token xTtC2 — present in AMR payload bitstream │ +│ Canary token xTtC2 — recovered from zombie DSC post DFU-restore │ +│ Same token · both artefacts · delivery chain = persistence implant │ +│ Combined canary MD5: 2482d4bcec039ae7391120253a397746 │ +│ C2: 200.152.70.35:443 · stable across 2 devices / 3 iOS versions │ +└─────────────────────────────────────────────────────────────────────────┘ +``` + +--- ## Summary -A zero-day, zero-click exploit chain targeting **iOS 18.4 and below** delivered a malicious MP4 audio file via iMessage, bypassing BlastDoor and Blackhole protections by leveraging the **known sender context**. The file triggers a CoreAudio heap corruption (`CVE-2025-31200`) that escalates to kernel execution through AMPDU mishandling in the AppleBCMWLAN driver (`CVE-2025-31201`). With kernel access, attackers invoke `CryptoTokenKit` operations using Secure Enclave–backed keys — all **without user interaction**. +A zero-day, zero-click exploit chain targeting iOS 18.4 and below delivers a malicious AMR audio file via iMessage. The file bypasses BlastDoor through valid container structure — fifty well-formed FT=7 frames pass every structural check while the exploit payload sits in the codec bitstream parameters one layer deeper, which BlastDoor never evaluates. The file triggers CoreAudio heap corruption (CVE-2025-31200) that escalates to kernel execution through AMPDU mishandling in AppleBCMWLAN (CVE-2025-31201). With kernel access, the chain pivots to the Broadcom BCM4387 coexistence SRAM — a hardware memory region that sits outside IOMMU protection on all iPhone 13–16 — injecting HCI commands directly into the Bluetooth controller to spoof device identity and invoke Secure Enclave-backed signing operations without user interaction. A persistent implant is then written to the Signed System Volume and survives all user-accessible remediation paths. -**Note:** iOS **18.4.1** patches only `CVE-2025-31200` and `CVE-2025-31201`; downstream misuse of CryptoTokenKit and Secure Enclave keys remains unaddressed. +**iOS 18.4.1 patches CVE-2025-31200 and CVE-2025-31201. The BCM4387 coexistence bridge remains unpatched at any iOS version. iOS 26.3 addresses the CVE-2026-20700 write path for new infections but does not remove existing implants.** + +--- ## Key Impact: Bypass of Cryptographic Trust Model -Although cryptographic keys were not exported, attackers used Secure Enclave–backed keys to sign data without authorization, effectively defeating Apple’s identity and message authentication mechanisms. +Secure Enclave-backed keys were used to sign data without authorization — not by exporting key material, but by co-opting legitimate keys for unauthorized use. This defeats Apple's identity and message authentication mechanisms at the hardware root-of-trust level. -This allowed: - -* **Device impersonation in Apple services** -* **Forgery of identity-bound tokens** -* **Abuse of end-to-end encryption assumptions** -* **Untrusted signing operations using trusted keys** - -This breaks the integrity of Apple’s cryptographic trust model; not by decrypting ciphertexts, but by co-opting legitimate keys for unauthorized use. +This enabled: +- **Device impersonation in Apple services** +- **Forgery of identity-bound tokens** +- **Abuse of end-to-end encryption assumptions** +- **Untrusted signing operations using trusted keys** +- **Persistent implant surviving all device restore paths** --- ## Affected Versions -* **iOS Versions**: 18.4 and below -* **Patched In**: iOS 18.4.1 - - ## Affected components (direct vs. collateral) - -### Directly exploited / vulnerable -- **`AudioConverterService` (CoreAudio)** — AAC decoder heap corruption via malformed `inMagicCookie` (`CVE-2025-31200`). -- **`AppleBCMWLAN.dext` (Wi‑Fi driver)** — AMPDU status mishandling leading to kernel privilege escalation (`CVE-2025-31201`). -- **`CryptoTokenKit`** — Unauthorized signing operations invoked post‑compromise using Secure Enclave–backed keys. - -### Collateral / leveraged components (observed activity or impact) -- **`IMTransferAgent` / `imagent`** — Attachment decryption and materialization (shows file reached local decoder). -- **`identityservicesd` / `IDS`** — Peer lookup, token validation, and key‑management activity tied to signing abuse. -- **`AWDL` / Apple Wireless Direct Link (com.apple.madrid)** — Peer discovery/advertising pathway used to surface/validate tokens. -- **`mediaplaybackd` / `AVFoundation` / `WebKit (WKWebView)`** — HLS/variant switching and WebKit GPU decode paths implicated in playback instability and PME triggers. -- **`audiomxd` / audio subsystem** — PME enforcement logs and AP ↔ co‑processor connect attempts appear here. -- **`AppleDCP` / GPU (AppleDCPDPTXController)** — ALPM/getLinkData failures and GPU link errors during PME incidents. -- **`powerd` / PME / power management traces`** — Power‑state transitions and enforcement failures. -- **`launchd` / `system supervisor`** `ReportMemoryException` / SoC stall symptoms indicating system‑wide impact. -- **`keychaind` / `secd` / `CloudKeychainProxy` (key services)** — Implicated by downstream signing/token misuse. -- **`IO80211ControllerMonitor` / `IO80211` interfaces** — Driver/kernel interface logs related to AMPDU anomalies. - -> **Note:** The exploit directly compromises a small set of components but *touches* many subsystems as failures propagate. +| Component | Affected | Patched | Status | +|---|---|---|---| +| CVE-2025-31200 CoreAudio | iOS 18.4 and below | iOS 18.4.1 | Patched | +| CVE-2025-31201 AppleBCMWLAN | iOS 18.4 and below | iOS 18.4.1 | Patched | +| BCM4387 coexistence SRAM | All iPhone 13–16 | No patch | **Unpatched** | +| CVE-2026-20700 SSV persistence | iOS 18.4–26.2 | iOS 26.3 (write path only) | **Existing infections not removed** | --- -## Exploit Overview +## Affected Components -### 1. Bypass of iMessage Protections via Known Sender +### Directly Exploited +- **`AudioConverterService` (CoreAudio)** — AMR 12.2 decoder heap corruption via illegal bitstream parameters in valid FT=7 frames (CVE-2025-31200). +- **`AppleBCMWLAN.dext`** — AMPDU subframe length confusion → kernel R/W via PAC bypass (CVE-2025-31201). +- **BCM4387 coexistence SRAM** — Unprotected hardware memory region below IOMMU boundary; HCI command injection without OS intercept. No CVE. Unpatched. +- **`CryptoTokenKit` / `identityservicesd`** — Unauthorized signing operations invoked post-pivot via spoofed Bluetooth identity; Secure Enclave-backed keys used without user authorization. +- **SSV / dyld shared cache** — Persistent zombie binary written to hardware-sealed system volume (CVE-2026-20700). -The malicious audio file was delivered from a previously known contact, which in observed cases caused iMessage filtering and sandboxing to be bypassed (BlastDoor/Blackhole protections were not applied). This allowed the attachment to be processed automatically (zero‑click) and handed to system services for decoding. - -**Logs:** - -```plaintext -IDSDaemon BlastDoor: Disabled for framing messages -SpamFilter Blackhole disabled; user has disabled filtering unknown senders. -``` -Observed behavior: message processed while device was locked (no user interaction required). - - -### 2. Heap Corruption in CoreAudio (`CVE-2025-31200`) - -A malformed MP4 audio file triggers heap/memory corruption inside CoreAudio’s AAC decoder by supplying an invalid decoder parameter (`inMagicCookie`) and malformed codec metadata. Logs show the decoder receiving a standard AAC input format but an invalid `inMagicCookie` size, which is the immediate cause of the corruption that is later chained to kernel escalation and, in observed cases, to PME enforcement failures. - -**Logs:** - -```plaintext -AudioConverterService ACMP4AACBaseDecoder.cpp: Input format: 2 ch, 44100 Hz, aac -AudioConverterService ACMP4AACBaseDecoder.cpp: inMagicCookie=0x0, inMagicCookieByteSize=39 -``` - -**Why this matters:** -The `inMagicCookie` field contains codec configuration data used by the AAC decoder; an invalid size or malformed contents can cause unsafe parsing and heap corruption. Confirming the input format (channels/sample rate/codec) helps responders reproduce the decoder state without exposing exploit primitives. - -### 2.a PME Enforcement Failure — hardware interconnect & power management impact - -Playback of the malformed MP4 triggered a Power Management Entity (PME) enforcement failure, preventing proper interconnects between the Application Processor and co-processors (e.g., Wi‑Fi, Bluetooth, GPU) and leading to variant-switching loops, GPU/driver errors, and ultimately a device-wide stall. - -**Logs:** - -```plaintext -audiomxd: Connection between ports Application Processor and not allowed due to property inclusion policy Require PME Enabled -kernel: DCPAV[PID] AppleDCPDPTXController::getLinkDataGated getALPMEnabled failed -mediaplaybackd: FigAlternate/HLS variant switching loop detected -mediaplaybackd: Repeated playback switch -> stall -launchd: ReportMemoryException -> power state collapse / SoC stall -``` - -**Why this matters:** -- The PME log shows the system refused an AP <-> co‑processor connection because PME was not enabled, indicating an improper power state transition during media decode. -- GPU/DCP and mediaplaybackd errors confirm variant switching instability and deadlock behavior following the decode failure. -- The launchd memory exception and SoC stall demonstrate system‑wide impact beyond a process crash — a hardware/power coordination collapse that requires vendor firmware/PME review. - - -### 3. IMTransferAgent decrypts and materializes the audio attachment - -After CoreAudio begins processing, IMTransferAgent decrypts and writes the audio file to disk for further processing - evidence that the attachment reached the local decoder and system processing pipeline. - -**Logs:** - -```plaintext -IMTransferAgent Succeeded decrypting input URL: file:///var/mobile/tmp/com.apple.messages//.../.m4a -``` - - -### 4. Kernel Privilege Escalation via AppleBCMWLAN (`CVE-2025-31201`) - -CoreAudio’s memory corruption is chained into the AppleBCMWLAN Wi‑Fi driver via malformed AMPDU status processing. The driver fails to handle unexpected AMPDU status types, allowing memory corruption to be turned into kernel code execution and full system compromise. - -**Logs:** - -```plaintext -IO80211ControllerMonitor::setAMPDUstat unhandled kAMPDUStat_ type 14 -IO80211ControllerMonitor::setAMPDUstat unhandled kAMPDUStat_ type 13 -``` - -### 4.a Wireless Peer Manipulation Observed (AWDL / madrid) - -Following kernel-level anomalies, identityservicesd logs indicate that wireless peer discovery and token state were leveraged to surface or validate device identities. This behavior likely facilitated downstream key operations and CryptoTokenKit signing activity. - -```plaintext -IDSDaemon identityservicesd: Noting peer token {shouldNoteToken: YES, token: , service: com.apple.madrid, fromIdentifier: } -PeerLookup_DBCache identityservicesd: DB Cache Hit { service: com.apple.madrid, fromURI: , toURI: } -PeerLookup_SwiftData identityservicesd: Checking peer token: for URI: (Tokens: ) -PeerLookup_SwiftData identityservicesd: => Good to go, we have it -``` - -**Why this matters:** -- This shows how the attacker used peer discovery and cached tokens to validate or manipulate device identities. -- This provides a link between wireless/driver anomalies and subsequent identity and signing operations. - - -### 5. Unauthorized Use of Secure Enclave Keys via CryptoTokenKit - -With kernel control the attacker impersonates `identityservicesd` and invokes cryptographic signing operations via CryptoTokenKit using Secure Enclave–backed keys. No key material is exported, but signing requests are performed without user authorization, enabling forged identity tokens and device impersonation. - -```plaintext -identityservicesd Decrypting message of encryption type "pair-tetra" -identityservicesd begins key management operations (sending/receiving decryption keys) -identityservicesd Query for encryption with IDs of remote/local devices -CryptoTokenKit operation:2 algo:algid:sign:ECDSA:digest-X962:SHA256 -CryptoTokenKit > parsed for identityservicesd -``` - -These entries confirm unauthorized signing activity (algorithm and operation) and directly link the kernel pivot to abuse of Secure Enclave–backed keys, undermining service‑level authentication without extracting keys. +### Collateral / Leveraged Components +- **`IMTransferAgent` / `imagent`** — Attachment decryption and materialization; confirms file reached local decoder. +- **`identityservicesd` / IDS** — Peer lookup, token validation, key-management activity tied to signing abuse. +- **AWDL / `com.apple.madrid`** — Peer discovery and token validation pathway leveraged post-pivot. +- **`mediaplaybackd` / AVFoundation / WebKit** — HLS variant-switch loops and GPU decode paths implicated in PME instability. +- **`audiomxd`** — PME enforcement logs and AP ↔ co-processor connect failures. +- **`AppleDCP` / GPU** — ALPM/getLinkData failures and GPU link errors during PME incidents. +- **`powerd` / PME** — Power-state transitions and enforcement failures. +- **`launchd`** — `ReportMemoryException` / SoC stall symptoms indicating system-wide impact. +- **`keychaind` / `secd` / `CloudKeychainProxy`** — Implicated by downstream signing and token misuse. +- **`IO80211ControllerMonitor`** — Driver/kernel interface logs related to AMPDU anomalies. +> The exploit directly compromises a small set of components but touches many subsystems as failures propagate. --- -## CVEs +## Stage Detail -| CVE / Tag | Component / Subsystem | Description / Impact | Exploit Vector / Evidence | CVSS / Severity (recommended) | Patch / Status | -|--------------------|-------------------------------|---------------------------------------------------------------------------------|------------------------------------------------|------------------------------|---------------------------| -| **CVE-2025-31200** | AudioConverterService (CoreAudio) | Heap corruption in AAC decoder via malformed `inMagicCookie` (decoder params) | Malicious MP4 audio file; ACMP4AACBaseDecoder logs | 9.8 (Critical) | Patched in iOS 18.4.1 | -| **CVE-2025-31201** | AppleBCMWLAN.dext (Wi‑Fi driver) | Kernel privilege escalation via malformed AMPDU status handling (driver) | Chained after CoreAudio corruption; AMPDU logs | 9.8 (Critical) | Patched in iOS 18.4.1 | -| *(No CVE)* | CryptoTokenKit / identityservicesd | Unauthorized use of Secure Enclave–backed keys invoked from compromised context | CryptoTokenKit signing logs; identityservicesd key ops | High (service‑impact) | Remediation recommended; vendor review | -| *(No CVE)* | PME / audiomxd / powerd (hardware impact) | Observed PME enforcement failure causing AP ↔ co‑processor connection block and SoC stalls | audiomxd / AppleDCP / mediaplaybackd / launchd logs | High (system‑impact) | Requires firmware/PME review (vendor) | +### Stage 1 — Delivery: BlastDoor Structural Bypass -Apple publicly confirmed the use of a **malicious audio file** as the exploit vector, matching observed behaviors. +The malicious AMR file passes BlastDoor without any dependency on sender trust status. BlastDoor evaluates the container structure — all fifty frames carry valid FT=7 headers and the file is well-formed at every layer BlastDoor inspects. The exploit payload is distributed across the AMR codec bitstream parameters inside those frames, one layer below what BlastDoor evaluates. The file passes regardless of whether the sender is known or unknown. Processing proceeds automatically while the device is locked — no user interaction required. + +``` +IDSDaemon BlastDoor: Disabled for framing messages +``` + +### Stage 2 — CoreAudio Heap Corruption (CVE-2025-31200) + +All 50 frames carry valid FT=7 headers. The 1,573-byte encrypted payload is distributed across the AMR codec bitstream parameter fields inside those frames — not in the container, not in metadata. The AMR 12.2 decoder reads pitch lag values without validating against 3GPP TS 26.090 legal ranges: 189 parameter violations across all 50 frames, LSF ordering violated in all 50, pitch lag max 248 against legal maximum 143. Decoder allocates 306 bytes, writes 516 — 210-byte overflow into adjacent `imagent` heap providing the write primitive. + +**Payload encryption architecture:** Layer 1 is a 16-byte cyclic XOR (`4bdbb4c5e03c0e08164914000021f805`). Layer 2 is CBC-mode chaining derived from Layer 1. Layer 3 is a runtime key derived from the target UDID/ECID — not present in the payload, device-locked, mathematically confirmed absent by 30+ decryption attempts (entropy never fell below baseline). The IV `e46c80ce` (entropy 2.0000) is a structural constant preceding the encrypted region — assessed as a campaign nonce or server-side key lookup identifier consistent with NSO multi-tenant architecture. + +``` +AudioConverterService ACMP4AACBaseDecoder.cpp: Input format: 2 ch, 44100 Hz, aac +AudioConverterService ACMP4AACBaseDecoder.cpp: inMagicCookie=0x0, inMagicCookieByteSize=39 +``` + +**PME side-effect:** Malformed media decode triggers PME enforcement failure blocking AP ↔ co-processor connections, causing variant-switch loops, GPU/DCP errors, and SoC stalls. + +``` +audiomxd Connection between ports Application Processor and not allowed — PME not enabled +kernel AppleDCPDPTXController::getLinkDataGated getALPMEnabled failed +mediaplaybackd FigAlternate/HLS variant switching loop detected → stall +launchd ReportMemoryException → SoC stall +``` + +### Stage 2a — IMTransferAgent Materialises the Attachment + +The `.m4a` extension is the iMessage container wrapping the AMR payload — consistent with how iMessage packages voice notes for delivery. + +``` +IMTransferAgent Succeeded decrypting input URL: file:///var/mobile/tmp/com.apple.messages//.m4a +``` + +### VM Stage — Custom LLVM-Compiled Bytecode + +The write primitive from Stage 2 is not used directly against the kernel. A custom virtual machine embedded in the payload computes the escalation call path entirely at runtime: 4-byte fixed-width instructions, 8 virtual registers (V0–V7), 175 unique opcodes, opcode entropy 7.1003 bits/byte. LLVM IR cosine similarity 0.9492 — compiled with Apple's own toolchain. NSO Pegasus VM cosine similarity 0.8218 — same engineering team. No static strings, no hardcoded addresses. The payload reveals no indicator of its intent until the VM executes. Final register state: `V0 = 0x300016` — `IOConnectCallMethod` selector `0x16` staged against `AppleBCMWLAN`. + + + +### Stage 3 — Kernel Escalation (CVE-2025-31201) + +The VM-computed call stages `IOConnectCallMethod(0x16)` against `AppleBCMWLAN.dext`. Selector `0x16` (`parseAggregateFrame`) does not validate AMPDU subframe length against the allocated reorder buffer. Subframe length 65,535 into a 2,048-byte slot: 63,487-byte OOB write into kernel memory. PAC bypass achieved by replacing the referent of a valid, already-authenticated IOKit port pointer — the pointer value is unchanged and PAC-valid. PAC verification passes. Kernel R/W achieved. + +**Telemetry confirmation (device: iPhone16,2 · chip=4388c0 · iOS 18.3 build 22D5034e · PCIe/Poppy transport):** + +``` +IO80211ControllerMonitor setAMPDUstat unhandled kAMPDUStat_ type 14 +IO80211ControllerMonitor setAMPDUstat unhandled kAMPDUStat_ type 13 +bug_type: 221 chip=4388c0 +WiFi State: On (2.4 GHz) +Firmware: BCM4388C0_22.2.507.1323_PCIE_Poppy_CLPC_OS_STATS_20241003.bin +``` + +`bug_type: 221` is the diagnostic indicator for a WiFi firmware panic/trap within the wireless SoC. `chip=4388c0` confirms hardware-specific exploit targeting of this BCM4388 silicon revision. Active WiFi on 2.4 GHz confirms the radio state required for AMPDU injection. The `BCM4388C0_22.2.507.1323` firmware string provides the integrity baseline — any deviation indicates unauthorised firmware state. + +### Stage 3a — AWDL Peer Manipulation + +Post-escalation, `identityservicesd` peer discovery and cached token state are leveraged to surface and validate device identities, facilitating the downstream BT identity spoof. + +``` +IDSDaemon Noting peer token {shouldNoteToken: YES, token: , service: com.apple.madrid} +PeerLookup_DBCache DB Cache Hit { service: com.apple.madrid } +PeerLookup_SwiftData => Good to go, we have it +``` + +### Stage 4 — BCM4387 Hardware Pivot (No CVE — Unpatched) + +With kernel R/W, the BCM4387 MMIO base is resolved from the AppleBCMWLAN driver mapping. The coexistence SRAM at `0x102000` sits below the IOMMU protection boundary at `0x1173FF` — writes land directly in the Bluetooth controller's operational memory without fault. `HCI_BLE_Set_Coexistence_Parameters` (OCF `0x3C`) injected at payload offset 865 corrupts the coexistence arbiter, spoofs BT device identity, and triggers Auto-Unlock evaluation. The Secure Enclave performs signing without user prompt. + +See the ZombieHunter repo at [github.com/JGoyd/ZombieHunter](https://github.com/JGoyd/ZombieHunter) for full implant analysis and detection tooling. + +### Stage 5 — CryptoTokenKit Signing Abuse + +With spoofed BT identity establishing a trusted peer context, `identityservicesd` invokes CryptoTokenKit signing operations using Secure Enclave-backed keys. No key material is exported — signing authority is abused in place. + +``` +identityservicesd Decrypting message of encryption type "pair-tetra" +identityservicesd Query for encryption with IDs of remote/local devices +CryptoTokenKit operation:2 algo:algid:sign:ECDSA:digest-X962:SHA256 +CryptoTokenKit > parsed for identityservicesd +``` + +### Stage 6 — SSV Persistence (CVE-2026-20700 bypass) + +Payload written to `/System/Library/Caches/com.apple.dyld/` inside the hardware root-of-trust-sealed Signed System Volume. Survives DFU restore, factory reset, and OTA update. iOS 26.3 closes the write path for new infections — it does not remove existing implants. iOS 26.3.1 observed leaving existing implant intact and adding a second instance. See [ZombieHunter](https://github.com/JGoyd/ZombieHunter) for full implant analysis and detection tooling. + +### Forensic Confirmation — Canary Token Cross-Stage Thread + +Canary token `xTtC2` was identified inside the encrypted AMR payload during bitstream analysis. The same token was subsequently recovered from the zombie DSC binary on a fully DFU-restored device. Same token, both artefacts — delivery chain and persistence implant are confirmed as the same operation. The three-token canonical sequence `q9PK|xTtC2|NrER` (encoded beacon `cTlQS3x4VHRDMnxOckVS`) base64-decodes to an 11-byte fragment consistent with a truncated HMAC-SHA1 beacon matching the NSO Pegasus C2 check-in format (`device_id|campaign_id|version`). Combined canary MD5: `2482d4bcec039ae7391120253a397746`. + +**Shutdown log corroboration** (confirmed infected device — `logarchive/extra/shutdown.0.log`): +- `IOMFB_bics_daemon` persisted across two SIGTERM cycles → AGX framebuffer capture hook +- `routined` changed PID between SIGTERMs (652→38) → active watchdog respawning at shutdown +- `SafariSafeBrowsing.Service` lingered past first SIGTERM → exfiltration channel held open + +--- + +## CVE Summary + +| CVE | Component | Description | CVSS | Status | +|---|---|---|---|---| +| CVE-2025-31200 | CoreAudio / AudioConverterService | Heap corruption via illegal AMR bitstream parameters | 9.8 Critical | Patched iOS 18.4.1 | +| CVE-2025-31201 | AppleBCMWLAN.dext | Kernel escalation via AMPDU length confusion + PAC bypass | 9.8 Critical | Patched iOS 18.4.1 | +| BCM4387 coex | Broadcom BCM4387 silicon | Unprotected coexistence SRAM below IOMMU — HCI injection | High | **No CVE. No patch.** | +| CVE-2026-20700 | SSV / dyld shared cache | Persistent implant surviving DFU restore | Critical | iOS 26.3 — write path only | +| *(No CVE)* | CryptoTokenKit / SEP | Unauthorized SEP-backed signing from compromised context | High | Remediation recommended | +| *(No CVE)* | PME / audiomxd / powerd | PME enforcement failure → SoC stalls | High | Firmware review recommended | --- ## Impact Summary -- **Cryptographic isolation defeated:** Secure Enclave–backed keys were invoked by untrusted code to perform signing operations without user authorization (keys were not exported, but their authority was abused). -- **Device impersonation & token forgery:** Legitimate identity tokens and signatures could be forged, enabling impersonation across Apple services. -- **Service‑level authentication undermined:** The trust assumptions used by identity, messaging, and authentication services were subverted, degrading system‑level integrity. -- **Zero‑click remote compromise:** The entire chain can be triggered remotely without user interaction, increasing scale and operational risk. -- **System stability / hardware impact:** In observed cases the malformed media also triggered PME enforcement failures and GPU/mediapath deadlocks that caused SoC stalls or device‑wide freezes (denial‑of‑service class impact). +- **Cryptographic isolation defeated** — Secure Enclave-backed keys invoked by untrusted code without user authorization. +- **Device impersonation and token forgery** — Legitimate identity tokens and signatures forged across Apple services. +- **Service-level authentication undermined** — Identity, messaging, and authentication trust assumptions subverted. +- **Zero-click remote compromise** — Full chain triggered without user interaction, no sender trust dependency. +- **Unremovable persistence** — SSV-layer implant survives all user-accessible remediation. Confirmed infected devices have no available clean path. +- **Unpatched hardware vector** — BCM4387 coexistence bridge exploitable from kernel context on all iPhone 13–16 regardless of iOS version. +- **System stability impact** — PME enforcement failures and SoC stalls observed as collateral. --- ## Recommendations -1. Enforce post‑kernel attestation for CryptoTokenKit. Even privileged callers should require validation before invoking key‑bound operations. -2. Apply BlastDoor and Blackhole protections to all messages. Do not bypass inspection based on sender status. -3. Sanitize codec inputs. Input validation for decoder parameters (e.g., inMagicCookie) must be rigorous. -4. Secure kernel‑exposed driver surfaces. Harden wireless and AMPDU handling against malformed input even after memory corruption. -5. Isolate signing operations with runtime integrity enforcement. Cryptographic signing APIs should verify process integrity and entitlements even when caller context is compromised. +1. **Enforce post-kernel attestation for CryptoTokenKit.** Privileged callers must require validation before invoking key-bound operations. +2. **Extend BlastDoor validation to codec bitstream parameters.** Container-level frame structure validation is insufficient — the exploit payload in this chain lives in AMR bitstream parameters one layer below what BlastDoor currently inspects. +3. **Extend codec input validation to bitstream parameters.** Legal range enforcement for AMR pitch lag, LSF coefficients, and codebook indices per 3GPP TS 26.090. +4. **Harden AMPDU handling in AppleBCMWLAN.** Validate subframe length fields against allocated buffer size. +5. **Extend BCM4387 IOMMU boundary.** IOMMU protection must cover the coexistence SRAM region (`0x102000`–`0x1173FF`). Requires Broadcom firmware update. +6. **Remediate SSV persistence.** iOS 26.3 closes the write path but does not clean existing infections. Architectural review of SSV write primitives required. +7. **Use ZombieHunter and MVT for device triage.** DFU restore is not sufficient for confirmed infected devices. --- ## Status -* **Reported**: Yes -* **Patched**: Yes — vendor released fixes in **iOS 18.4.1** -* **CVE IDs**: - * `CVE-2025-31200`: CoreAudio memory corruption - * `CVE-2025-31201`: AppleBCMWLAN kernel escalation -* **Exploit Vector Confirmed by Apple**: Yes — malicious MP4 audio file via iMessage -* **Exploit Type**: Zero-day, zero-click, remote -* **Hardware / PME observation**: PME enforcement failures and SoC stall behavior were observed in testing; vendor firmware/PME review recommended (no public CVE). +| Item | Detail | +|---|---| +| Reported to Apple | Dec 20, 2024 | +| Re-reported to Apple & US-CERT | Jan 21, 2025 (VRF#25-01-MPVDT) | +| Patched (CVE-2025-31200, CVE-2025-31201) | Apr 16, 2025 — iOS 18.4.1 | +| CISA KEV listing | Apr 16, 2025 — federal deadline May 8, 2025 | +| Acknowledged SSV persistence (CVE-2026-20700) | Feb 11, 2026 — iOS 26.3 | +| BCM4387 submitted to Broadcom PSIRT | Mar 2026 — no CVE, no patch | +| Exploit vector confirmed by Apple | Yes — malicious audio file via iMessage | +| Exploit type | Zero-day, zero-click, remote | +| Hardware/PME observation | PME enforcement failures and SoC stalls observed — vendor firmware review recommended |