Predstavljena je bila nova tehnika za izkoriščanje ranljivosti v SQLite.

Raziskovalci iz Check Pointa odkrito na konferenci DEF CON podrobnosti o novi tehniki za napad na aplikacije, ki uporabljajo ranljive različice SQLite. Metoda Check Point obravnava datoteke baze podatkov kot priložnost za integracijo scenarijev za izkoriščanje ranljivosti v različnih notranjih podsistemih SQLite, ki jih ni mogoče neposredno izkoristiti. Raziskovalci so pripravili tudi tehniko za izkoriščanje ranljivosti s kodiranjem exploita v obliki verige poizvedb SELECT v bazi podatkov SQLite, ki omogoča obhod ASLR.

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 ranljivost pri izvajanju okenskih funkcij. Poleg tega je bila prikazana uporaba metode za oddaljeni prevzem nadzora nad napadalčevim zalednim strežnikom, napisanim v PHP, ki kopiči gesla, prestrežena med delovanjem zlonamerne kode (prestrežena gesla so bila posredovana v obliki baze podatkov SQLite).

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 (ROP, Povratno usmerjeno programiranje), vendar ne uporablja obstoječih izrezkov strojne kode za izgradnjo verige klicev (»pripomočki«), ampak vstavi v niz podpoizvedb znotraj SELECT.

Predstavljena je bila nova tehnika za izkoriščanje ranljivosti v SQLite.

Predstavljena je bila nova tehnika za izkoriščanje ranljivosti v SQLite.

Vir: opennet.ru

Dodaj komentar