La vulnerabilidad de día cero en HyperSQL DataBase HSQLDB deja la biblioteca vulnerable a RCE

Los investigadores de seguridad han descubierto una vulnerabilidad grave en HyperSQL DataBase (HSQLDB) que presenta un riesgo de ejecución remota de código (RCE).

HSQLDB ofrece un sistema de base de datos relacional SQL basado en Java. La tecnología que es la segunda base de datos SQL integrada más popular con 100 millones de descargas hasta la fecha, se utiliza para el desarrollo, prueba e implementación de aplicaciones de bases de datos.

Más de 3120 paquetes de Maven utilizan HSQLDB, incluidos LibreOffice, JBoss, Log4j, Hibernate y Spring-Boot, así como varios paquetes de software empresarial.

Problema de análisis

Los investigadores de seguridad de Code Intelligence descubrieron la vulnerabilidad RCE (rastreada como CVE-2022-41853 y calificada con una puntuación de gravedad CVSS casi máxima de 9,8) después de ejecutar una serie de pruebas de fuzzing.

Más precisamente, descubrieron que el procedimiento de análisis de datos en formato binario y de texto en los componentes java.sql.Statement y java.sql.PreparedStatement de la tecnología era defectuoso.

Todas las versiones del software hasta HSQLDB versión 2.7.0 inclusive son vulnerables. Code Intelligence se puso en contacto con HSQL Development Group, los desarrolladores de HSQLDB, quienes respondieron de inmediato creando una corrección y una solución alternativa que ayuda a proteger las versiones anteriores.

HSQLDB aún no ha respondido a una solicitud de comentarios pero los investigadores de seguridad de Code Intelligence han confirmado que se está preparando un parche.

“El problema ya está solucionado en sentido ascendente y estará disponible en la próxima versión”, dijo Code Intelligence. “A partir de la versión 2.7.1. la propiedad hsqldb.method_class_names debe definirse con una lista de nombres de clase o comodines si se utiliza algún método estático de Java como destino de rutina HSQLDB”.

Las implementaciones anteriores causaron un problema porque el uso de métodos estáticos de Java, excepto aquellos en java.lang.Math, no debería permitirse sin definir la propiedad del sistema o de lo contrario pueden surgir problemas.

Causa principal

Un informe técnico del problema realizado por Code Intelligence explica la causa raíz del problema con más profundidad.

“De forma predeterminada, las declaraciones de SQL se pueden usar para llamar a cualquier método estático desde cualquier clase de Java en la ruta de clase. HSQLDB (HyperSQL DataBase) permitía el uso directo de métodos”, explica una publicación en Medium la semana pasada.

La vulnerabilidad significa que el uso de java.sql.Statement o java.sql.PreparedStatement en versiones previas al parche de HSQLDB junto con una entrada que no es de confianza puede hacer que las aplicaciones sean vulnerables a un ataque RCE.

En respuesta a las consultas Khaled Yakdan, cofundador de Code Intelligence, explicó que una aplicación no tiene que ser vulnerable a la inyección SQL para que surja el problema.

“La configuración predeterminada actual permite el uso de métodos estáticos de cualquier clase que esté en el classpath”, dijo Yakdan. “Además, se permite el uso directo de métodos para la compatibilidad heredada”.

Yakden se negó a especular sobre qué aplicaciones en particular podrían ser vulnerables, pero pudo explicar el impacto de esta en los casos en que se activó.

“Solo nos enfocamos en encontrar vulnerabilidades y no investigamos qué bases de código lo son, dijo Yakden. “El impacto de este CVE es que si usa HyperSQL para procesar consultas que incluyen información de usuario (que no es de confianza), los atacantes pueden hacer que su aplicación ejecute código arbitrario”.

Fuente: https://portswigger.net/daily-swig/hypersql-database-flaw-leaves-library-vulnerable-to-rce