漏洞版本:
All MariaDB
MySQL 5.1.61, 5.2.11, 5.3.5, 5.5.22 之前的版本
漏洞描述:
当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。
也就是说只要知道用户名,不断尝试就能够直接登入SQL数据库。按照公告说法大约256次就能够蒙对一次。而且漏洞利用工具已经出现。
不过,MySQL身份认证的时候是采用3元组,username,ip,password。如果client的IP在mysql.user表中找不到对应的,也无法登陆。
http://seclists.org/oss-sec/2012/q2/493
安全建议:
强烈建议升级官方补丁:
目前有mysql5.5.25下载
http://dev.mysql.com/downloads/mysql/
Percona-Server-5.5.24-rel26.0.tar.gz
MariaDB 5.1.62, 5.2.12, 5.3.6, 5.5.23
MySQL 5.1.63, 5.5.24, 5.6.6
临时解决办法:
在防火墙上关闭mysql端口
参考:
http://sebug.net/vuldb/ssvid-60198
http://www.chinaz.com/news/2012/0612/256965.shtml
http://seclists.org/oss-sec/2012/q2/493
============== 补充说明 ==================
这个 Bug 在官方编译的版本中没有发现。如果你是下载的源码,然后自己编译的就有可能遇到这个问题。
这个问题和 memcmp() 这个函数的返回值有关系。目前知道的情况来看,gcc 自带的 memcmp 是安全的,BSD libc 的 memcmp 是安全的。Linux glibc sse 优化过的 memcmp 会有这个问题。
针对该漏洞 Percona Server 发表了说明如下:
很多人听说了 MySQL 的登录漏洞后纷纷询问 Percona Server 是否受此问题影响,因此我们决定有必要发表一下说明:
该问题存在于 MySQL 5.5.23(5.1.62) 以及之前版本的源码中,因为基于同一个源码库,因此 Percona Server 也有同样的问题。
但是,Percona 提供的二进制安装文件不存在此问题,因为构建过程我们没有使用 sse-optimized glibc memcmp,所有版本的 Percona 都如此,包括 tar.gz, RPM and DEB 包,如果你使用的是从 Percona 下载页 获取的软件并进行安全,那么请不用担心,这个漏洞对你没有任何影响。
如果你使用是你自己或者第三方二进制版,我们没法保证是否安全,你可执行进行测试,测试脚本在这里。
另外你也可以考虑升级到最新的版本。
http://www.oschina.net/news/29899/mysql-root-bug
No Responses (yet)
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.