Jeffrey Cross
Jeffrey Cross

Heap-pohjainen puskurin ylivuoto: miten iPhone ja iPod Touch voidaan hakata

Viimeaikainen scuttlebutt iPhone- ja iPod Touch -kehittäjien foorumeilla on, että TIFF-kuvien lataamiseen käytetyssä koodissa Safari (libtiff) on puskurin ylivuoto. Pudotus on, että pino ei ole suoritettavissa laitteissa, mikä johtaa siihen, että monet ajattelevat, että kyseessä on umpikuja.

Kasa, joka kuitenkin on suoritettava, ja kasaan perustuva puskurin ylivuoto, joka hyödyntää libtiff-virhettä, voi olla tapa saada käyttökelpoinen pääsy iPod Touchiin ja 1.1.1 päivitetty iPhone.Fin uninitiated, puskurin ylivuoto on mitä tapahtuu, kun käyttäjän toimittamat tiedot ylittävät tallennustilan, joka oli varattu pitämään sitä. Kun näin tapahtuu, ylimääräiset tiedot korvaavat ohjelman muistin viereiset alueet, nimittäin "pino". Pino on, jossa ohjelma tallentaa funktion muuttujatietoja ja paluuosoitininformaatiota, jota ohjelma tarvitsee tietää, mihin palata, kun yksi sen toiminnot ovat päättyneet.

Virheellinen puskurin ylivuoto voi aiheuttaa ohjelman kaatumisen tai ei-toivotun häiriön. Jos olet koskaan käyttänyt tietoturvapäivitystä järjestelmään, olet luultavasti kuullut mainitsevan, että tietty puskurin ylivuoto havaittiin niin, että ”tietyissä olosuhteissa puskurin ylivuodon hyödyntäminen voi johtaa suoritukseen tai mielivaltaiseen koodiin tai järjestelmään kompromissi. ”Tein sen yhden, mutta varastovaroitus on yleensä jotain sellaista.

Yleensä puskurin ylivuoto-vika hyödynnetään täyttämällä pino suoritettavalla koodilla ja korvaamalla palautusosoitteen osoitin muuttamalla sitä osoittamaan koodiasi todellisen kutsuvan toiminnon sijasta. Tämä on pinopohjainen puskurin ylivuoto. IPhonen ja iPod touchin tapauksessa tätä menetelmää ei kuitenkaan voi käyttää.

Laitteissa on mekanismi, joka estää koodin suorittamisen pinossa. Mikä vielä pahempaa, paluuosoitin tallennetaan rekisteriin eikä pinoon.

Kadulla oleva sana on kuitenkin se, että laitteet eivät estä koodin suorittamista kasassa. Kasa on silloin, kun runtime-allokoidut muuttujatiedot tallennetaan, ja tämä on silloin, kun kasaan perustuva puskurin ylivuodon hyödyntäminen voi olla hyödyllinen. Epäilen, että loistava henkilö, joka selvittää, miten saada täysi pääsy iPod touchiin tai 1.1.1-laiteohjelmistoon iPhone, tekee sen kasaan perustuvalla ylivuodolla.

Kuparipohjaisella ylivuodolla haluttu suoritettavan koodin hyötykuorma sijaitsee kasassa. Eli. se on runtime-varattua muistia, sanoa Safari-ohjelmiston lataamasta suuresta TIFF-kuvasta. Puskurin ylivuodon hyödyntäminen toimii pääosin samalla tavalla, mutta sen sijaan, että pinon osoitin kirjoitettaisiin pinoon osoitteen kanssa, korvattaisit sen osoittimella kasaan, ohjaamalla ohjelman suorittamisen takaisin hyötykuormaan.

Odota hetki ... entä siitä, mitä pinota ei käytetä paluuosoitinta varten? Tämä on suuri komplikaatio. Koska paluuosoitin on tallennettu linkkirekisteriin, se ei ole niin yksinkertaista kuin palautusosoitteen kirjoittaminen pinoon. Sen sijaan sinun täytyy kompastua tallennetun linkkirekisterin arvoon tai ehkä funktion osoittimeen pinossa ja korvata se tiff-hyötykuorman tietojen sijasta kasassa. Yikes.

1.0.2 iPhone-ohjelmistoa voidaan silti korjata, ja tiedämme, mitä libtiffin sisäisiä ovat, joten ehkä tämä ei ole täysin mahdotonta. Se on tien päällä, mutta siellä on paljon korkeampia ohjelmoijia.

Päällekkäin on, että toisin kuin pino, kasa ei ole kovin rajallinen avaruudessa. Voit tehdä TIFF-järjestelmässä aivan valtavan hyötykuorman, täyttää sen paljon tyhjiä "ei op" -ohjeita ja haluttua hyötykuormaa lopussa. Olettaen, että voisit kompastua sopivan toiminnon osoittimen avulla, ja voisit tehdä karkean arvion siitä, missä TIFF: n kasassa on paljon hyvät mahdollisuudet lyödä hyötykuorman koodi. Voitat, jos osuitte mihin tahansa paikkaan hyötykuorman ei-op-osassa, ja mitä suurempi hyötykuorma on, sitä helpompaa se saa.

Lue lisää: Puskurin ylivuodon keskustelu iPhone Dev Wikistä - Link TIFF Käyttää keskustelua iPod Touch Dev Wikistä - Linkki w00w00 Heap Overflows: loistava tekninen artikkeli useista kasaan perustuvista ylivuototavoista - Linkkipuskurin ylivuoto @ Wikipedia - Linkki

Osake

Jättänyt Kommenttia