Forskare frÄn Check Point pÄ DEF CON-konferensen, detaljer om en ny attackteknik pÄ applikationer som anvÀnder sÄrbara versioner av SQLite. Check Point-metoden betraktar databasfiler som en möjlighet att integrera scenarier för att utnyttja sÄrbarheter i olika interna SQLite-undersystem som inte Àr direkt exploaterbara. Forskare har ocksÄ förberett en teknik för att utnyttja sÄrbarheter genom att koda exploateringen i form av en kedja av SELECT-frÄgor i SQLite-databasen, vilket gör att du kan kringgÄ ASLR.
För en framgÄngsrik attack Àr det nödvÀndigt att kunna modifiera databasfilerna för de attackerade applikationerna, vilket begrÀnsar metoden till attacker pÄ applikationer som anvÀnder SQLite-databasen som ett format för överföring och indata. Metoden kan ocksÄ anvÀndas för att utöka befintlig lokal Ätkomst, till exempel för att integrera dolda bakdörrar i anvÀnda applikationer, samt för att kringgÄ sÀkerhetsmekanismer vid analys av skadlig programvara av sÀkerhetsforskare. Operation efter filsubstitution utförs i det ögonblick som applikationen kör den första SELECT-frÄgan mot en tabell i den modifierade databasen.
Som ett exempel visade vi möjligheten att köra kod i iOS nÀr du öppnade en adressbok, filen med databasen "AddressBook.sqlitedb" modifierades med den föreslagna metoden. Attacken anvÀnde en sÄrbarhet i fts3_tokenizer-funktionen (CVE-2019-8602, pekarereferensmöjlighet), fixad i April SQLite 2.28-uppdateringen, tillsammans med en annan vid implementering av fönsterfunktioner. Dessutom demonstrerades anvÀndningen av en metod för att pÄ distans ta kontroll över en angripares backend-server skriven i PHP, som ackumulerar lösenord som fÄngas upp under driften av skadlig kod (de fÄngade lösenorden överfördes i form av en SQLite-databas).
Attackmetoden Àr baserad pÄ anvÀndningen av tvÄ tekniker "Query Hijacking" och "Query Oriented Programming", som tillÄter utnyttjande av godtyckliga problem som leder till minneskorruption i SQLite-motorn. KÀrnan i "Query Hijacking" Àr att ersÀtta innehÄllet i "sql"-fÀltet i sqlite_master-tjÀnsttabellen, som bestÀmmer strukturen pÄ databasen. Det angivna fÀltet innehÄller ett DDL-block (Data Definition Language) som anvÀnds för att beskriva strukturen för objekt i databasen. Beskrivningen specificeras med standard SQL-syntax, dvs. konstruktionen "CREATE TABLE" anvÀnds,
som exekveras under databasinitieringsprocessen (under den första lanseringen
sqlite3LocateTable-funktioner för att skapa tabellrelaterade interna strukturer i minnet.
Tanken Ă€r att, som ett resultat av att ersĂ€tta âCREATE TABLEâ med âCREATE VIEWâ, blir det möjligt att kontrollera all Ă„tkomst till databasen genom att definiera din egen vy. Genom att anvĂ€nda "CREATE VIEW" binds en "SELECT"-operation till tabellen, som kommer att anropas istĂ€llet för "CREATE TABLE" och lĂ„ter dig komma Ă„t olika delar av SQLite-tolken. DĂ€refter skulle den enklaste attackmetoden vara att anropa funktionen "load_extension", som lĂ„ter dig ladda ett godtyckligt bibliotek med en tillĂ€gg, men denna funktion Ă€r inaktiverad som standard.
För att utföra en attack nÀr det Àr möjligt att utföra "SELECT"-operationen, föreslÄs tekniken "Query Oriented Programming", som gör det möjligt att utnyttja problem i SQLite som leder till minneskorruption. Tekniken pÄminner om returorienterad programmering (, returorienterad programmering), men anvÀnder inte befintliga fragment av maskinkod för att bygga en kedja av anrop ("prylar"), utan infogar i en uppsÀttning underfrÄgor i SELECT.
KĂ€lla: opennet.ru
