Forskere fra Check Point
For et vellykket angreb er det nødvendigt at være i stand til at ændre databasefilerne for de angrebne applikationer, hvilket begrænser metoden til angreb på applikationer, der bruger SQLite-databasen som et format for transit og inputdata. Metoden kan også bruges til at udvide eksisterende lokal adgang, for eksempel til at integrere skjulte bagdøre i brugte applikationer, samt til at omgå sikkerhedsmekanismer, når sikkerhedsforskere analyserer malware. Operation efter filsubstitution udføres i det øjeblik, applikationen udfører den første SELECT-forespørgsel mod en tabel i den ændrede database.
Som et eksempel demonstrerede vi evnen til at køre kode i iOS, når du åbner en adressebog, filen med "AddressBook.sqlitedb"-databasen blev ændret ved hjælp af den foreslåede metode. Angrebet brugte en sårbarhed i fts3_tokenizer-funktionen (CVE-2019-8602, pointer dereference-funktion), rettet i april SQLite 2.28-opdateringen, sammen med en anden
Angrebsmetoden er baseret på brugen af to teknikker "Query Hijacking" og "Query Oriented Programming", som tillader udnyttelse af vilkårlige problemer, der fører til hukommelseskorruption i SQLite-motoren. Essensen af "Query Hijacking" er at erstatte indholdet af "sql"-feltet i sqlite_master-servicetabellen, som bestemmer strukturen af databasen. Det angivne felt indeholder en DDL (Data Definition Language) blok, der bruges til at beskrive strukturen af objekter i databasen. Beskrivelsen er specificeret ved brug af standard SQL-syntaks, dvs. konstruktionen "CREATE TABLE" bruges,
som udføres under databaseinitialiseringsprocessen (under den første lancering
sqlite3LocateTable-funktioner til at skabe tabelrelaterede interne strukturer i hukommelsen.
Tanken er, at som et resultat af at erstatte "CREATE TABLE" med "CREATE VIEW", bliver det muligt at kontrollere enhver adgang til databasen ved at definere din egen visning. Ved at bruge "CREATE VIEW" er en "SELECT"-operation bundet til tabellen, som kaldes i stedet for "CREATE TABLE" og giver dig adgang til forskellige dele af SQLite-fortolkeren. Dernæst ville den enkleste metode til angreb være at kalde funktionen "load_extension", som giver dig mulighed for at indlæse et vilkårligt bibliotek med en udvidelse, men denne funktion er deaktiveret som standard.
For at udføre et angreb, når det er muligt at udføre "SELECT"-operationen, foreslås teknikken "Query Oriented Programming", som gør det muligt at udnytte problemer i SQLite, der fører til hukommelseskorruption. Teknikken minder om returorienteret programmering (
Kilde: opennet.ru