Le Jailbreak
Protection
Pour parler de la protection contre le jailbreak, je vais prendre l'exemple de l'un des systèmes les plus sécurisés : la Playstation 3. Cette console de jeux vidéo possède de nombreuses protection pour empêcher de modifier et d'utiliser le système d'une façon non voulue par Sony.
La playstation 3 est un console de jeux vidéo commercialisée par Sony, sortie le 23 Mars 2007 en Europe.
Protection contre la copie
La première crainte de Sony est la copie de jeu. Effectivement, on pourrait penser qu'il suffit de copier un jeu sur un nouveau disque pour pouvoir y jouer.
Disque Blu-Ray.
Cependant, cette facilité apparente cache plusieurs protections. La première de ces protections réside dans le format lui même : le BluRay. La console est sortie en même temps que celui-ci pour essayer de l'imposer. A l'époque, les lecteurs BluRay sont rare est cher et les graveur encore plus. Cette particularité pousse dans les hackers à trouver d'autres méthodes pour lire des jeux.
Ces difficultés techniques passées, la seule copie d'un disque ne suffit pas. Chaque disque est pourvu d'une zone de protection qui identifie sa provenance. Ainsi un disque Sony porte l'identifiant "Sony Computer Entertaiment IDxx" alors qu'un disque vierge type Verbatim porte l'identifiant "Recordable Disk Verbatim". Cette zone de protection est en lecture seule et ne peut donc pas être réécrite. De plus, la console Playstation 3 est programmée pour lire la zone de protection à cet endroit.
Zone de protection en rouge.
Protection contre le code malicieux
La console ne permet pas d'exécuter du code externe à Sony. En effet, sa protection contre le code malicieux n'exécute que du code signé, identifié et validé par Sony. Pour cela elle vérifie l'identifiant du fichier à exécuter, puis vérifie si celui-ci n'a pas été modifié en générant un hash basé sur, entre autre, le nom du fichier, sa taille et sa date. Une fois ce hash générer, elle le compare avec le hash témoin du fichier. Elle n'exécute se fichier que si les deux hash coïncide.
Protection contre le buffer overflow
Buffer Overflow
Le buffer overflow consiste à écrire en dehors d'un espace alloué et ainsi accéder à un espace mémoire non permis. Cette manipulation permet d'exécuter du code avec des paramètres non prévue initialement.
L'illustration ci-dessus nous explique le principe du buffer stack overflow.
- La première colonne représente la pile d'exécution avant l'appel d'une méthode qui copie une chaine de caractère dans un buffer. On y retrouve en rouge l'addresse de retour de la fonction, qui permet à la fin de l'exécution de la fonction, de retourné dans le code appelant. En bleu, le Char *bar représente le pointeur vers la chaine de caractère a copier. Enfin en bleu également, le Char c[12], représente le buffer alloué servant à contenir la chaine contenu dans Char *bar.
- La deuxiéme colonne représente cette même pile d'exécution lors de l'appel à la fonction avec la chaine "Hello". L'exécution se passe normalement, la chaine est copié et le programme continu son exécution normal.
- La troisième colonne représente la pile d'exécution avec une chaine plus longue que le buffer alloué. Dans ce cas, la chaine "écrase" la mémoire située "en dessous", et remplace la valeur "normale" de la case mémoire contenant l'addresse de retour. De ce fait, le programme ne retourne pas au code appelant la fonction mais vers l'adresse "\x08\x35\xC0\x80".
De nombreux systèmes ont ainsi été hacké grâce à cette technique. Ainsi, la Wii, console de Nintendo, à été jailbreaké en utilisant une faille dans un jeu : "The Twilight Princess", le nom du cheval permetait d'effectuer un buffer overflow et ainsi exécuter un programe situé sur la carte SD de la console.
La Playstation 3 possède un système de protection pour éviter ce genre d'incident. Un microkernel est chargé de la détection de ces buffers overflow et relance le module dans le cas ou celui-ci se produit. Ainsi elle se protège de toutes menaces exploitant des buffer overflow.
Hyperviseur
La plus grosse protection de la Playstation 3 réside dans son hyperviseur. Cet hyperviseur est une couche logiciel qui a pour rôle la gestion du hardware. Tout appel système fait par le système d'exploitation de la console doit passer par l'hyperviseur. Ainsi celui-ci a le contrôle total de tout ce qui se passe sur la console en décidant qui a accès à quoi.