Investigadors de Check Point
Per a un atac reeixit, és necessari poder modificar els fitxers de base de dades de les aplicacions atacades, la qual cosa limita el mètode als atacs a aplicacions que utilitzen la base de dades SQLite com a format de trànsit i dades d'entrada. El mètode també es pot utilitzar per ampliar l'accés local existent, per exemple, per integrar les portes del darrere ocultes a les aplicacions utilitzades, així com per evitar els mecanismes de seguretat quan s'analitza programari maliciós per part dels investigadors de seguretat. L'operació després de la substitució de fitxers es porta a terme en el moment que l'aplicació executa la primera consulta SELECT contra una taula de la base de dades modificada.
Com a exemple, vam demostrar la capacitat d'executar codi a iOS en obrir una llibreta d'adreces, el fitxer amb la base de dades "AddressBook.sqlitedb" es va modificar mitjançant el mètode proposat. L'atac va utilitzar una vulnerabilitat a la funció fts3_tokenizer (CVE-2019-8602, capacitat de desreferència del punter), corregida a l'actualització SQLite 2.28 d'abril, juntament amb una altra
El mètode d'atac es basa en l'ús de dues tècniques "Segrest de consultes" i "Programació orientada a consultes", que permeten explotar problemes arbitraris que condueixen a la corrupció de la memòria en el motor SQLite. L'essència del "Segrest de consultes" és substituir el contingut del camp "sql" a la taula de servei sqlite_master, que determina l'estructura de la base de dades. El camp especificat conté un bloc DDL (Data Definition Language) utilitzat per descriure l'estructura dels objectes de la base de dades. La descripció s'especifica mitjançant la sintaxi SQL estàndard, és a dir. s'utilitza la construcció "CREAR TAULA",
que s'executa durant el procés d'inicialització de la base de dades (durant el primer llançament
Funcions sqlite3LocateTable per crear estructures internes relacionades amb taules a la memòria.
La idea és que, com a resultat de substituir “CREATE TABLE” per “CREATE VIEW”, sigui possible controlar qualsevol accés a la base de dades definint la vostra pròpia vista. Utilitzant "CREATE VIEW" una operació "SELECT" està vinculada a la taula, que es cridarà en lloc de "CREATE TABLE" i us permet accedir a diferents parts de l'intèrpret SQLite. A continuació, el mètode més senzill d'atac seria cridar la funció "load_extension", que us permet carregar una biblioteca arbitrària amb una extensió, però aquesta funció està desactivada per defecte.
Per dur a terme un atac quan és possible realitzar l'operació “SELECT”, es proposa la tècnica de “Programació orientada a consultes”, que permet explotar problemes en SQLite que condueixen a la corrupció de la memòria. La tècnica recorda la programació orientada al retorn (
Font: opennet.ru