Error de Magellan: desbordamiento de búfer o expedición alrededor del mundo usando SQLite FTS

De alguna manera evité el reciente error de Magellan en Habré y las vulnerabilidades relacionadas con él, intentaré solucionar esta omisión.


Un poco de historia


  • El 1 de noviembre de 2018, un informe de error número 900910 voló a Chromium: "Múltiples problemas en SQLite a través de WebSQL". El error es reportado por Wenxiang Qian del Equipo Tencent Blade.
  • El 5 de noviembre de 2018, el error se cierra en el núcleo de la biblioteca SQLite (FTS3), donde en realidad vive casi desde el momento en que se creó el módulo, es decir. desde noviembre de 2009.
  • 28 de noviembre de 2018 se fusiona en cromo
  • Un poco más tarde, el Equipo Tencent Blade publica un mensaje de error, dándole el nombre de Magellan, especialmente sin revelar detalles, e indicando que la publicación de exploits y PoC prefabricados aún no está planificada.
  • Una semana después, Internet está lleno de PoC, fallando Chrome, Electron dev-framework, etc. La evidencia y cualquier otra información de que la vulnerabilidad se utilizó con fines maliciosos todavía no lo es.
  • DRH , confirmó sospechas en Hacker News de que la vulnerabilidad existe (al menos si se permite la ejecución de una consulta SQL "extraña" o una inyección SQL de un escenario similar).

¿Qué podría ser vulnerable?


Potencialmente, todos los dispositivos y programas que usan SQLite (con FTS habilitado) o que usan o se basan en aplicaciones basadas en él (como Chromium). La medida en que pueden verse afectados y el efecto de una posible "pérdida" dependen de si se encuentra un vector de ataque adecuado.


Un poco más sobre Magellan SQLite BUG


El error está asociado con el desbordamiento de la suma de enteros, también conocido como desbordamiento de enteros , que puede ser causado en el subsistema FTS3 / 4 al cambiar el índice FTS de la tabla, lo que a su vez puede conducir a la reescritura de la memoria o la terminación con una excepción.


La aplicación artificial dirigida de este desbordamiento de enteros, a través del "recorte" competente de las memorias intermedias de escritura, conduce al desbordamiento de memoria y puede utilizarse en el futuro mediante consultas SQL especialmente creadas.


Como resultado, en teoría, muchas aplicaciones que usan SQLite (con tablas virtuales FTS) y, en particular, navegadores populares que admiten SQLite basado en SQLite con FTS habilitado (por ejemplo, Google Chrome, Chromium, Opera, Slimjet Browser, SRWare Iron, Torch, pueden ser vulnerables). Comodo Dragon, CoolNovo, Yandex Browser, Vivaldi, etc.).


Las bases de datos SQLite son generalmente muy populares, se proporcionan por medio de más de una docena de lenguajes de programación, cadenas de herramientas, marcos, etc., son utilizadas por aplicaciones tanto para dispositivos móviles como para computadoras completas, y a menudo se encuentran incluso en soluciones de servidor. Entonces, por ejemplo, los navegadores web populares como Google Chrome, Mozilla Firefox y Yandex Browser, muchos mensajeros instantáneos (por ejemplo, WhatsApp, Viber, WeChat y otros) almacenan datos en este formato, etc. etc.


El mismo Fossil SCM , por ejemplo, utiliza la base de datos SQLite para almacenar el historial de revisiones y le permite usar la indexación de texto completo a través de FTS (y proporciona acceso a él desde la interfaz de usuario web / UUP, donde, por ejemplo, existe la posibilidad de crear sus propias consultas SQL, por ejemplo, informes de tickets personalizados etc.)


Actualización: DRH, siendo coautor y desarrollador de Fossil, aparentemente pensó lo mismo, y ya " cerró el agujero " al actualizar SQLite a 3.26.0


Tal desbordamiento "predecible" no es algo muy agradable en sí mismo, pero si recuerda qué puede almacenarse exactamente en el banco mismo (desde el contenido de las revistas hasta las propias tablas) ...
Entonces, no sean camaradas perezosos ... y estén actualizados, actualizados.


¿Dónde conseguir la solución?


El parche [940f2adc8541a838] se proporciona como parte de la actualización SQLite 3.25.3 (a la que también se han actualizado Chromium y compañía, por ejemplo, Chrome en la versión 71.0.3578.80).


SQLite versión 3.26 también proporciona características de seguridad adicionales para contenedores FTS, por ejemplo:

soporte para tablas de sombra de solo lectura cuando la opción SQLITE_DBCONFIG_DEFENSIVE está habilitada

¿Cuál es el peligro de esta vulnerabilidad?


Crítico Permite la ejecución remota de código. También es probable una pérdida de memoria y un bloqueo del programa.


¿Hay algún ejemplo de exploits listos para explotar la vulnerabilidad?


Si


En particular, el Equipo Tencent Blade afirma que llevaron a cabo con éxito un ataque a Google Home utilizando esta vulnerabilidad (el acceso a la descripción del problema en el rastreador de errores de Google está cerrado) y, como se mencionó anteriormente, no hay ningún plan para revelar el código de explotación en este momento.


Términos de uso de la vulnerabilidad?


La vulnerabilidad se puede realizar de forma remota, por ejemplo, cuando se invoca una determinada página web en un navegador, o en cualquier escenario similar, por ejemplo, permitiendo ejecutar sentencias SQL (si FTS no está deshabilitado, si se detecta un posible vector de ataque y / o la presencia u ocurrencia de otros factores que conducen a la explotación vulnerabilidades).


Por cierto, este no es el primer error del tipo de desbordamiento y desbordamiento de búfer en SQLite específicamente y en el módulo FTS en particular (por ejemplo [56be976859294027] ), pero es probablemente el más grande de su tipo en importancia, impacto teórico y "escala" relativa en las formas de posible aplicación y evaluación de consecuencias de esto

Source: https://habr.com/ru/post/es433596/


All Articles