Inicio / Alerta Temprana / Avisos Seguridad / Vulnerabilidad en MySQL y MariaDB

Vulnerabilidad en MySQL y MariaDB

Fecha de publicación: 
11/06/2012
Importancia: 
5 - Crítica
Recursos afectados: 

Las builds oficiales no están afectadas. Los sistemas vulnerables dependen de la versión de la función memcmp() que haya sido utilizada en la compilación. En SecurityStreet han recopilado la siguiente información sobre versiones vulnerables:

  • Ubuntu Linux 64-bit ( 10.04, 10.10, 11.04, 11.10, 12.04)
  • OpenSuSE 12.1 64-bit MySQL 5.5.23-log
  • Fedora 16 64-bit
  • Arch Linux (versión sin especificar)

El investigador Joshua Drake ha publicado un programa en C que informa de si el sistema en el que se ejecuta es vulnerable.

Descripción: 
MySQL y MariaDB, dependiendo de la versión de memcmp utilizada, son vulnerables en su procedimiento de verificación de contraseña, lo que podría permitir el inicio de sesión no autorizado.
Solución: 

Hasta que el fabricante publique un parche oficial y éste se aplique a los paquetes de las distintas distribuciones se recomienda configurar la BBDD para que sólo acepte conexiones de equipos concretos. Estos equipos de conexión válidos se configuran por usuario.

Por defecto, la mayor parte de distribuciones Linux sólo aceptan sesiones desde el mismo host configurando el parámetro bind-address al valor loopback.

Detalle: 


Sergei Golubchik, coordinador de seguridad de MariaDB (un branch de la base datos MySQL), ha descubierto un error en la verificación de la contraseña de acceso. Este procedimiento calcula un valor en función de la contraseña del usuario y un valor aleatorio, de forma que, cuando un usuario trata de autenticarse, se calcula este valor y se envía a la BBDD que lo compara con el valor esperado. Si estos dos valores son iguales se permite el acceso.

Para realizar esta comparación se utiliza la función memcmp y se supuso que ésta siempre devolvía un valor entre -127 y 127. Pero en algunas plataformas y dependiendo de las directivas de compilación puede devolver un valor fuera de este rango previsto, lo que puede producir un error de casting y ser interpretado como un 0, lo que significa que los valores son iguales y por tanto que la contraseña es válida. Esta vulnerabilidad ha recibido el identificador CVE-2012-2122.

En el parche propuesto se verifica el valor devuelto por la función memcmp:

return test(memcmp(hash_stage2, hash_stage2_reassured, HA1_HASH_SIZE));

En versiones vulnerables, explotar esta vulnerabilidad es sencillo porque la posibilidad de que un valor fuera del rango sea considerado como 0 es de 1 entre 256; lo que se puede conseguir con un sencillo script que trate de autenticarse con el usuario root, que existe por defecto en estas BBDD.

Impacto:

El inicio de sesión por un atacante como usuario administrador, root, le permite realizar cualquier acción sobre el sistema gestor de BBDD.

Etiquetas: