En ce beau jour de d’été, la team Pangu vient de relacher une première version de son outil de jailbreak pour iOS 9.2 jusqu’à iOS 9.3.3 pour les appareils 64 bits.
Dans ce post je vais pas faire de “tuto” pour jailbreak votre appareil, mais plutot vous expliquer comment il fonctionne.

Make Jailbreak Great again

Le version anglaise de l’outil de jailbreak de Pangu n’étant pas disponible, j’ai utilisé PP Assistant qui est tout en chinois, une vraie galère pour jailbreak

Cet outil de jailbreak est aussi le premier à demander un captcha, une autre fonctionnalité dont on se passerait bien, mais c’est un gage de sécurité.

Préparation de l’environnement de jailbreak

La première étape du logiciel, est la préparation de l’environnement de jailbreak, c’est à dire qu’il va télécharger depuis les serveurs de 25PP quelques ressources, dont l’IPA qui permet de pwn l’iPhone et d’installer Cydia.
Pour rappel, on a déjà vu ce genre de méthode utilisée par Pangu avec le jailbreak de l’Apple TV sous iOS 9.0.x.

Ce jailbreak est compatible uniquement pour les appareils 64 bits, l’exploit peut être porté sur les appareils 32 bits mais pas assez fiable.

L’exploit

Le bug exploité par Pangu est situé dans le kernel d’iOS des appareils 64 bits accessible depuis un container de la Sandbox.
Il aurait pu être probable que Pangu utilise GasGauge, qui exploite un bug dans une extension du noyaux d’iOS écrit par Luca Todesco. Malheuresement, la team Pangu ne fourni pas de Sandbox escape, donc le bug de Luca n’est pas d’une grande utilité dans ce cas là.

Pourquoi le jailbreak n’est pas untethered ?

Tout d’abord, les plateformes d’Apple sont les plus sécurisées au monde. De plus, des programmes de Bug Bounty comme Zerodium on aussi proposé une prime de 1 million de dollars à l’équipe qui pourra jailbreak de manière persistante et à distance iOS 9 (quand je dis à distance, c’est via l’envoie d’un SMS ou même depuis un site sur Safari).

Aujourd’hui les failles 0day pour le système d’exploitation mobile iOS sont valorisées à $500k soit 5 fois plus que pour Android.
Ce type de jailbreak demande donc du temps, beaucoup de temps. Et à part un merci, ces équipes ne gagnent pas d’argent lors de la mise à dispositon de leur outils, mis à part les quelques dons.

Revenons à nos moutons, la seule raison pour laquelle Pangu a relaché ce jailbreak, c’est que la faille utilisée, est patchée dans iOS 10.0 beta 2. La nouvelle philosophie pour les prochains jailbreaks pourrait être de relacher ceux-ci sans “bruler” de faille 0day comme cela a été fait pour iOS 9.0.2 (l’un des bugs exploité dans le noyau était patché avec iOS 9.1).

Ce jailbreak n’est pas untethered, mais il est particulièrement ingenieux. A chaque fois que vous redemarrerez votre idevice il faudra que vous relanciez l’application PP盘古越狱 qui est installée par PP Assistant.
L’un des avantages de ce déplombage c’est qu’il suffit simplement de redemarrer son téléphone pour désactiver le jailbreak.
Au redemarrage, toutes apps et les tweaks installés ne seront plus utilisable, pour cela il faudra relancer l’application de Pangu : PP盘古越狱.

Cet outil peut être considéré comme semi-untethered.

En cherchant un peu dans les rootfs de l’appareil il y a un fichier nommé .cydia_no_stash

N71AP:~ root# ls -la /                                                        |
total 18                                                                      |
drwxrwxr-t 17 root     admin     918 Jul 24 17:38 ./                          |
drwxrwxr-t 17 root     admin     918 Jul 24 17:38 ../                         |
d-wx-wx-wt  2 _unknown _unknown   68 Mar 29 12:42 .Trashes/                   |
-rw-r--r--  1 root     wheel       0 Jul 23 07:18 .cydia_no_stash <------------
----------  1 root     admin       0 Feb 19 21:58 .file
drwx------  2 _unknown _unknown  170 Jul 24 17:38 .fseventsd/
drwxrwxr-x 93 root     admin    3162 Jul 24 13:27 Applications/
drwxrwxr-x  2 root     admin      68 Feb 19 22:49 Developer/
drwxrwxr-x 17 root     admin     714 Jul 24 13:14 Library/
drwxr-xr-x  3 root     wheel     102 Feb 20 01:14 System/
lrwxr-xr-x  1 root     admin      11 Jul 24 17:38 User -> /var/mobile/
drwxr-xr-x  2 root     wheel    2006 Jul 24 13:14 bin/
drwxr-xr-x  2 root     wheel      68 Oct 28  2006 boot/
drwxrwxr-t  2 root     admin      68 Feb 19 21:58 cores/
dr-xr-xr-x  3 root     wheel    1238 Jul 24 17:34 dev/
lrwxr-xr-x  1 root     admin      11 Mar 29 12:36 etc -> private/etc/
drwxr-xr-x  2 root     wheel      68 Oct 28  2006 lib/
drwxr-xr-x  2 root     wheel      68 Oct 28  2006 mnt/
drwxr-xr-x  4 root     wheel     136 Apr 28 11:12 private/
drwxr-xr-x  2 root     wheel    1292 Jul 24 13:21 sbin/
lrwxr-xr-x  1 root     admin      15 Mar 29 12:36 tmp -> private/var/tmp/
drwxr-xr-x 11 root     wheel     374 Jul 24 13:14 usr/
lrwxr-xr-x  1 root     admin      11 Mar 29 12:36 var -> private/var/

Ce fichier empeche Cydia de stasher. En effet, lors de l’installation de Cydia, il faut de la place dans la parition root d’iOS. Avec un jailbreak untethered “normal”, Cydia deplace des composant systemes d’iOS comme les sonneries, les fonds d’écrans et les applications natives dans /var/stash pour faire de la place dans la partition System.
Comme Cydia ne stash pas, cela signifie aussi que si vous souhaitez restaurer votre appareils en effaçant tout le contenu depuis les réglages vous n’aurez aucun problème

Conclusion

D’après Luca Todesco ce type de jailbreak semi-untethered pourrait être de plus en plus fréquent, car il ne gaspille qu’un seul exploit.

Le support des appareils 32 bits pourrait arriver plus tard (ou pas).

Ce post sera mis à jour régulirement.