安全研究
安全漏洞
MySQL/MariaDB用户验证绕过漏洞
发布日期:2012-06-10
更新日期:2012-06-11
受影响系统:
MySQL AB MySQL < 5.6.6描述:
MySQL AB MySQL < 5.5.24
MySQL AB MySQL < 5.1.63
MariaDB MariaDB < 5.5.23
MariaDB MariaDB < 5.3.6
MariaDB MariaDB < 5.2.12
MariaDB MariaDB < 5.1.62
BUGTRAQ ID: 53911
CVE ID: CVE-2012-2122
MySQL是一款流行的开源数据库。MariaDB是为MySQL提供偶然替代功能的数据库服务器。
MariaDB 5.1.62, 5.2.12、5.3.6、5.5.23之前版本和MySQL 5.1.63、5.5.24、5.6.6之前版本在用户验证的处理上存在安全漏洞,可能导致攻击者无需知道正确口令就能登录到MySQL服务器。
用户连接到MariaDB/MySQL后,应用会计算和比较令牌值。漏洞发生在password.c文件中的check_scramble()函数,其使用了memcmp()
函数来检查用户输入的密码是否正确,由于memcmp()函数返回值为int类型(返回值为0代表被比较的数据相同),而check_scramble()函数的返回值为my_bool类型(1 byte),在int类型转换为my_bool类型时会出现数据截断。在可能存在问题的memcmp实现中,会导致虽然被比较的两个缓冲区数据不同,但经过平均大约256次尝试,就可使得截断后的数据为零。从而绕过了登录检查,可以无需有效密码即可远程登录数据库。
目前已知Mysql官方发布的二进制包不受此问题影响。而在一些开启了glibc sse优化的Linux平台上,gcc编译时选择了-fno-built选项(不使用内置函数)的mysql版本则会受此问题影响。
<*来源:Sergei Golubchik
链接:http://seclists.org/oss-sec/2012/q2/493
http://pastie.org/4064638
https://community.rapid7.com/community/metasploit/blog/2012/06/11/cve-2012-2122-a-tragically-comedic-security-flaw-in-mysql
http://bugs.mysql.com/bug.php?id=64884
http://www.reddit.com/r/netsec/comments/uvfg6/security_vulnerability_in_mysqlmariadb/
https://www.secmaniac.com/blog/2012/06/11/massive-mysql-authentication-bypass-exploit/
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int one, two, ret;
time_t start = time(0);
time_t now;
srand(getpid()*start);
while (1) {
one = rand();
two = rand();
ret = memcmp(&one, &two, sizeof(int));
if (ret < -128 || ret > 127)
break;
time(&now);
if (now - start > 10) {
printf("Not triggered in 10 seconds, *probably* not vulnerable..\n");
return 1;
}
}
printf("Vulnerable! memcmp returned: %d\n", ret);
return 0;
}
建议:
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* 对MySQL或相关网络进行配置,只允许可信的来源访问。
厂商补丁:
MySQL AB
--------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.mysql.com/
MariaDB
-------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://mariadb.org/
浏览次数:4532
严重程度:0(网友投票)
绿盟科技给您安全的保障
