Buvo pristatyta nauja SQLite pažeidžiamumų išnaudojimo technika.

Tyrėjai iš „Check Point“. atidengtas konferencijoje DEF CON – išsami informacija apie naują metodą, skirtą atakuoti programas naudojant pažeidžiamas SQLite versijas. Patikrinimo taško metodas duomenų bazės failus laiko galimybe integruoti pažeidžiamumų išnaudojimo scenarijus įvairiose vidinių SQLite posistemių, kurios nėra tiesiogiai išnaudojamos. Tyrėjai taip pat parengė pažeidžiamumų išnaudojimo techniką, užkoduodami išnaudojimą SELECT užklausų grandinės forma SQLite duomenų bazėje, kuri leidžia apeiti ASLR.

Kad ataka būtų sėkminga, būtina turėti galimybę modifikuoti užpultų programų duomenų bazės failus, o tai apriboja atakas prieš programas, kurios naudoja SQLite duomenų bazę kaip tranzito ir įvesties duomenų formatą. Šis metodas taip pat gali būti naudojamas išplėsti esamą vietinę prieigą, pavyzdžiui, integruoti paslėptas užpakalines duris į naudojamas programas, taip pat apeiti saugos mechanizmus, kai saugumo tyrinėtojai analizuoja kenkėjiškas programas. Operacija po failo pakeitimo atliekama tuo metu, kai programa vykdo pirmąją SELECT užklausą pagal pakeistos duomenų bazės lentelę.

Kaip pavyzdį pademonstravome galimybę paleisti kodą iOS atidarant adresų knygą, failas su „AddressBook.sqlitedb“ duomenų baze buvo pakeistas siūlomu metodu. Atakoje buvo naudojamas funkcijos fts3_tokenizer pažeidžiamumas (CVE-2019-8602, rodyklės nukrypimo galimybė), ištaisytas balandžio mėn. SQLite 2.28 naujinime, kartu su kitu pažeidžiamumas langų funkcijų įgyvendinime. Be to, buvo pademonstruotas PHP parašyto užpuoliko užpakalinio serverio valdymo nuotoliniu būdu perėmimo metodas, kuris kaupia slaptažodžius, perimtus veikiant kenksmingam kodui (perimti slaptažodžiai buvo perduodami SQLite duomenų bazės forma).

Atakos metodas yra pagrįstas dviejų metodų „Užklausos užgrobimas“ ir „Užklausa orientuotas programavimas“ naudojimu, leidžiančiomis išnaudoti savavališkas problemas, dėl kurių SQLite variklyje pažeidžiama atmintis. „Užklausos užgrobimo“ esmė yra pakeisti „sql“ lauko turinį „sqlite_master“ paslaugų lentelėje, kuri lemia duomenų bazės struktūrą. Nurodytame lauke yra DDL (Data Definition Language) blokas, naudojamas duomenų bazės objektų struktūrai apibūdinti. Aprašymas nurodomas naudojant standartinę SQL sintaksę, t.y. naudojama konstrukcija „CREATE TABLE“,
kuris vykdomas duomenų bazės inicijavimo proceso metu (pirmojo paleidimo metu
sqlite3LocateTable funkcijos, skirtos sukurti su lentele susijusias vidines struktūras atmintyje.

Idėja yra ta, kad pakeitus „CREATE TABLE“ į „CREATE VIEW“, tampa įmanoma valdyti bet kokią prieigą prie duomenų bazės nustatant savo vaizdą. Naudojant „CREATE VIEW“, „SELECT“ operacija susieta su lentele, kuri bus vadinama vietoj „CREATE TABLE“ ir leidžia pasiekti skirtingas SQLite interpretatoriaus dalis. Be to, paprasčiausias atakos būdas būtų iškviesti funkciją „load_extension“, kuri leidžia įkelti savavališką biblioteką su plėtiniu, tačiau ši funkcija pagal numatytuosius nustatymus yra išjungta.

Norint įvykdyti ataką, kai galima atlikti operaciją „SELECT“, siūloma „Užklausos orientuoto programavimo“ technika, kuri leidžia išnaudoti SQLite problemas, kurios sukelia atminties sugadinimą. Ši technika primena į grąžą orientuotą programavimą (R.O.P., Į grąžinimą orientuotas programavimas), bet naudoja ne esamus mašinos kodo fragmentus, kad sukurtų skambučių grandinę („įtaisus“), bet įterpia antrinių užklausų rinkinį SELECT.

Buvo pristatyta nauja SQLite pažeidžiamumų išnaudojimo technika.

Buvo pristatyta nauja SQLite pažeidžiamumų išnaudojimo technika.

Šaltinis: opennet.ru

Добавить комментарий