Výzkumníci z Check Pointu
Pro úspěšný útok je nutné mít možnost modifikovat databázové soubory napadených aplikací, což omezuje metodu na útoky na aplikace využívající SQLite databázi jako formát pro přenos a vstupní data. Metodu lze také použít k rozšíření stávajícího místního přístupu, například k integraci skrytých zadních vrátek do používaných aplikací, a také k obcházení bezpečnostních mechanismů při analýze malwaru bezpečnostními výzkumníky. Operace po nahrazení souboru je provedena v okamžiku, kdy aplikace provede první SELECT dotaz na tabulku v upravené databázi.
Jako příklad jsme demonstrovali schopnost spouštět kód v iOS při otevírání adresáře, soubor s databází „AddressBook.sqlitedb“ byl upraven pomocí navržené metody. Útok použil zranitelnost ve funkci fts3_tokenizer (CVE-2019-8602, schopnost dereference ukazatele), opravenou v dubnové aktualizaci SQLite 2.28, spolu s další
Metoda útoku je založena na použití dvou technik „Query Hijacking“ a „Query Oriented Programming“, které umožňují využít libovolné problémy, které vedou k poškození paměti v enginu SQLite. Podstatou „Query Hijacking“ je nahrazení obsahu pole „sql“ v tabulce služeb sqlite_master, která určuje strukturu databáze. Zadané pole obsahuje blok DDL (Data Definition Language) používaný k popisu struktury objektů v databázi. Popis je specifikován pomocí standardní syntaxe SQL, tzn. je použita konstrukce „CREATE TABLE“,
který se provádí během procesu inicializace databáze (při prvním spuštění
Funkce sqlite3LocateTable k vytvoření vnitřních struktur souvisejících s tabulkami v paměti.
Myšlenka je taková, že v důsledku nahrazení „CREATE TABLE“ „CREATE VIEW“ bude možné řídit jakýkoli přístup k databázi definováním vlastního pohledu. Pomocí "CREATE VIEW" je s tabulkou navázána operace "SELECT", která bude volána místo "CREATE TABLE" a umožní vám přístup k různým částem interpretru SQLite. Dále by nejjednodušší metodou útoku bylo zavolat funkci „load_extension“, která vám umožňuje načíst libovolnou knihovnu s příponou, ale tato funkce je ve výchozím nastavení zakázána.
Pro provedení útoku, když je možné provést operaci „SELECT“, je navržena technika „Query Oriented Programming“, která umožňuje využít problémy v SQLite vedoucí k poškození paměti. Tato technika připomíná návratově orientované programování (
Zdroj: opennet.ru