首页 -> 安全研究

安全研究

安全漏洞
MySQL超长Password字段缓冲区溢出漏洞

发布日期:2003-09-10
更新日期:2003-09-15

受影响系统:
MySQL AB MySQL 4.0.9
MySQL AB MySQL 4.0.8
MySQL AB MySQL 4.0.7
MySQL AB MySQL 4.0.6
MySQL AB MySQL 4.0.5a
MySQL AB MySQL 4.0.5
MySQL AB MySQL 4.0.4
MySQL AB MySQL 4.0.3
MySQL AB MySQL 4.0.2
MySQL AB MySQL 4.0.14
MySQL AB MySQL 4.0.13
MySQL AB MySQL 4.0.12
MySQL AB MySQL 4.0.11
MySQL AB MySQL 4.0.10
MySQL AB MySQL 4.0.1
MySQL AB MySQL 4.0.0
MySQL AB MySQL 3.23.9
MySQL AB MySQL 3.23.8
MySQL AB MySQL 3.23.57
MySQL AB MySQL 3.23.56
MySQL AB MySQL 3.23.55
MySQL AB MySQL 3.23.54
MySQL AB MySQL 3.23.53a
MySQL AB MySQL 3.23.53
MySQL AB MySQL 3.23.52
MySQL AB MySQL 3.23.51
MySQL AB MySQL 3.23.50
MySQL AB MySQL 3.23.5
MySQL AB MySQL 3.23.49
MySQL AB MySQL 3.23.48
MySQL AB MySQL 3.23.47
MySQL AB MySQL 3.23.46
MySQL AB MySQL 3.23.45
MySQL AB MySQL 3.23.44
MySQL AB MySQL 3.23.43
MySQL AB MySQL 3.23.42
MySQL AB MySQL 3.23.41
MySQL AB MySQL 3.23.40
MySQL AB MySQL 3.23.4
MySQL AB MySQL 3.23.39
MySQL AB MySQL 3.23.38
MySQL AB MySQL 3.23.37
MySQL AB MySQL 3.23.36
MySQL AB MySQL 3.23.34
MySQL AB MySQL 3.23.31
MySQL AB MySQL 3.23.30
MySQL AB MySQL 3.23.3
MySQL AB MySQL 3.23.29
MySQL AB MySQL 3.23.28 gamma
MySQL AB MySQL 3.23.28
MySQL AB MySQL 3.23.27
MySQL AB MySQL 3.23.26
MySQL AB MySQL 3.23.25
MySQL AB MySQL 3.23.24
MySQL AB MySQL 3.23.23
MySQL AB MySQL 3.23.2
MySQL AB MySQL 3.23.10
不受影响系统:
MySQL AB MySQL 4.0.15
描述:
CVE(CAN) ID: CVE-2003-0780

MySQL是一款开放源代码关系型数据库系统。

MySQL中一个涉及到密码检查的函数缺少正确的边界缓冲区检查,本地或者远程攻击者可以利用这个漏洞对MySQL进行缓冲区溢出攻击,可造成拒绝服务或者以MySQL进程权限在系统上执行任意指令。

MySQL用户的Passwords存储在"mysql"数据库中的"User"表中,这些密码存储在密码字段通过HASH后以16个字符长度十六进度形式存储。但是设计到密码检查的函数没有进行正确边界检查,如果使用的"Password"字段超过16个字符,可发生缓冲区溢出。

sql/password.c中定义的get_salt_from_password()函数接受任意长的HEX密码并返回任意长数组值,在传递这些密码HASH值到sql/sql_acl.cc进行处理时没有进行正确缓冲区检查,可在acl_init()函数中触发缓冲区溢出。

<*来源:Jedi/Sector One (j@pureftpd.org)
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=106323221912927&w=2
*>

建议:
临时解决方法:

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

* MySQL 4.0.14第三方补丁如下:

--- mysql-4.0.14-old/sql/sql_acl.cc 2003-07-18 16:57:25.000000000 +0200
+++ mysql-4.0.14/sql/sql_acl.cc 2003-09-10 23:21:13.559759576 +0200
-233,7 +233,7  
                       "Found old style password for user '%s'. Ignoring user. (You may want to restart mysqld using --old-protocol)",
                       user.user ? user.user : ""); /* purecov: tested */
     }
- else if (length % 8) // This holds true for passwords
+ else if (length % 8 || length > 16) // This holds true for passwords
     {
       sql_print_error(
                       "Found invalid password for user: '%s%s'; Ignoring user",

厂商补丁:

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

http://www.mysql.com/downloads/mysql-4.0.html

浏览次数:4923
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障