Se
han publicado tres vulnerabilidades en
MariaDB que podrían permitir a un atacante con acceso a una base de datos
en el servidor, causar una denegación de servicio.
MariaDB es un sistema gestor de
bases de datos basado en MySQL. MySQL pertenecía a Sun Microsystems (también
dueño de Java) y estaba publicado con una licencia libre. Al adquirir Oracle a
Sun, la licencia de MySQL también cambió a una de tipo privativo, por lo que la
comunidad de desarrolladores hizo un "fork"
o copia de la versión libre de MySQL y siguieron desarrollándola bajo el nombre
de MariaDB y con licencia libre.
Las tres vulnerabilidades
encontradas en MariaDB pueden ser aprovechadas para causar una denegación de servicio del gestor de bases de datos (un
cuelgue).
El primer error (https://mariadb.atlassian.net/browse/MDEV-405)
se puede producir al usar un puntero que apunta a NULL. Esto se da dentro de la
función 'test_if_skip_sort_order()'
al ejecutar subconsultas (un SELECT dentro de otro SELECT), además de tener que
usar 'GROUP BY' y 'HAVING' en dicha subconsulta.
La segunda vulnerabilidad (https://mariadb.atlassian.net/browse/MDEV-430)
reside en la función 'select_describe()'
al realizar subconsultas con ciertas características. En la prueba de concepto
expuesta se utilizan dos subconsultas con funciones agregadas (MAX) y un
semijoin. Además de todo esto, se aplica el comando EXPLAIN, que es una
herramienta orientada a desarrolladores que proporciona MySQL y MariaDB para obtener
un breve resumen de la operación que está realizando internamente el motor de
bases de datos, y así, poder optimizar la sentencia. Con esta vulnerabilidad,
aunque más complicada de explotar, también se realiza una denegación de
servicio, provocando un "cuelgue"
en el gestor de base de datos.
La tercera vulnerabilidad (https://bugs.launchpad.net/maria/+bug/1039277)
reside en la ejecución en paralelo de consultas que están en la memoria caché
de servidor. En la prueba de concepto presentada, se realiza una consulta con subconsultas
3 veces. La primera de ellas es para obtener los datos y que el servidor la
tenga en memoria caché. Posteriormente se realizan las otras dos consultas para
activar el paralelismo y provocar la denegación de servicio.
Estas tres vulnerabilidades
pertenecen a la versión 5.5.25, aunque no se descarta que existan en otras
versiones. Los tres errores, sin CVE asignado, están solucionados en la versión
5.5.27 de MariaDB.
Más información:
MariaDB 5.5.27 - Changelog:
MariaDB - MDEV-405:
MariaDB - MDEV-430:
MariaDB - Crash in sql_cache.cc:
Antonio Sánchez
No hay comentarios:
Publicar un comentario