Check Pointin tutkijat
Hyökkäyksen onnistuminen edellyttää kykyä muokata hyökkäyksen kohteena olevien sovellusten tietokantatiedostoja, mikä rajoittaa menetelmän hyökkäyksiin sovelluksiin, jotka käyttävät SQLite-tietokantaa siirto- ja syöttötietojen muotona. Menetelmällä voidaan myös laajentaa olemassa olevaa paikallista pääsyä, esimerkiksi integroida piilotettuja takaovia käytettyihin sovelluksiin sekä ohittaa tietoturvamekanismeja tietoturvatutkijoiden haittaohjelmien analysoinnissa. Tiedoston korvaamisen jälkeinen toimenpide suoritetaan sillä hetkellä, kun sovellus suorittaa ensimmäisen SELECT-kyselyn muokatun tietokannan taulukkoa vastaan.
Esimerkkinä osoitimme kyvyn suorittaa koodia iOS:ssä osoitekirjaa avattaessa, "AddressBook.sqlitedb"-tietokannan tiedostoa muokattiin ehdotetulla menetelmällä. Hyökkäys käytti fts3_tokenizer-funktion (CVE-2019-8602, pointer dereference -ominaisuus), joka korjattiin huhtikuun SQLite 2.28 -päivityksessä, haavoittuvuutta yhdessä toisen kanssa.
Hyökkäysmenetelmä perustuu kahden tekniikan "Query Hijacking" ja "Query Oriented Programming" käyttöön, jotka mahdollistavat mielivaltaisten ongelmien hyödyntämisen, jotka johtavat muistin vioittumiseen SQLite-moottorissa. Query Hijackingin ydin on korvata sqlite_master-palvelutaulukon sql-kentän sisältö, joka määrittää tietokannan rakenteen. Määritetty kenttä sisältää DDL (Data Definition Language) -lohkon, jota käytetään kuvaamaan tietokannan objektien rakennetta. Kuvaus määritetään käyttämällä standardia SQL-syntaksia, eli. käytetään "CREATE TABLE" -rakennetta,
joka suoritetaan tietokannan alustusprosessin aikana (ensimmäisen käynnistyksen aikana
sqlite3LocateTable-funktiot luovat taulukkoon liittyviä sisäisiä rakenteita muistiin.
Ajatuksena on, että kun "CREATE TABLE" korvataan sanalla "CREATE VIEW", on mahdollista hallita pääsyä tietokantaan määrittelemällä oma näkymäsi. Käytettäessä "CREATE VIEW" -toimintoa taulukkoon on sidottu "SELECT"-toiminto, jota kutsutaan "CREATE TABLE":n sijaan ja jonka avulla voit käyttää SQLite-tulkin eri osia. Seuraavaksi yksinkertaisin hyökkäystapa olisi kutsua "load_extension"-toiminto, jonka avulla voit ladata mielivaltaisen kirjaston laajennuksella, mutta tämä toiminto on oletuksena pois käytöstä.
Hyökkäyksen suorittamiseen, kun on mahdollista suorittaa "SELECT" -toiminto, ehdotetaan "Query Oriented Programming" -tekniikkaa, joka mahdollistaa SQLiten ongelmien hyödyntämisen, jotka johtavat muistin vioittumiseen. Tekniikka muistuttaa paluusuuntautunutta ohjelmointia (
Lähde: opennet.ru