Ir ieviests jauns paņēmiens SQLite ievainojamību izmantošanai.

Pētnieki no Check Point bez pārklājuma konferencē DEF CON, sīkāka informācija par jaunu paņēmienu, lai uzbruktu lietojumprogrammām, izmantojot neaizsargātas SQLite versijas. Pārbaudes punkta metode datu bāzes failus uzskata par iespēju integrēt dažādu iekšējo SQLite apakšsistēmu ievainojamību izmantošanas scenārijus, kas nav tieši izmantojami. Pētnieki ir arī sagatavojuši paņēmienu ievainojamību izmantošanai, SQLite datubāzē kodējot izmantošanu SELECT vaicājumu ķēdes veidā, kas ļauj apiet ASLR.

Lai uzbrukums būtu veiksmīgs, ir jāspēj modificēt uzbrukto lietojumprogrammu datu bāzes failus, kas ierobežo metodi ar uzbrukumiem lietojumprogrammām, kas izmanto SQLite datu bāzi kā tranzīta un ievades datu formātu. Šo metodi var izmantot arī, lai paplašinātu esošo lokālo piekļuvi, piemēram, lai integrētu slēptās aizmugures durvis izmantotajās lietojumprogrammās, kā arī apietu drošības mehānismus, analizējot ļaunprātīgu programmatūru, ko veic drošības pētnieki. Darbība pēc faila aizstāšanas tiek veikta brīdī, kad lietojumprogramma izpilda pirmo SELECT vaicājumu pret tabulu modificētajā datu bāzē.

Piemēram, mēs parādījām iespēju palaist kodu iOS, atverot adrešu grāmatu, fails ar datubāzi “AddressBook.sqlitedb” tika modificēts, izmantojot piedāvāto metodi. Uzbrukumā tika izmantota funkcijas fts3_tokenizer ievainojamība (CVE-2019-8602, rādītāja novirzīšanas iespēja), kas tika labota aprīļa SQLite 2.28 atjauninājumā, kā arī cita. ievainojamība logu funkciju īstenošanā. Turklāt tika demonstrēta PHP rakstīta uzbrucēja aizmugursistēmas servera vadības attālinātās pārņemšanas metodes izmantošana, kas uzkrāj ļaunprātīga koda darbības laikā pārtvertās paroles (pārtvertās paroles tika pārraidītas SQLite datu bāzes veidā).

Uzbrukuma metode ir balstīta uz divu paņēmienu izmantošanu “Vaicājumu nolaupīšana” un “Uz vaicājumu orientēta programmēšana”, kas ļauj izmantot patvaļīgas problēmas, kas izraisa atmiņas bojājumus SQLite dzinējā. “Vaicājuma nolaupīšanas” būtība ir sqlite_master pakalpojumu tabulas lauka “sql” satura aizstāšana, kas nosaka datu bāzes struktūru. Norādītajā laukā ir DDL (Data Definition Language) bloks, ko izmanto, lai aprakstītu datu bāzes objektu struktūru. Apraksts ir norādīts, izmantojot standarta SQL sintaksi, t.i. tiek izmantota konstrukcija “CREATE TABLE”,
kas tiek izpildīts datu bāzes inicializācijas procesa laikā (pirmās palaišanas laikā
sqlite3LocateTable funkcijas, lai izveidotu ar tabulu saistītas iekšējās struktūras atmiņā.

Ideja ir tāda, ka, aizstājot “CREATE TABLE” ar “CREATE VIEW”, kļūst iespējams kontrolēt jebkuru piekļuvi datubāzei, definējot savu skatu. Izmantojot "CREATE VIEW", ar tabulu tiek piesaistīta darbība "SELECT", kas tiks izsaukta "CREATE TABLE" vietā un ļauj piekļūt dažādām SQLite tulka daļām. Tālāk vienkāršākā uzbrukuma metode būtu izsaukt funkciju “load_extension”, kas ļauj ielādēt patvaļīgu bibliotēku ar paplašinājumu, taču šī funkcija pēc noklusējuma ir atspējota.

Lai veiktu uzbrukumu, kad ir iespējams veikt operāciju “SELECT”, tiek piedāvāta “Query Oriented Programming” tehnika, kas ļauj izmantot SQLite problēmas, kas izraisa atmiņas bojājumus. Šī tehnika atgādina uz atdevi orientētu programmēšanu (ROP, uz atgriešanos orientēta programmēšana), bet neizmanto esošus mašīnkoda fragmentus, lai izveidotu zvanu ķēdi (“sīkrīkus”), bet gan ievieto apakšvaicājumu komplektā SELECT.

Ir ieviests jauns paņēmiens SQLite ievainojamību izmantošanai.

Ir ieviests jauns paņēmiens SQLite ievainojamību izmantošanai.

Avots: opennet.ru

Pievieno komentāru