En ny teknikk for å utnytte sårbarheter i SQLite har blitt introdusert.

Forskere fra Check Point avdekket på DEF CON-konferansen, detaljer om en ny teknikk for å angripe applikasjoner som bruker sårbare versjoner av SQLite. Check Point-metoden vurderer databasefiler som en mulighet til å integrere scenarier for å utnytte sårbarheter i ulike interne SQLite-undersystemer som ikke kan utnyttes direkte. Forskere har også utarbeidet en teknikk for å utnytte sårbarheter ved å kode utnyttelsen i form av en kjede av SELECT-spørringer i SQLite-databasen, som lar deg omgå ASLR.

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 sårbarhet i implementering av vindusfunksjoner. I tillegg ble det demonstrert bruken av metoden for eksternt å ta kontroll over en angripers backend-server skrevet i PHP, som akkumulerer passord som fanges opp under driften av ondsinnet kode (de avlyttede passordene ble overført i form av en SQLite-database).

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 (ROP, returorientert programmering), men bruker ikke eksisterende maskinkodebiter for å bygge en kjede av anrop («gadgets»), men setter inn et sett med underspørringer i SELECT.

En ny teknikk for å utnytte sårbarheter i SQLite har blitt introdusert.

En ny teknikk for å utnytte sårbarheter i SQLite har blitt introdusert.

Kilde: opennet.ru

Legg til en kommentar