La chaîne de démarrage «patchée»

La SecureROM (aussi nommée BootROM)
Jailbreak (PwnDFU Mode) :
C'est le mode DFU matériel sur lequel une faille est utilisée pour injecter du code qui permet de détourner temporairement le processus de validation des signatures du chargeur d'amorçage de premier niveau, soit iBSS ou LLB.

Les failles BootROM sont les plus importantes puisqu'elles détournent le processus de validation des signatures au tout début de la chaîne de confiance, ce qui permet l'exécution du code non-signé sur l'intégralitée de celle-ci.

Exemple : Limera1n
Limera1n utilise une faille dans le protocole USB du mode DFU pour permettre l'exécution du code non-signé. La chaîne de démarrage ressemble alors à :
a) Mode DFU, SecureROM (RELEASE + Limera1n) --> iBSS* (RELEASE) --> iBEC* (RELEASE) --> Device Tree* + Kernel* (RELEASE) --> RamDisk* ou système de fichiers sur NAND*
b) Mode normal, SecureROM (RELEASE) --> LLB (RELEASE) --> iBoot (RELEASE) --> DeviceTree + Kernel (RELEASE) --> Système de fichiers sur NAND
Note : En violet signifie l'endroit où la chaîne de confiance est brisée pour permettre l'exécution du code non-approuvé. L'intégralitée de la chaîne DFU est en violet, alors cela signifie que l'exécution du code non-signé est possible dès la SecureROM (niveau 0) à partir du mode DFU.
Par contre, le mode DFU attend de recevoir une image (conteneur du code) par la connexion USB, d'où le fait que tout exploit impliqué sur le mode DFU n'est pas persistant («Tethered»). Au redémarrage, les validations de signatures sont de retour puisque l'on tombe à nouveau sur le démarrage normal (NAND). Si des modifications ont étés apportées au système de fichiers ou bien au niveau des chargeurs d'amorçage lorsque Limera1n était injecté, toutes modifications apportées au système ne fonctionneront plus puisqu'il y aura échec de la validation des signatures.
Si la chaîne d'amorçage est entièrement conforme et que des applications tierces telles que Cydia sont présentes dans le système de fichiers, celles-ci refuseront de s'exécuter puisque le kernel correctement signé ne permet pas leur exécution (cs_enforcement enabled). Il faut donc «ré-injecter» Limera1n sur le mode DFU, puis envoyer les élément de démarrage tels que les chargeurs d'amorçage de niveaux supérieurs chaque fois que l'on veut démarrer correctement l'appareil. C'est le jailbreak dit «Tethered». Pour achever un jailbreak «Untethered», une seconde faille qui sera écrite dans le système doit être exploitée au niveau du kernel dans la plupart des cas. La chaîne du démarrage ressemble alors à cela :
a) Mode DFU, SecureROM (RELEASE + Limera1n) --> iBSS* (RELEASE) --> iBEC* (RELEASE) --> DeviceTree* + Kernel* (RELEASE) --> RamDisk* ou système de fichiers sur NAND*
b) Mode normal, SecureROM (RELEASE) --> LLB (RELEASE) --> iBoot (RELEASE) --> DeviceTree + Kernel* (RELEASE) --> Système de fichiers sur NAND*.
Note : L'astérix (*) devant le nom d'un élément de démarrage signifie qu'un patch lui est appliqué.


Copyright © 2020 — Pierre-Marc Bonneau

Conditions d'utilisation