Check Pointi teadlased tutvustasid DEF CON konverentsil uusi rĂŒnnaku meetodeid rakendustele, mis kasutavad haavatavaid SQLite versioone. Check Pointi meetod kĂ€sitleb andmebaasifailide vĂ”imalust haavatavuste ekspluiteerimise skriptide integreerimiseks erinevatesse SQLite sisealadesse, mis pole otsesele ekspluiteerimisele avatud. Teadlased on vĂ€lja töötanud ka haavatavuste ekspluiteerimise tehnika, mis kodeerib ekspluudi SQLite andmebaasi SELECT pĂ€ringute ahelana, vĂ”imaldades ASLR-i ĂŒletamist.
Edukaks rĂŒnnakuks on vajalik, et oleks vĂ”imalik manipuleerida rĂŒnnatavate rakenduste andmebaasifailidega, mis piirab meetodi kasutamist rakendustele, mis kasutavad SQLite-d andmevormingina vahe- ja sisendandmete jaoks. Meetodit saab rakendada ka juba saadud kohalikku juurdepÀÀsu laiendamiseks, nĂ€iteks varjatud tagauksete integreerimiseks kasutatavatesse rakendustesse, samuti turvamehhanismide ĂŒletamiseks, mida kasutavad turvauuringud pahavara analĂŒĂŒsimisel. Ekspluateerimine toimib pĂ€rast faili asendamist rakenduse esimese SELECT pĂ€ringu tĂ€itmise ajal muudetud andmebaasis.
NĂ€iteks demonstreeriti koodi kĂ€ivitamise vĂ”imalust iOS-is aadressiraamatu avamisel, mille andmebaasifail "AddressBook.sqlitedb" oli muudetud kasutades pakutud meetodit. RĂŒnnakus kasutati haavatavust fts3_tokenizer funktsioonis (CVE-2019-8602, vajadus dereferentsi nĂ€itaja), mis parandati SQLite-i aprillikuise uuendusega versioonis 2.28, koos teise akenfunktsioonide teostuses. Lisaks demonstreeriti meetodi rakendamist kaugtaseme juhtimise haaramiseks PHP taustaserveri ĂŒle, mis kogus parooli, mis on saadud pahavara kĂ€itamise kĂ€igus (tabatud paroolid edastati SQLite andmebaasi vormis).
RĂŒnnakumeetod pĂ”hineb kahe tehnika, âQuery Hijackingâ ja âQuery Oriented Programmingâ, kasutamisel, mis vĂ”imaldavad Ă€ra kasutada juhuslikke probleeme, mis viivad SQLite mootori mĂ€luhĂ€ireteni. âQuery Hijackingâ olemus on muutmine sqlite_master sĂŒsteemitabeli âsqlâ vĂ€lja sisu, mis mÀÀratleb andmebaasi struktuuri. Antud vĂ€li sisaldab DDL (Data Definition Language) blokki, mida kasutatakse andmebaasi objektide struktuuri kirjeldamiseks. Kirjeldus antakse tavapĂ€rase SQL sĂŒntaksi abil, st kasutatakse konstruktsiooni âCREATE TABLEâ.
mis tÀidetakse andmebaasi initsialiseerimise kÀigus (esmakordsel kÀivitamisel
funktsiooni sqlite3LocateTable) jaoks, et luua mÀlus seotud tabeli sisemised struktuurid.
Idee on selles, et, kui asendada âCREATE TABLEâ âCREATE VIEWâ -ga, avaneb vĂ”imalus oma vaate mÀÀratlemise kaudu kontrollida kĂ”iki andmebaasi pĂ€ringuid. Kasutades âCREATE VIEWâ, seotakse tabeliga âSELECTâ operatsioon, mis kutsub esile âCREATE TABLEâ ja vĂ”imaldab pÀÀseda ligi erinevatele SQLite tĂ”lgendaja osadele. Edasi kĂ”ige lihtsam rĂŒnnak oleks funktsiooni âload_extensionâ kutsumine, mis lubab laadida juhusliku laienduse teegi, kuid see funktsioon on vaikimisi keelatud.
RĂŒnnaku sooritamiseks âSELECTâ operatsiooni Ă”iguse korral on vĂ€lja pakutud tehnika âQuery Oriented Programmingâ, mis vĂ”imaldab Ă€ra kasutada SQLite'is esinevaid mĂ€luhĂ€irete probleeme. Tehnika meenutab tagasipööratud programmeerimist (, Return-Oriented Programming), kuid kasutab oma vĂ€ljakutsumisjadade (âgadĆŸeteidâ) loomisel mitteeksisteerivaid masinkoodi katkeid, vaid sĂŒntaksit alamsĂŒette pĂ”hjal SELECT-i sees.
Allikas: opennet.ru
