Új technikát vezettek be az SQLite sebezhetőségeinek kihasználására.

A Check Point kutatói fedetlen a DEF CON konferencián az SQLite sebezhető verzióit használó alkalmazások támadására szolgáló új technika részleteit. A Check Point metódus az adatbázisfájlokat lehetőségnek tekinti a különféle belső SQLite alrendszerekben lévő, közvetlenül nem kihasználható sebezhetőségek kihasználására szolgáló forgatókönyvek integrálására. A kutatók egy technikát is elkészítettek a sérülékenységek kihasználására úgy, hogy az exploitot SELECT lekérdezések láncaként kódolják az SQLite adatbázisban, amely lehetővé teszi az ASLR megkerülését.

A sikeres támadáshoz szükséges a megtámadott alkalmazások adatbázisfájljainak módosítása, ami a módszert az SQLite adatbázist tranzit- és bemeneti adatok formátumaként használó alkalmazások elleni támadásokra korlátozza. A módszer a meglévő helyi hozzáférés bővítésére is használható, például rejtett hátsó ajtók integrálására a használt alkalmazásokba, valamint a biztonsági mechanizmusok megkerülésére, amikor a biztonsági kutatók rosszindulatú programokat elemeznek. A fájlcsere utáni műveletet abban a pillanatban hajtják végre, amikor az alkalmazás végrehajtja az első SELECT lekérdezést a módosított adatbázisban lévő táblán.

Példaként bemutattuk a kód futtatásának képességét iOS rendszerben egy címjegyzék megnyitásakor, az „AddressBook.sqlitedb” adatbázissal rendelkező fájlt a javasolt módszerrel módosítottuk. A támadás az áprilisi SQLite 3-as frissítésben javított fts2019_tokenizer funkció (CVE-8602-2.28, pointer dereference képesség) biztonsági rését használta, valamint egy másikat. sebezhetőség ablakfunkciók megvalósításában. Ezen túlmenően bemutatták a támadó PHP-ben írt háttérszerverének vezérlésének távoli lefoglalására szolgáló módszer alkalmazását, amely a rosszindulatú kódok működése során elfogott jelszavakat halmoz fel (az elfogott jelszavakat SQLite adatbázis formájában továbbították).

A támadási módszer két „Lekérdezés-eltérítés” és „Lekérdezés-orientált programozás” technikán alapul, amelyek lehetővé teszik olyan tetszőleges problémák kihasználását, amelyek memóriasérüléshez vezetnek az SQLite motorban. A “Query Hijacking” lényege, hogy az sqlite_master szolgáltatástáblában az adatbázis szerkezetét meghatározó “sql” mező tartalmát lecseréljük. A megadott mező tartalmaz egy DDL (Data Definition Language) blokkot, amely az adatbázisban lévő objektumok szerkezetének leírására szolgál. A leírás szabványos SQL szintaxissal van megadva, pl. a „CREATE TABLE” konstrukció használatos,
amely az adatbázis inicializálási folyamata során (az első indításkor
Az sqlite3LocateTable függvények táblákhoz kapcsolódó belső struktúrák létrehozásához a memóriában.

Az ötlet az, hogy a „TÁBLÁZAT LÉTREHOZÁSA” helyett „NÉZET LÉTREHOZÁSA” lehetővé válik az adatbázishoz való hozzáférés szabályozása saját nézet meghatározásával. A "NÉZET LÉTREHOZÁSA" használatával egy "SELECT" művelet van a táblához kötve, amelyet a "CREATE TABLE" helyett hívnak meg, és lehetővé teszi az SQLite értelmező különböző részei elérését. Ezután a támadás legegyszerűbb módja a „load_extension” függvény meghívása, amely lehetővé teszi egy tetszőleges könyvtár betöltését kiterjesztéssel, de ez a funkció alapértelmezés szerint le van tiltva.

A „SELECT” művelet végrehajtása esetén a támadás végrehajtásához a „Query Oriented Programming” technikát javasoljuk, amely lehetővé teszi az SQLite-ban lévő olyan problémák kihasználását, amelyek memóriasérüléshez vezetnek. A technika a visszatérés-orientált programozásra emlékeztet (R.O.P., Return-Oriented Programming), de nem a meglévő gépi kódrészleteket használja fel hívási lánc ("gadget") felépítésére, hanem a SELECT-en belüli allekérdezések halmazába illeszt be.

Új technikát vezettek be az SQLite sebezhetőségeinek kihasználására.

Új technikát vezettek be az SQLite sebezhetőségeinek kihasználására.

Forrás: opennet.ru

Hozzászólás