UNA VULNERABILIDAD BASTANTE CRÍTICA CVE-2022-35737 AFECTA TODAS LAS VERSIONES DE SQLITE LANZADAS EN LOS ÚLTIMOS 22 AÑOS PARCHE INMEDIATAMENTE

Casi todo usa SQLite, incluidos los teléfonos móviles, otros lenguajes informáticos y los acorazados de la marina. Hay una larga historia de que el motor de base de datos de código abierto es particularmente seguro. Debido a su licencia extremadamente indulgente y su naturaleza portátil y multiplataforma, SQLite es el motor de base de datos más utilizado. Está construido en C y puede convertirse en una biblioteca que expone las API para que las utilicen los programadores de aplicaciones o una aplicación independiente.

La vulnerabilidad de la API de la biblioteca SQLite, CVE-2022-35737, está siendo publicada por expertos de Trail of Bits . La versión 3.39.2 de SQLite, que estuvo disponible el 17 de octubre de 2000, se dirigió a CVE-2022-35737 (lanzada el 21 de julio de 2022).

En los sistemas de 64 bits, CVE-2022-35737 es explotable y la explotabilidad depende de cómo se compile el software. Cuando la biblioteca se compila sin valores controlados de pila, se confirma la ejecución de código arbitrario; cuando los canarios de pila están presentes, no está confirmado. La denegación de servicio se confirma en todas las circunstancias.
Cuando se proporcionan entradas de cadena grandes a las implementaciones de SQLite de los métodos printf y cuando la cadena de formato contiene los tipos de reemplazo de formato %Q, %q o %w, CVE-2022-35737 puede explotarse en sistemas susceptibles. Esto es suficiente para provocar el fracaso del programa. El equipo también demuestra cómo, en el peor de los casos, la ejecución de código arbitrario o el bloqueo y el bucle del programa son concebibles si la cadena de formato contiene el ! carácter especial para permitir el escaneo de caracteres Unicode (casi).

El 100 % de las pruebas de rama se han ejecutado en SQLite. Los expertos encontraron esta vulnerabilidad a pesar de las pruebas, lo que plantea la cuestión de cómo las pruebas no la detectaron.

La vulnerabilidad no se puede explotar en la aplicación SQLite ya que tiene un límite de memoria interna de 1 GB. La idea de que SQLite no maneja cadenas grandes, que son esenciales para explotar esta vulnerabilidad, “define” el problema. Las aplicaciones pueden contactar directamente con las rutinas vulnerables porque las API de C que ofrece SQLite no requieren que las entradas cumplan con el límite de memoria. Los desarrolladores de aplicaciones no pueden imponer restricciones de tamaño de entrada en estos métodos porque SQLite no se comunica con la API de que no se permiten cadenas grandes. Asignar cadenas de 1 GB como entrada era imposible cuando este código se creó inicialmente, ya que la mayoría de las CPU solo tenían registros de 32 bits y 4 GB de memoria accesible. La asignación de cadenas tan grandes es posible y las circunstancias susceptibles se pueden lograr ahora que las computadoras de 64 bits se usan ampliamente.

El 14 de julio de 2022, se notificó una vulnerabilidad al Centro de Coordinación del Equipo de Respuesta a Emergencias Informáticas (CERT).
El 15 de julio de 2022, CERT/CC notificó a los mantenedores de SQLite sobre una vulnerabilidad.
La vulnerabilidad se confirmó el 18 de julio de 2022 y se actualizó el código fuente.
El 21 de julio de 2022, los desarrolladores de SQLite publicaron la versión 3.39.2 con un parche.