Kasutusele on võetud uus tehnika SQLite'i haavatavuste ärakasutamiseks.

Check Pointi teadlased katmata DEF CON konverentsil üksikasjad uue tehnika kohta SQLite'i haavatavaid versioone kasutavate rakenduste ründamiseks. Check Pointi meetod käsitleb andmebaasifaile kui võimalust integreerida stsenaariume erinevate sisemiste SQLite'i alamsüsteemide haavatavuste ärakasutamiseks, mida otseselt ei saa kasutada. Teadlased on koostanud ka turvaaukude ärakasutamise tehnika, kodeerides ärakasutamise SELECT-päringute ahela kujul SQLite'i andmebaasis, mis võimaldab teil ASLR-ist mööda minna.

Edukaks rünnakuks on vaja muuta rünnatud rakenduste andmebaasifaile, mis piirab meetodi rünnakutega rakendustele, mis kasutavad SQLite andmebaasi transiidi- ja sisendandmete vorminguna. Meetodit saab kasutada ka olemasoleva lokaalse juurdepääsu laiendamiseks, näiteks integreerida kasutatud rakendustesse peidetud tagauksi, samuti turvateadlaste poolt pahavara analüüsimisel turvamehhanismidest mööda hiilida. Toiming pärast faili asendamist teostatakse hetkel, kui rakendus täidab muudetud andmebaasis oleva tabeli esimese SELECT-päringu.

Näitena demonstreerisime aadressiraamatu avamisel iOS-is koodi käivitamise võimalust, andmebaasiga “AddressBook.sqlitedb” faili muudeti pakutud meetodil. Rünnak kasutas haavatavust funktsioonis fts3_tokenizer (CVE-2019-8602, kursori viitamise võimalus), mis parandati aprilli SQLite 2.28 värskenduses, koos mõne muuga. haavatavus aknafunktsioonide rakendamisel. Lisaks demonstreeriti ründaja PHP-s kirjutatud taustaserveri kaugjuhtimise meetodi kasutamist, mis akumuleerib pahatahtliku koodi toimimise käigus kinni peetud paroole (näidatud paroolid edastati SQLite'i andmebaasi kujul).

Rünnakumeetod põhineb kahe tehnika „Query Hijacking“ ja „Query Oriented Programming“ kasutamisel, mis võimaldavad ära kasutada suvalisi probleeme, mis põhjustavad SQLite'i mootoris mälu rikkumist. Päringu kaaperdamise olemus seisneb teenindustabelis sqlite_master välja "sql" sisu asendamises, mis määrab andmebaasi struktuuri. Määratud väli sisaldab DDL (Data Definition Language) plokki, mida kasutatakse andmebaasis olevate objektide struktuuri kirjeldamiseks. Kirjeldus on täpsustatud standardse SQL-i süntaksi abil, st. kasutatakse konstruktsiooni "LOO TABEL",
mis käivitatakse andmebaasi initsialiseerimise käigus (esimese käivitamise ajal
Funktsioonid sqlite3LocateTable tabelitega seotud sisemiste struktuuride loomiseks mällu.

Mõte seisneb selles, et “CREATE TABLE” asendamisel sõnaga “LOO VAATE” on võimalik kontrollida juurdepääsu andmebaasile, määratledes oma vaate. "CREATE VIEW" abil seotakse tabeliga operatsioon "SELECT", mida kutsutakse "CREATE TABLE" asemel ja mis võimaldab teil pääseda juurde SQLite'i tõlgi erinevatele osadele. Järgmiseks oleks lihtsaim ründeviis kutsuda välja funktsioon “load_extension”, mis võimaldab laadida suvalise laiendiga teeki, kuid see funktsioon on vaikimisi keelatud.

Rünnaku läbiviimiseks, kui on võimalik sooritada toimingut “SELECT”, pakutakse välja “päringule orienteeritud programmeerimise” tehnika, mis võimaldab ära kasutada SQLite’i probleeme, mis põhjustavad mälu rikkumist. Tehnika meenutab tagasitulekule orienteeritud programmeerimist (ROP, tagastusorienteeritud programmeerimine), kuid ei kasuta olemasolevaid masinkoodijuppe kõnede ahela (“vidinate”) koostamiseks, vaid lisab SELECT-i alampäringute komplekti.

Kasutusele on võetud uus tehnika SQLite'i haavatavuste ärakasutamiseks.

Kasutusele on võetud uus tehnika SQLite'i haavatavuste ärakasutamiseks.

Allikas: opennet.ru

Lisa kommentaar