sok A Check Point kutatói nemrégiben elárulták a DEF konferencián a részletekkel felfedezett új technika, ezt használják pAz SQLite sérülékeny verzióit használó alkalmazások megtámadása.
A módszer A Check Point az adatbázisfájlokat a biztonsági rés kihasználási forgatókönyveinek integrálásának lehetőségének tekinti különféle belső SQLite alrendszerekben, amelyek nem érhetők el a homlok kiaknázása céljából. A kutatók egy olyan technikát is kifejlesztettek a sebezhetőségek kiaknázására, amelyek egy SQLite adatbázisban található SELECT-lekérdezések formájában kódolást használnak, ami lehetővé teszi az ASLR elkerülését.
A sebezhetőségről
A Check Point kutatói ezt részletezik A sikeres támadáshoz a támadónak képesnek kell lennie a támadott alkalmazások adatbázisfájljainak módosítására, amely korlátozza az SQLite adatbázisokat használó alkalmazások megtámadásának módját a tranzit és a bemeneti adatok formátumaként.
Bár azt is elárulják, hogy a módszer a már megszerzett helyi hozzáférés bővítésére is használható, például rejtett hátsó ajtók integrálása a használt alkalmazásokba, valamint a biztonsági kutatók elkerülése a rosszindulatú programok elemzése során.
A fájlok megszemélyesítése utáni műveletet akkor hajtják végre, amikor az alkalmazás végrehajtja az első SELECT kérést a módosított adatbázis táblájához.
Példaként bemutattuk a kód futtatásának képességét az iOS rendszeren a címjegyzék megnyitásakor, a fájl az adatbázissal «Címjegyzék.sqlitedb»Amit a javasolt módszerrel módosítottak.
A támadáshoz sebezhetőséget használtak az fts3_tokenizer függvényben (CVE-2019-8602, a mutató levonásának képessége), javítva az áprilisi SQLite 2.28 frissítésben, valamint egy további biztonsági rés az ablakfunkciók megvalósításában.
Ezen túlmenően, bemutatja a háttér-kiszolgáló távoli vezérlésének lefoglalását a támadóktól PHP-ben írva, amely az elfogott jelszavakat rosszindulatú kód-műveletek során halmozza fel (az elfogott jelszavakat SQLite adatbázis formájában továbbították).
A támadási módszer kétféle technikán alapszik, a Lekérdezés eltérítés és a Lekérdezés orientált programozás használatával, amelyek lehetővé teszik az SQLite motor memóriasérüléséhez vezető tetszőleges problémák kihasználását.
A "Lekérdezés eltérítése" lényege az "sql" mező tartalmának cseréje az adatbázis struktúráját meghatározó sqlite_master szolgáltatási táblázatban. A megadott mező tartalmazza az adatbázisban található objektumok felépítésének leírására használt DDL (Data Definition Language) blokkot.
A leírás normál SQL szintaxissal, azaz. A "CREATE TABLE" konstrukciót, amelyet az adatbázis inicializálása során hajtanak végre (az sqlite3LocateTable függvény első végrehajtása során), a memóriában lévő táblához társított belső struktúrák létrehozására használják.
Az ötlet az, hogy a "CREATE TABLE" és a "CREATE VIEW" cseréje eredményeként, az adatbázis bármilyen hozzáférését a nézetének meghatározásával lehet szabályozni.
Másrészt a "CREATE VIEW" paranccsal egy "SELECT" műveletet csatolnak a táblához, amelyet a "CREATE TABLE" helyett meghívnak, és lehetővé teszi a támadó számára az SQLite tolmács különböző részeihez való hozzáférést.
Emellett a támadás legegyszerűbb módja a "load_extension" függvény meghívása, amely lehetővé teszi, hogy a támadó tetszőleges könyvtárat tölthessen be a kiterjesztéssel, de ez a funkció alapértelmezés szerint le van tiltva.
Támadás végrehajtásához a SELECT művelet végrehajtásának képessége mellett javasoljuk a lekérdezésorientált programozási technikát, amely lehetővé teszi az SQLite memóriasérüléshez vezető problémáinak kihasználását.
A technika a Return Oriented Programming (ROP) -ra emlékeztet, de nem létező gépi kódrészleteket használ, de a SELECT-en belül a lekérdezések ("kütyük") felépítéséhez beszúrják az alkérdezések halmazába.
forrás: https://threatpost.com/