Byla představena nová technika využívání zranitelností v SQLite

Výzkumníci ze společnosti Check Point odhalili na konferenci DEF CON odhalili podrobnosti o nové technice útoků na aplikace využívající zranitelné verze SQLite. Metoda Check Point považuje soubory s databází za příležitost k integraci skriptů pro využití zranitelností v různých interních subsystémech SQLite, které nejsou přístupné pro přímé zneužití. Výzkumníci také vyvinuli techniku zneužití zranitelností, při které je exploitat zakódován ve formě řetězce SELECT dotazů do databáze SQLite, což umožňuje obejít ASLR.

Pro úspěšný útok je nutné mít možnost modifikace souborů databáze cílových aplikací, což omezuje metodu na útoky na aplikace, které používají databázi SQLite jako formát pro tranzitní a vstupní data. Metoda může být také použita pro rozšíření již získaného lokálního přístupu, například pro integraci skrytých zadních vrátků do používaných aplikací, a také pro obcházení ochranných mechanismů při analýze malwaru. Využití zmeškaného souboru dochází v okamžiku, kdy aplikace provede první SELECT dotaz na tabulku v modifikované databázi.

Jako příklad byla demonstrována možnost spuštění kódu v iOS při otevření adresáře, jehož soubor s databází „AddressBook.sqlitedb“ byl změněn pomocí navržené metody. K útoku byla použita zranitelnost ve funkci fts3_tokenizer (CVE-2019-8602, možnost dereference ukazatele), opravená v dubnové aktualizaci SQLite 2.28, spolu s dalšími zranitelnostmi v implementaci oknových funkcí. Dále bylo demonstrováno použití metody pro vzdálené ovládání PHP backend serveru útočníků, který shromažďoval hesla zachycená během činnosti malwaru (zachycená hesla byla předávána ve formě databáze SQLite).

Útok je založen na použití dvou technik "Query Hijacking" a "Query Oriented Programming", které umožňují exploitaci libovolných problémů vedoucích k poškození paměti v engine SQLite. Podstatou "Query Hijacking" je nahrazení obsahu pole "sql" v systémové tabulce sqlite_master, která určuje strukturu databáze. Uvedené pole obsahuje blok DDL (Data Definition Language), používaný k popisu struktury objektů v databázi. Popis se zadává pomocí standardní syntaxe SQL, tzn. se používá konstrukce "CREATE TABLE",
která se provádí během inicializace databáze (během prvního spuštění
funkce sqlite3LocateTable) pro vytvoření vnitřních struktur souvisejících s tabulkou v paměti.

Myšlenka je taková, že v důsledku nahrazení "CREATE TABLE" za "CREATE VIEW" vzniká možnost prostřednictvím definice vlastního zobrazení ovládat jakýkoli přístup k databázi. Pomocí "CREATE VIEW" se k tabulce váže operace "SELECT", která bude vyvolána místo "CREATE TABLE" a umožňuje přístup k různým částem interpretátora SQLite. Nejjednodušší způsob útoku by tedy byl vyvolání funkce "load_extension", která dovoluje nahrát libovolnou knihovnu s rozšířením, ale tato funkce je ve výchozím nastavení deaktivována.

Pro provedení útoku za podmínky, že je možné vykonávat operaci "SELECT", byla navržena technika "Query Oriented Programming", která umožňuje exploitaci problémů v SQLite vedoucích k poškození paměti. Technika připomíná návratově orientované programování (ROP, Return-Oriented Programming), ale pro sestavení řetězce volání ("gadgets") používá nikoli existující úryvky strojového kódu, ale vložení do sady poddotazů uvnitř SELECT.

Byla představena nová technika využívání zranitelností v SQLite

Byla představena nová technika využívání zranitelností v SQLite

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster