🔍 Contexte
Publié le 18 juin 2026 par l’équipe PS (Paradigm Shift Technology) sur leur blog, cet article présente usbliter8, un exploit BootROM inédit ciblant les SoC Apple A12, S4/S5 et A13, avec divulgation coordonnée auprès d’Apple Product Security avant publication.
🐛 Vulnérabilité
Le bug réside dans le contrôleur USB DWC2 de Synopsys intégré aux SoC Apple. Le contrôleur stocke jusqu’à trois Setup packets consécutifs en mémoire via DMA. Lors de la réception d’un quatrième paquet, il décrémente le registre DOEPDMA de 24 octets pour revenir au début du buffer. Cependant, si des paquets plus petits sont reçus (stockés en chunks de 4 octets), l’incrément ne correspond pas au décrément fixe, produisant un primitif de buffer underflow par pas de 12 octets.
- A11 : non vulnérable (le driver USB réinitialise manuellement l’adresse DMA après chaque paquet)
- A12/A13 : vulnérables — l’USB DART est configuré en mode bypass dans la SecureROM, permettant l’écriture libre en SRAM
- A14 et ultérieurs : non exploitables — le DART est correctement configuré dans la SecureROM
⚙️ Exploitation
Sur A12/S4/S5 (sans PAC) :
- Le buffer DMA du contrôleur USB est alloué sur le tas juste après la stack de la tâche USB
- Écrasement du LR sauvegardé sur la stack pour obtenir le contrôle du PC lors d’un context switch
- Chaîne ROP minimale : écriture 32 bits sur l’MMIO USB pour modifier l’adresse DMA, délai ~400ms, puis saut vers la fonction de transfert vers iBoot
- Le shellcode est écrit dans la boot trampoline via DMA (contourne les protections EL0/EL1 car DMA ignore les permissions MMU)
Sur A13 (avec PAC) :
- PAC appliqué aux LR stockés sur la stack, empêchant le ciblage direct
- Technique multi-étapes :
- Écrasement de données DART sur le tas pour obtenir un primitif d’écriture zéro de 16 octets
- Écrasement du compteur global de panics avec
0xFpour forcer une boucle infinie au lieu d’un reboot - Synchronisation temporelle des écritures DMA pendant que la tâche USB est active
- Écrasement du champ
critical_section_depthpour déclencher un panic avec IRQs activées - Écrasement du handler d’interruption USB dans le BSS pour obtenir le contrôle du PC
- Gadget identifié dans la SecureROM A13 permettant un saut authentifié (
BLRAAZ) vers la boot trampoline
🔓 Post-exploitation
- Exécution de code en mode EL1 privilégié via l’instruction
SVC 0présente dans la SecureROM - Sur A13 : redémarrage de la SecureROM depuis une copie en SRAM avec MMU reconfiguré pour mapper les adresses physiques SRAM vers les adresses virtuelles ROM originales
- Patches appliqués : réduction de la zone de chargement, forçage du mode DFU, injection du handler USB personnalisé, injection de la chaîne PWND dans le numéro de série USB
- Handler personnalisé ajoutant deux requêtes USB : demotion (abaissement du mode production du SoC) et boot iBoot sans vérification de signature
- L’exploit n’affecte pas le SEP (Secure Enclave Processor) mais ouvre des vecteurs d’attaque vers celui-ci
📋 Type d’article
Publication de recherche offensive détaillée (write-up technique complet avec PoC), visant à documenter l’impact réel d’une classe de vulnérabilités matérielles dans les BootROM Apple et à contribuer à la compréhension de la sécurité des SecureROM modernes.
🧠 TTPs et IOCs détectés
TTP
- T1542 — Pre-OS Boot (Defense Evasion)
- T1542.003 — Pre-OS Boot: Bootkit (Defense Evasion)
- T1203 — Exploitation for Client Execution (Execution)
- T1068 — Exploitation for Privilege Escalation (Privilege Escalation)
- T1600 — Weaken Encryption (Defense Evasion)
Malware / Outils
- usbliter8 (tool)
🟡 Indice de vérification factuelle : 40/100 (moyenne)
- ⬜ ps.tc — source non référencée (0pts)
- ✅ 21104 chars — texte complet (fulltext extrait) (15pts)
- ⬜ aucun IOC extrait (0pts)
- ⬜ pas d’IOC à vérifier (0pts)
- ✅ 5 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ pas de CVE à vérifier (0pts)
🔗 Source originale : https://ps.tc/pages/blog-usbliter8.html