CCN-CERT AL 03/12 Vulnerabilidad grave en MySQL

Boletín de Alertas CCN-CERT

El Equipo de Respuesta ante Incidentes de Seguridad de la Información del Centro Criptológico Nacional, CCN-CERT, informa de un grave fallo de seguridad en MariaDB y MySQL, versiones 5.1.61, 5.2.11, 5.3.5, 5.5.22 y anteriores de ambos motores de base datos, siempre que hayan sido compiladas con librerías que permiten que la rutina memcmp() pueda llegar a devolver enteros fuera del rango de -128 a 127.

Descripción

Cuando un usuario se conecta a MariaDB/MySQL, se genera un token (un hash SHA a partir de su contraseña y una cadena al azar) y se compara con el valor esperado. Debido a una serie de funciones incorrectas, puede ocurrir que el token y el valor esperado se consideren iguales, incluso si la función memcmp() devuelve un valor distinto de cero. En este caso, MySQL/MariaDB puede pensar que la validación es correcta, aunque no lo sea. Debido a que el protocolo utiliza cadenas aleatorias, la probabilidad de provocar este error es de aproximadamente de 1 sobre 256.

Esto significa que, si se conoce un nombre de usuario para conectarse (y root casi siempre existe), podremos conectarnos con "cualquier" contraseña con repetidos intentos de conexión. Unos 300 intentos sólo nos llevarán una fracción de segundo, así que básicamente la protección con contraseña de la cuenta es como si no existiera. Además cualquier cliente puede hacerlo, no hay necesidad de una biblioteca libmysqlclient especial.

Sistemas operativos vulnerables:
  • OpenSuSE 12.1 64-bit MySQL 5.5.23-log
  • Fedora 16 64-bit
  • Arch Linux
  • Gentoo
Exploit

El script en bash intenta conectar como root con la siguiente sentencia:

for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done

El exploit se encuentra disponible públicamente. Este código en Python busca la dirección IP del servidor MySQL y lanza el cliente MySQL repetidamente hasta que el cliente consigue explotar la vulnerabilidad como root.

Mitigación

La primera regla para securizar MySQL es no exponer la base de datos en la red de manera pública. La mayoría de las distribuciones de Linux configuran el acceso al demonio de MySQL sólo para localhost. En caso de que sea necesario habilitar el acceso remoto al servicio, MySQL también proporciona controles de acceso basados en host.

Lo más fácil es modificar el archivo my.cnf con el fin de restringir el acceso al sistema local. Busca la sección [mysqld] y cambia (o añade una nueva línea para configurar) el parámetro "bind-address" a "127.0.0.1". Reinicia el servicio de MySQL para aplicar esta configuración.

La siguiente recomendación claramente es actualizar o parchear la base de datos. Oracle ya corrigió el error en MySQL, bug id 64884, con las versiones MySQL 5.1.63 y 5.5.24, ambas publicadas hace un mes. La corrección aplicada es un único cambio en una línea; también hay un parche similar disponible para MariaDB. En breve, se espera que las distintas distribuciones de Linux vaya publicando parches para sus correspondientes versiones de MySQL.

Más información

MySQL AB (Bug #64884 logins with incorrect password are allowed), 2012-04-06
OSS-SEC Mailing List (Security vulnerability in MySQL/MariaDB sql/password.c ), 2012-06-09
Rapid 7 (CVE-2012-2122: A Tragically Comedic Security Flaw in MySQL), 2012-06-11

Atentamente,

Equipo CCN-CERT

//////////////////////////////////////////////////////////////////////////////////////////

Esta es una lista de notificaciones del CCN-CERT. Por favor, no responda a este correo. Para establecer contacto, por favor, diríjase a Helbide elektroniko hau spambot-etatik babestuta dago. JavaScript gaituta izan behar duzu ikusi ahal izateko.

Este correo ha sido codificado en formato ISO-8859-1. Si no visualiza ciertos caracteres especiales, cambie manualmente la configuración de su cliente de correo.

//////////////////////////////////////////////////////////////////////////////////////////


El CCN-CERT, el CERT Gubernamental español, es el Servicio de Respuesta ante Incidentes de Seguridad de las Tecnologías de la Información del Centro Criptológico Nacional (https://www.ccn-cert.cni.es).

Su misión es ser el centro de alerta y respuesta nacional que coopere y ayude a las administraciones públicas a responder, de forma rápida y eficiente, a los incidentes de seguridad que pudieran surgir y afrontar de forma activa las nuevas amenazas a las que hoy en día están expuestas.

La finalidad principal del CCN-CERT es contribuir a la mejora del nivel de seguridad de los sistemas de información de la Administración Pública española. La comunidad a la que presta servicio está constituida por el conjunto de organismos de las distintas administraciones: general, autonómica y local.

---------------------
Claves PGP Públicas
---------------------
Helbide elektroniko hau spambot-etatik babestuta dago. JavaScript gaituta izan behar duzu ikusi ahal izateko.
--------------------

Fingerprint: 4A7D 155F 38FA 2204 55F8 5E4C A62B AB99 7527 F5AF

Descarga: https://www.ccn-cert.cni.es/documentos-publicos/1354-public-ccn-cert-global/file.html

Helbide elektroniko hau spambot-etatik babestuta dago. JavaScript gaituta izan behar duzu ikusi ahal izateko.
------------------------

Fingerprint: 0D4D BD59 ADCB 5466 0FB6 2529 C57E 8849 CE7B 4475

Descarga: https://www.ccn-cert.cni.es/documentos-publicos/1354-public-ccn-cert-global/file.html

//////////////////////////////////////////////////////////////////////////////////////////

AVISO DE CONFIDENCIALIDAD:
El presente mensaje va dirigido de manera exclusiva a su destinatario. Si usted no es el destinatario de este mensaje (o la persona responsable de su entrega), considérese advertido de que lo ha recibido por error, así como de la prohibición legal de realizar cualquier tipo de uso, difusión, reenvío, impresión o copia del mismo. Si ha recibido este mensaje por error, por favor notifíquelo al remitente y proceda a destruirlo inmediatamente.

© 2012 Centro Criptológico Nacional - C/Argentona, 20 28023 MADRID www.ccn-cert.cni.es
Ministerio de Defensa
CNI
CCN
CCN-CERT