Raziskovalci iz Check Pointa
Za uspešen napad je potrebno imeti možnost spreminjanja podatkovnih datotek napadenih aplikacij, kar omejuje metodo na napade na aplikacije, ki uporabljajo bazo podatkov SQLite kot format za prenos in vnos podatkov. Metodo je mogoče uporabiti tudi za razširitev obstoječega lokalnega dostopa, na primer za integracijo skritih zakulisnih vrat v uporabljene aplikacije, kot tudi za obhod varnostnih mehanizmov, ko varnostni raziskovalci analizirajo zlonamerno programsko opremo. Operacija po zamenjavi datoteke se izvede v trenutku, ko aplikacija izvede prvo poizvedbo SELECT za tabelo v spremenjeni bazi podatkov.
Kot primer smo prikazali zmožnost zagona kode v iOS-u pri odpiranju imenika, datoteka z bazo podatkov »AddressBook.sqlitedb« je bila spremenjena s predlagano metodo. Napad je uporabil ranljivost v funkciji fts3_tokenizer (CVE-2019-8602, zmožnost dereference kazalca), ki je bila odpravljena v aprilski posodobitvi SQLite 2.28, skupaj z drugo
Metoda napada temelji na uporabi dveh tehnik “Query Hijacking” in “Query Oriented Programming”, ki omogočata izkoriščanje poljubnih težav, ki vodijo do poškodb pomnilnika v motorju SQLite. Bistvo “Query Hijacking” je zamenjava vsebine polja “sql” v servisni tabeli sqlite_master, ki določa strukturo baze podatkov. Navedeno polje vsebuje blok DDL (Data Definition Language), ki se uporablja za opis strukture objektov v bazi podatkov. Opis je določen s standardno sintakso SQL, tj. uporabljena je konstrukcija “CREATE TABLE”,
ki se izvede med postopkom inicializacije baze podatkov (med prvim zagonom
sqlite3LocateTable deluje za ustvarjanje notranjih struktur, povezanih s tabelo, v pomnilniku.
Ideja je, da je zaradi zamenjave »CREATE TABLE« z »CREATE VIEW« mogoče nadzirati kateri koli dostop do baze podatkov z definiranjem lastnega pogleda. Z uporabo "CREATE VIEW" je operacija "SELECT" vezana na tabelo, ki bo poklicana namesto "CREATE TABLE" in vam omogoča dostop do različnih delov tolmača SQLite. Nato bi bil najpreprostejši način napada klic funkcije »load_extension«, ki omogoča nalaganje poljubne knjižnice z razširitvijo, vendar je ta funkcija privzeto onemogočena.
Za izvedbo napada, ko je mogoče izvesti operacijo »SELECT«, je predlagana tehnika »Query Oriented Programming«, ki omogoča izkoriščanje težav v SQLite, ki vodijo do poškodb pomnilnika. Tehnika spominja na povratno usmerjeno programiranje (
Vir: opennet.ru