En ny teknik til at udnytte sårbarheder i SQLite er blevet introduceret.

Forskere fra Check Point afdækket på DEF CON-konferencen, detaljer om en ny teknik til at angribe applikationer ved hjælp af sårbare versioner af SQLite. Check Point-metoden betragter databasefiler som en mulighed for at integrere scenarier for udnyttelse af sårbarheder i forskellige interne SQLite-undersystemer, der ikke kan udnyttes direkte. Forskere har også udarbejdet en teknik til at udnytte sårbarheder ved at indkode udnyttelsen i form af en kæde af SELECT-forespørgsler i SQLite-databasen, som giver dig mulighed for at omgå ASLR.

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 sårbarhed i implementering af vinduesfunktioner. Derudover blev brugen af ​​en metode til at fjernovertage kontrollen over en hackers backend-server skrevet i PHP, som akkumulerer adgangskoder opsnappet under driften af ​​ondsindet kode (de opsnappede adgangskoder blev transmitteret i form af en SQLite-database), demonstreret.

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 (ROP, returorienteret programmering), men bruger ikke eksisterende uddrag af maskinkode til at bygge en kæde af opkald ("gadgets"), men indsætter et sæt underforespørgsler i SELECT.

En ny teknik til at udnytte sårbarheder i SQLite er blevet introduceret.

En ny teknik til at udnytte sårbarheder i SQLite er blevet introduceret.

Kilde: opennet.ru

Tilføj en kommentar