Il a fallu attendre longtemps pour qu’iOS 6 soit jailbreaké, si longtemps qu’on ne devrait plus tarder à entendre parler d’iOS 7. Apple a considérablement renforcé la sécurité de son système : des failles sont toujours présentes, mais il faut passer plus de temps à les chercher et il faut souvent en exploiter plusieurs pour parvenir à un jailbreak. Le jailbreak Evasi0n tire ainsi parti d’au moins cinq vulnérabilités différentes.
Un jailbreak est une forme de hacking comme une autre : l’idée est de trouver une faille et de l’exploiter de manière à remonter vers le noyau (kernel) et d’ainsi pouvoir exécuter arbitrairement du code. Comme nous l'a expliqué pod2g, Nikias Bassen (pimskeks) découvre souvent des vulnérabilités en travaillant sur libmobiledevice, cette librairie qui permet notamment de synchroniser son iPhone sous GNU/Linux. Le jailbreak Evasi0n commence ainsi par utiliser libmobiledevice et un bogue dans le système de sauvegarde d’iOS pour accéder à un fichier indiquant le fuseau horaire sur lequel est réglé l’appareil : c’est la porte d’entrée.
David Wang (planetbeing) a expliqué à Forbes les étapes successives qui permettent ensuite de remonter vers le noyau. Un lien symbolique est inséré pour sortir de cette zone restreinte et accéder à launchd, le démon qui gère notamment le lancement des applications. Evasi0n installe ensuite une app que l’utilisateur doit lancer : elle passe une commande via launchd pour modifier les permissions du système de fichiers et pouvoir y accéder en écriture. Evasi0n peut alors modifier le fichier de configuration de launchd pour faire en sorte qu’à chaque lancement de launchd, les modifications apportées soient réappliquées : le jailbreak est persistant ou untethered.
Il faut alors accéder au noyau pour contourner le système de signature des applications et ainsi pouvoir installer et utiliser de nouvelles apps. Wang n’explique évidemment pas comment il réussit à tromper l’Apple Mobile File Integrity Daemon dans le détail, mais il s’agit de remplacer la fonction de vérification d’une signature du système par une fonction qui répondra toujours positivement, même si l’application n’est pas signée. L’accès au noyau passe alors par l’exploitation de deux défauts, un dans la distribution aléatoire de l’espace d’adressage et un dans l’interface USB d’iOS.
Le jailbreak est alors effectif : il est persistant et permet d’installer de nouvelles applications.