Bola predstavená nová technika na zneužívanie zraniteľností v SQLite.

Výskumníci z Check Pointu odkryté na konferencii DEF CON podrobnosti o novej technike napádania aplikácií pomocou zraniteľných verzií SQLite. Metóda Check Point považuje databázové súbory za príležitosť integrovať scenáre pre zneužívanie zraniteľností v rôznych interných podsystémoch SQLite, ktoré nie sú priamo zneužiteľné. Výskumníci pripravili aj techniku ​​na zneužitie zraniteľností zakódovaním exploitu vo forme reťazca SELECT dotazov v SQLite databáze, čo umožňuje obísť ASLR.

Pre úspešný útok je potrebné mať možnosť modifikovať databázové súbory napadnutých aplikácií, čo obmedzuje metódu na útoky na aplikácie využívajúce SQLite databázu ako formát pre tranzitné a vstupné dáta. Metódu možno použiť aj na rozšírenie existujúceho lokálneho prístupu, napríklad na integráciu skrytých zadných vrátok do používaných aplikácií, ako aj na obídenie bezpečnostných mechanizmov pri analýze malvéru zo strany bezpečnostných výskumníkov. Operácia po nahradení súboru sa vykoná v momente, keď aplikácia vykoná prvý SELECT dotaz na tabuľku v upravenej databáze.

Ako príklad sme demonštrovali schopnosť spustiť kód v systéme iOS pri otvorení adresára, súbor s databázou „AddressBook.sqlitedb“ bol upravený pomocou navrhovanej metódy. Útok použil zraniteľnosť vo funkcii fts3_tokenizer (CVE-2019-8602, schopnosť dereferencovania ukazovateľa), opravenú v aprílovej aktualizácii SQLite 2.28, spolu s ďalšou zraniteľnosť pri implementácii funkcií okien. Okrem toho bolo demonštrované použitie metódy na vzdialené prevzatie kontroly nad backendovým serverom útočníka napísaným v PHP, ktorý hromadí heslá zachytené počas prevádzky škodlivého kódu (zachytené heslá boli prenášané vo forme SQLite databázy).

Metóda útoku je založená na použití dvoch techník „Query Hijacking“ a „Query Oriented Programming“, ktoré umožňujú využiť ľubovoľné problémy, ktoré vedú k poškodeniu pamäte v motore SQLite. Podstatou „Query Hijacking“ je nahradenie obsahu poľa „sql“ v tabuľke služieb sqlite_master, ktorá určuje štruktúru databázy. Zadané pole obsahuje blok DDL (Data Definition Language) používaný na popis štruktúry objektov v databáze. Popis je špecifikovaný pomocou štandardnej syntaxe SQL, t.j. používa sa konštrukcia „CREATE TABLE“,
ktorý sa vykoná počas procesu inicializácie databázy (počas prvého spustenia
Funkcie sqlite3LocateTable na vytvorenie interných štruktúr súvisiacich s tabuľkou v pamäti.

Myšlienkou je, že v dôsledku nahradenia „CREATE TABLE“ za „CREATE VIEW“ bude možné riadiť akýkoľvek prístup k databáze definovaním vlastného pohľadu. Pomocou "CREATE VIEW" je operácia "SELECT" viazaná na tabuľku, ktorá sa bude volať namiesto "CREATE TABLE" a umožní vám prístup k rôznym častiam SQLite interpreta. Najjednoduchším spôsobom útoku by bolo zavolať funkciu „load_extension“, ktorá vám umožňuje načítať ľubovoľnú knižnicu s príponou, ale táto funkcia je predvolene vypnutá.

Na vykonanie útoku, keď je možné vykonať operáciu „SELECT“, sa navrhuje technika „Query Oriented Programming“, ktorá umožňuje využiť problémy v SQLite, ktoré vedú k poškodeniu pamäte. Táto technika pripomína návratovo orientované programovanie (ROP, návratovo orientované programovanie), ale nepoužíva existujúce úryvky strojového kódu na vytvorenie reťazca volaní („gadgetov“), ale vkladá do množiny poddotazov do SELECT.

Bola predstavená nová technika na zneužívanie zraniteľností v SQLite.

Bola predstavená nová technika na zneužívanie zraniteľností v SQLite.

Zdroj: opennet.ru

Pridať komentár