Introduciuse unha nova técnica para explotar vulnerabilidades en SQLite.

Investigadores de Check Point descuberto na conferencia DEF CON, detalles dunha nova técnica para atacar aplicacións usando versións vulnerables de SQLite. O método Check Point considera os ficheiros de bases de datos como unha oportunidade para integrar escenarios para explotar vulnerabilidades en varios subsistemas internos de SQLite que non son directamente explotables. Os investigadores tamén prepararon unha técnica para explotar vulnerabilidades codificando o exploit en forma de cadea de consultas SELECT na base de datos SQLite, o que permite evitar ASLR.

Para un ataque exitoso, é necesario poder modificar os ficheiros da base de datos das aplicacións atacadas, o que limita o método aos ataques a aplicacións que utilizan a base de datos SQLite como formato de tránsito e datos de entrada. O método tamén se pode usar para ampliar o acceso local existente, por exemplo, para integrar portas traseiras ocultas nas aplicacións usadas, así como para evitar os mecanismos de seguridade ao analizar software malicioso por parte dos investigadores de seguridade. A operación despois da substitución de ficheiros realízase no momento en que a aplicación executa a primeira consulta SELECT contra unha táboa da base de datos modificada.

Como exemplo, demostramos a capacidade de executar código en iOS ao abrir unha axenda de enderezos, o ficheiro coa base de datos "AddressBook.sqlitedb" foi modificado mediante o método proposto. O ataque utilizou unha vulnerabilidade na función fts3_tokenizer (CVE-2019-8602, capacidade de desreferencia do punteiro), corrixida na actualización SQLite 2.28 de abril, xunto con outra vulnerabilidade na implementación de funcións de fiestra. Ademais, demostrouse o uso dun método para tomar de forma remota o control do servidor backend dun atacante escrito en PHP, que acumula contrasinais interceptados durante a operación de código malicioso (os contrasinais interceptados foron transmitidos en forma de base de datos SQLite).

O método de ataque baséase no uso de dúas técnicas "Secuestro de consultas" e "Programación orientada a consultas", que permiten explotar problemas arbitrarios que conducen á corrupción da memoria no motor SQLite. A esencia do "Secuestro de consultas" é substituír o contido do campo "sql" na táboa de servizos sqlite_master, que determina a estrutura da base de datos. O campo especificado contén un bloque DDL (Data Definition Language) usado para describir a estrutura dos obxectos da base de datos. A descrición especifícase mediante a sintaxe SQL estándar, é dicir. utilízase a construción "CREATE TABLE",
que se executa durante o proceso de inicialización da base de datos (durante o primeiro lanzamento
sqlite3LocateTable funcións para crear estruturas internas relacionadas coa táboa na memoria.

A idea é que, como resultado de substituír “CREATE TABLE” por “CREATE VIEW”, sexa posible controlar calquera acceso á base de datos definindo a súa propia vista. Usando "CREATE VIEW" unha operación "SELECT" está ligada á táboa, que se chamará en lugar de "CREATE TABLE" e permítelle acceder a diferentes partes do intérprete SQLite. A continuación, o método máis sinxelo de ataque sería chamar á función "load_extension", que permite cargar unha biblioteca arbitraria cunha extensión, pero esta función está desactivada por defecto.

Para realizar un ataque cando é posible realizar a operación “SELECT”, proponse a técnica de “Programación Orientada a Consultas”, que permite explotar problemas en SQLite que dan lugar á corrupción da memoria. A técnica lembra a programación orientada ao retorno (R.O.P., Programación orientada a retorno), pero usa fragmentos de código máquina non existentes para construír unha cadea de chamadas ("gadgets"), pero insírese nun conxunto de subconsultas dentro de SELECT.

Introduciuse unha nova técnica para explotar vulnerabilidades en SQLite.

Introduciuse unha nova técnica para explotar vulnerabilidades en SQLite.

Fonte: opennet.ru

Engadir un comentario