首页 -> 安全研究

安全研究

绿盟月刊
绿盟安全月刊->第6期->最新漏洞
期刊号: 类型: 关键词:
MySQL远程访问漏洞

作者:Robert van der Meulen
日期:2000-02-15

受影响的系统:  
T.C.X DataKonsult MySQL 3.23.9
T.C.X DataKonsult MySQL 3.23.8
T.C.X DataKonsult MySQL 3.23.10
T.C.X DataKonsult MySQL 3.22.30
T.C.X DataKonsult MySQL 3.22.29
T.C.X DataKonsult MySQL 3.22.27
T.C.X DataKonsult MySQL 3.22.26
--------------------------------------------------------------------------------

来源:Robert van der Meulen .

    在MySQL的口令验证机制里存在安全漏洞。它允许任何用户从有目标机器数据库访问权限的机器上与该数据库进行连接。攻击者不必知道帐号和口令,而只需知道一个可用的帐号名。3.22.26a及以上版本存在这个漏洞,以下版本也可能会有,但未经证实。
    问题出现在服务器使用客户端返回的字符串进行验证,但没有检查其有效长度:

while (*scrambled)
{
if (*scrambled++ != (char) (*to++ ^ extra))
return 1; /* Wrong password */
}

    *scrabled是由客户端返回的字符串。如果用户返回一个单字符作为*scrambled的值,则只有一个字节内容会与实际口令比较。因此只要这个字符匹配,就能通过MySQL的身份认证,从而允许访问数据库。据漏洞的发现者说,最多存在32种可能。

--------------------------------------------------------------------------------
建议:

    临时解决方法:在认证字符串验证前检查客户端字符串长度是否有效:

if (strlen(scrambled)!=strlen(to)) {
return 1;
}

    另外,建议只允许特定主机连接MySQL数据库。

版权所有,未经许可,不得转载