Forskere fra Check Point
For et vellykket angrep er det nødvendig å kunne endre databasefilene til de angrepne applikasjonene, noe som begrenser metoden til angrep på applikasjoner som bruker SQLite-databasen som et format for overføring og inndata. Metoden kan også brukes til å utvide eksisterende lokal tilgang, for eksempel for å integrere skjulte bakdører i brukte applikasjoner, samt til å omgå sikkerhetsmekanismer når sikkerhetsforskere analyserer skadevare. Operasjon etter filerstatning utføres i det øyeblikket applikasjonen utfører den første SELECT-spørringen mot en tabell i den modifiserte databasen.
Som et eksempel demonstrerte vi muligheten til å kjøre kode i iOS når du åpner en adressebok, filen med "AddressBook.sqlitedb"-databasen ble endret ved å bruke den foreslåtte metoden. Angrepet brukte en sårbarhet i fts3_tokenizer-funksjonen (CVE-2019-8602, peker-dereference-funksjon), rettet i april SQLite 2.28-oppdateringen, sammen med en annen
Angrepsmetoden er basert på bruk av to teknikker "Query Hijacking" og "Query Oriented Programming", som tillater utnyttelse av vilkårlige problemer som fører til minnekorrupsjon i SQLite-motoren. Essensen av "Query Hijacking" er å erstatte innholdet i "sql"-feltet i sqlite_master-tjenestetabellen, som bestemmer strukturen til databasen. Det angitte feltet inneholder en DDL-blokk (Data Definition Language) som brukes til å beskrive strukturen til objekter i databasen. Beskrivelsen er spesifisert ved bruk av standard SQL-syntaks, dvs. konstruksjonen "CREATE TABLE" brukes,
som utføres under initialiseringsprosessen for databasen (under den første lanseringen
sqlite3LocateTable-funksjoner for å lage tabellrelaterte interne strukturer i minnet.
Tanken er at, som et resultat av å erstatte "CREATE TABLE" med "CREATE VIEW", blir det mulig å kontrollere enhver tilgang til databasen ved å definere din egen visning. Ved å bruke "CREATE VIEW" er en "SELECT"-operasjon bundet til tabellen, som vil bli kalt i stedet for "CREATE TABLE" og lar deg få tilgang til forskjellige deler av SQLite-tolken. Deretter vil den enkleste angrepsmetoden være å kalle «load_extension»-funksjonen, som lar deg laste et vilkårlig bibliotek med en utvidelse, men denne funksjonen er deaktivert som standard.
For å utføre et angrep når det er mulig å utføre «SELECT»-operasjonen, foreslås «Query Oriented Programming»-teknikken, som gjør det mulig å utnytte problemer i SQLite som fører til minnekorrupsjon. Teknikken minner om returorientert programmering (
Kilde: opennet.ru