Jeffrey Cross
Jeffrey Cross

Débordement de mémoire tampon basé sur le tas: comment pirater l'iPhone et l'iPod Touch

La récente bousculade sur les forums de développeurs iPhone et iPod Touch indique qu’il existe un bogue de débordement de mémoire tampon dans le code utilisé pour charger les images TIFF dans Safari (libtiff). Le problème, c’est que la pile n’est pas exécutable sur les périphériques, ce qui laisse penser à une impasse.

Le tas, cependant, _is_ exécutable, et un débordement de mémoire tampon basé sur le tas qui exploite le bogue libtiff peuvent être le moyen d'obtenir un accès utilisable à l'iPod Touch et à l'iPhone mis à jour en 1.1.1.Pour les non initiés, un débordement de mémoire tampon se produit lorsque les données fournies par l'utilisateur dépassent l'espace de stockage alloué pour le stockage. Lorsque cela se produit, les données en excès écrasent les zones adjacentes de la mémoire du programme, à savoir la «pile». La pile est l'endroit où un programme stocke des données de variable de fonction et renvoie des informations de pointeur nécessaires au programme pour savoir où retourner ses fonctions sont terminées.

Un débordement de mémoire tampon par inadvertance peut provoquer le blocage d'un programme ou un problème inattendu. Toutefois, si vous avez déjà appliqué une mise à jour de sécurité à votre système, vous avez probablement déjà entendu parler d’un dépassement de tampon particulier, tel que «dans certaines circonstances, l’exploitation de ce dépassement de mémoire tampon pourrait conduire à l’exécution, ou à un code ou à un système arbitraire. compromis. »Je l’ai inventé, mais l’avertissement sur les actions ressemble généralement à cela.

Généralement, un bug de débordement de tampon est exploité en remplissant la pile avec du code exécutable et en écrasant le pointeur d'adresse de retour, en le modifiant pour qu'il pointe vers votre code au lieu de la fonction d'appel réelle. Ceci est un exploit de dépassement de tampon basé sur une pile. Dans le cas de l'iPhone et de l'iPod touch, toutefois, cette méthode ne peut pas être utilisée.

Les périphériques ont un mécanisme qui empêche l'exécution de code dans la pile. Pire encore, le pointeur de retour est stocké dans un registre et non sur la pile.

Word dans la rue, cependant, est que les périphériques n'empêchent pas l'exécution de code dans le tas. Le tas est l'endroit où les données variables allouées à l'exécution sont stockées et c'est là qu'un exploit de dépassement de mémoire tampon basé sur le tas peut être utile. Je soupçonne que la personne brillante qui comprend comment obtenir un accès complet à l'iPod touch ou au micrologiciel iPhone 1.1.1 le fera avec un débordement de tas.

Avec un débordement basé sur le tas, la charge utile de code exécutable souhaitée est située dans le tas. C'est à dire. elle est dans la mémoire allouée à l’exécution, par exemple dans le cadre d’une grande image TIFF chargée par Safari. L'exploit de débordement de mémoire tampon fonctionne essentiellement de la même façon, mais au lieu de remplacer le pointeur de pile par une adresse dans la pile, vous écrasez-le par un pointeur vers le tas, renvoyant l'exécution du programme vers le contenu.

Attendez une minute… et la pile n'est-elle pas utilisée pour le pointeur de retour? C'est la grande complication. Comme le pointeur de retour est stocké dans le registre de liens, il n’est pas aussi simple que d’écraser le pointeur de retour dans la pile. Au lieu de cela, vous devrez trouver une valeur de registre de lien enregistrée ou peut-être un pointeur de fonction dans la pile et l’écraser avec l’emplacement des données de charge utile tiff dans le tas. Beurk.

Le logiciel iPhone 1.0.2 peut cependant être débogué, et nous savons ce que sont les internes de libtiff, alors ce n’est peut-être pas tout à fait impossible. Cela me dépasse beaucoup, mais il y a beaucoup de grands programmeurs.

L'avantage est que, contrairement à la pile, le tas n'est pas très limité en espace. Vous pouvez créer une charge utile absolument énorme dans le fichier TIFF, le remplir avec de nombreuses instructions vides «no op» et la charge utile souhaitée à la fin. En supposant que vous puissiez tomber sur un pointeur de fonction approprié à modifier et que vous puissiez deviner grossièrement où se trouve le tas de fichiers TIFF, vous avez de bonnes chances de toucher au code de charge utile. Vous gagnez si vous frappez n'importe quel emplacement dans la partie sans opération de la charge utile, et plus la charge utile est importante, plus cela devient facile.

More reading: Discussion sur le dépassement de la mémoire tampon sur iPhone Dev Wiki - Link TIFF Exploiter la discussion sur le iPod Dev Wiki - Link w00w00 sur les débordements de tas: excellent article technique sur plusieurs approches de débordement basées sur le tas - Link Débordement de tampon @ Wikipedia - Lien

Part

Laisser Un Commentaire