int(6323)

Vulnerability Bulletins


Vulnerabilidad en MySQL y MariaDB

Vulnerability classification

Property Value
Confidence level Oficial
Impact Obtener acceso
Dificulty Avanzado
Required attacker level Acceso remoto sin cuenta a un servicio estandar

System information

Property Value
Affected manufacturer Comercial Software
Affected software 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)

Description

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.

Solution

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.

Standar resources

Property Value
CVE CVE-2012-2122
BID

Other resources

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

Version history

Version Comments Date
1.0 Aviso emitido 2012-06-11