int(6323)

Boletines de Vulnerabilidades


Vulnerabilidad en MySQL y MariaDB

Clasificación de la vulnerabilidad

Propiedad Valor
Nivel de Confianza Oficial
Impacto Obtener acceso
Dificultad Avanzado
Requerimientos del atacante Acceso remoto sin cuenta a un servicio estandar

Información sobre el sistema

Propiedad Valor
Fabricante afectado Comercial Software
Software afectado 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)

Descripción

MySQL y MariaDB, dependiendo de la versión/compilación de la función 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.

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.

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 autorizados.

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.

Identificadores estándar

Propiedad Valor
CVE CVE-2012-2122
BID

Recursos adicionales

Security vulnerability in MySQL/MariaDB sql/password.c
http://seclists.org/oss-sec/2012/q2/493

CVE-2012-2122: A Tragically Comedic Security Flaw in MySQL
https://community.rapid7.com/community/metasploit/blog/2012/06/11/cve-2012-2122-a-tragically-comedic-security-flaw-in-mysql

Histórico de versiones

Versión Comentario Fecha
1.0 Aviso emitido 2012-06-11