El grupo
Blade de Tencent ha descubierto un fallo de seguridad en SQLite, que permite
realizar RCE, o provocar rupturas inesperadas del programa que utiliza este
servicio.
SQLite es
un gestor de base de datos relacional y multiplataforma que encontramos embebido
en multitud de aplicaciones y sistemas. Lo que diferencia a SQLite de otros
SGBD es que no es un proceso independiente con el que el programa principal se
comunica, sino que se lanza con el programa pasando a ser parte integral del
mismo. Por eso esta vulnerabilidad estará presente durante largo tiempo en
diferentes sistemas y aplicaciones, ya que es necesario actualizar la librería
utilizada dentro de la aplicación.
Los
investigadores de Tencent han descubierto la posibilidad de encontrar fugas de
información del programa que se está ejecutando, detener su ejecución o incluso
conseguir ejecutar comandos de forma remota simplemente accediendo a una página
web malintencionada, si se da el caso en el que el navegador soporte SQLite
junto con la ya obsoleta API WebSQL, que es capaz de traducir el código del
exploit a sintaxis SQL. Firefox y Edge no dan soporte a WebSQL, pero otros
navegadores basados en el proyecto open-source de Chromium como motor del
navegador sí, como es el caso de Google Chrome, Opera, Vivaldi, etc.
Pero, aún
siendo los navegadores el principal objetivo de ataque, El equipo Blade afirmó
en este comunicado que “ha sido posible explotar ‘Google Home’ con esta
vulnerabilidad y actualmente no tienen pensado revelar el código utilizado para
explotarla”. Mostrando así que el fallo no solo afecta a algunos navegadores,
sino que todos los sistemas que utilicen SQLite que no estén actualizados y
cumplan las características necesarias son vulnerables.
El fallo
fue reportado al equipo de SQLite y actualizado en la versión SQLite 3.26.0 al
igual que se reportó a Chromium y se ha limitado el uso de WebSQL en la nueva
versión 71.
En esta
prueba de concepto se bloquea el proceso del rendizador utilizando ‘Magellan’.
Claro que
para que cause efecto es necesario utilizar el navegador adecuado, por ejemplo
Google Chrome en una versión menor que la 71. En el código podemos ver que se
utiliza el motor de búsqueda de texto completo (full-text) FTS3, y que se están
alterando los datos de las ‘shadow tables’ manualmente. Por otra parte, la nueva actualización de
SQLite da la opción de utilizar estas mismas tablas con permiso ‘read-only’, lo
que nos hace pensar en que el fallo nace en los permisos de acceso a las
‘shadow tables’.
Más información
- Zdnet https://www.zdnet.com/article/sqlite-bug-impacts-thousands-of-apps-including-all-chromium-based-browsers/#ftag=RSSbaffb68
- Tencent https://blade.tencent.com/magellan/index_en.html
- Github https://github.com/zhuowei/worthdoingbadly.com/blob/master/_posts/2018-12-14-sqlitebug.html
- SQLite Doc https://www.sqlite.org/fts3.html#*shadowtab