blackbird: SEPROM exploit for Apple Secure Enclave Processor¶
Apple'ın Secure Enclave Processor'unun TZ0/TZ1 region register'larını SEPROM'dan okuma şeklindeki bir bit-truncation bug'ı, halihazırda Application Processor'u kontrol eden (örneğin checkm8 üzerinden) bir attacker'ın SEP'in kendisinde unsigned code execution kazanmasını sağlıyor.
Mechanism¶
Why it works — the SEP and the memory controller disagree on register width
Secure Enclave Processor (SEP), key'leri, biyometrikleri ve Apple SoC'lerinin secure boot'unu yöneten ayrı bir coprocessor'dür. Boot'ta, AMCC (memory controller), SEP için korumalı bir DRAM region'ı oyan TZ0/TZ1 register'larıyla programlanır; böylece Application Processor (AP) SEP memory'sini ne okuyabilir ne de tamper edebilir. Security invariant'ı, bu carve-out'un o register'ların her consumer'ı tarafından birebir aynı hesaplanmasıdır.
blackbird bir width disagreement'ını exploit eder. SEP'in boot ROM'u (SEPROM) "register'ı 32-bit unsigned integer olarak okur, ama hemen ardından bit'leri 12 kez sağa shift eder; bu da 20. bit'in ötesinde set olan herhangi bir bit'i invisible yapar", oysa AMCC "register'ları okurken, bit'leri shift etmeden önce 32-bit register'ı 64-bit bir value'ya cast eder". Attacker TZ0/TZ1 register value'sunu kontrol ettiği için, AMCC'nin onurlandırdığı (yani memory korumalı görünür) ama SEP'in truncate edip attığı high bit'leri set edebilir — bu da SEP'in korumalı region görüşü ile gerçek korumalı region'ın ayrıştığı bir pencere açar. Bu görünürlük boşluğu, SEP'te unsigned code çalıştırmak için kaldıraç olarak kullanılır.
Kritik olarak, bug SEPROM'da yaşar ve yalnızca TZ0 lock'lanmadan önce, SEP hâlâ read-only boot ROM'unu çalıştırırken erişilebilir. Dolayısıyla blackbird standalone değildir: "checkm8 ya da bir iBoot exploit gibi bir AP bootrom exploit'i gerektirir, çünkü exploit'in çalışması için SEP'in SEPROM'da olması gerekir." A8, A9, A10 ve T2 SoC'lerini ve varyantlarını etkiler; bir ROM bug'ı olduğundan o chip'lerde unpatchable'dır.
Walkthrough¶
Bu, halihazırda public olan, ROM-level bir zincirin kavramsal, defensive bir açıklamasıdır — çalıştırılabilir bir PoC değil.
1. Gain code execution on the AP early in boot, before TZ0 is locked.
- On A-series this is typically the checkm8 SecureROM/BootROM exploit
(see checkm8 entry); on some targets an iBoot exploit.
2. While the SEP is still executing SEPROM, program TZ0/TZ1 with a value whose
high bits (beyond bit 20) are set.
3. AMCC reads the registers as 64-bit and protects the "real" region; SEPROM
right-shifts a 32-bit value by 12, so those high bits vanish and the SEP's
computed boundary differs from AMCC's.
4. The resulting mismatch is used to land unsigned code execution inside the SEP.
Public olarak raporlanan gözlemlenmiş yetenekler:
- A8 / A9 (and A9X): key-pinning attacks are possible.
- A10 / T2: require valid SEP firmware at every restart; checkra1n is the only
publicly known tool that uses blackbird on A10/T2.
- Downstream use: SEP-level code execution enabled the first SEP firmware
*downgrades* on affected devices.
Physical/early-boot only, defensive framing
blackbird uzaktan ya da çalışan bir OS'tan tetiklenemez. Physical access ile erken AP control gerektirir ve burada SEP trust boundary'sini ve onun limitlerini açıklamak için belgelenmiştir, güncel cihazlara saldırı sağlamak için değil.
Detection¶
- Boot-chain integrity / attestation. Exploitation önceden bir AP BootROM/iBoot compromise'i ve tethered bir boot gerektirdiğinden, anormal boot state'i tespit eden veya pairing'i reddeden server-side attestation pratik sinyaldir; bir ROM bug'ı için on-device runtime detector yoktur.
- Device-state anomalies. Beklenmeyen SEP firmware downgrade'leri, tekrarlanan tethered boot'lar ya da jailbreak tooling'i (checkra1n) varlığı, managed fleet'lerde operasyonel göstergelerdir.
Mitigation¶
Hardware fix only; defense-in-depth for affected devices
- A8–A10 ve T2'de unpatchable — bug immutable SEPROM'dadır. Apple register-handling'i daha sonraki silikonda (A12 ve sonrası) düzeltti; daha yeni hardware'e geçmek gerçek mitigation'dır.
- Bir passcode/PIN zorunlu kıl: user passcode ile korunan data, SEP code execution olsa bile encrypted kalır, çünkü SEP passcode etrafında attempt rate-limiting ve key derivation uygular.
- Managed fleet'ler için, hassas erişimi remote attestation'a bağla ve tethered veya downgrade edilmiş state'teki cihazları tespit et/reddet.
See also: checkm8: unpatchable Apple SecureROM/BootROM exploit.