È stata introdotta una nuova tecnica per sfruttare le vulnerabilità in SQLite.

Ricercatori di Check Point scoperto alla conferenza DEF CON, dettagli di una nuova tecnica per attaccare le applicazioni utilizzando versioni vulnerabili di SQLite. Il metodo Check Point considera i file di database come un'opportunità per integrare scenari per sfruttare le vulnerabilità in vari sottosistemi interni SQLite che non sono direttamente sfruttabili. I ricercatori hanno anche preparato una tecnica per sfruttare le vulnerabilità codificando l'exploit sotto forma di una catena di query SELECT nel database SQLite, che consente di aggirare ASLR.

Per un attacco riuscito è necessario poter modificare i file del database delle applicazioni attaccate, il che limita il metodo agli attacchi contro applicazioni che utilizzano il database SQLite come formato per il transito e l'immissione dei dati. Il metodo può essere utilizzato anche per espandere l'accesso locale esistente, ad esempio per integrare backdoor nascoste nelle applicazioni utilizzate, nonché per aggirare i meccanismi di sicurezza durante l'analisi del malware da parte dei ricercatori di sicurezza. L'operazione dopo la sostituzione del file viene eseguita nel momento in cui l'applicazione esegue la prima query SELECT su una tabella nel database modificato.

Ad esempio, abbiamo dimostrato la possibilità di eseguire codice in iOS all'apertura di una rubrica, il file con il database "AddressBook.sqlitedb" è stato modificato utilizzando il metodo proposto. L'attacco ha utilizzato una vulnerabilità nella funzione fts3_tokenizer (CVE-2019-8602, capacità di dereferenziazione del puntatore), risolta nell'aggiornamento SQLite 2.28 di aprile, insieme a un'altra vulnerabilità vulnerabilità nell'implementazione delle funzioni della finestra. Inoltre è stato dimostrato l’utilizzo del metodo scritto in PHP per assumere da remoto il controllo del server backend dell’aggressore, che accumula le password intercettate durante l’esecuzione di codice dannoso (le password intercettate sono state trasmesse sotto forma di una banca dati SQLite).

Il metodo di attacco si basa sull'utilizzo di due tecniche “Query Hijacking” e “Query Oriented Programming”, che consentono di sfruttare problemi arbitrari che portano alla corruzione della memoria nel motore SQLite. L'essenza del "Query Hijacking" è sostituire il contenuto del campo "sql" nella tabella di servizio sqlite_master, che determina la struttura del database. Il campo specificato contiene un blocco DDL (Data Definition Language) utilizzato per descrivere la struttura degli oggetti nel database. La descrizione viene specificata utilizzando la sintassi SQL standard, ad es. viene utilizzata la costruzione “CREATE TABLE”,
che viene eseguito durante il processo di inizializzazione del database (durante il primo avvio
funzioni sqlite3LocateTable per creare strutture interne relative alle tabelle in memoria.

L'idea è che, sostituendo “CREATE TABLE” con “CREATE VIEW”, diventa possibile controllare qualsiasi accesso al database definendo la propria vista. Utilizzando "CREATE VIEW" viene associata alla tabella un'operazione "SELECT", che verrà chiamata al posto di "CREATE TABLE" e permette di accedere a diverse parti dell'interprete SQLite. Successivamente, il metodo di attacco più semplice sarebbe chiamare la funzione “load_extension”, che consente di caricare una libreria arbitraria con un'estensione, ma questa funzione è disabilitata per impostazione predefinita.

Per effettuare un attacco quando è possibile eseguire l'operazione “SELECT”, viene proposta la tecnica della “Query Oriented Programming”, che consente di sfruttare problemi di SQLite che portano alla corruzione della memoria. La tecnica ricorda la programmazione orientata al rendimento (POR, Programmazione orientata al ritorno), ma utilizza frammenti di codice macchina non esistenti per costruire una catena di chiamate ("gadget"), ma inserisce un insieme di sottoquery all'interno di SELECT.

È stata introdotta una nuova tecnica per sfruttare le vulnerabilità in SQLite.

È stata introdotta una nuova tecnica per sfruttare le vulnerabilità in SQLite.

Fonte: opennet.ru

Aggiungi un commento