MySQL用户定义函数缓冲区溢出漏洞
来源:岁月联盟
时间:2005-08-10
受影响系统:
MySQL AB MySQL 5.0.XX
MySQL AB MySQL 4.1.XX
MySQL AB MySQL 4.0.XX
不受影响系统:
MySQL AB MySQL 5.0.7-beta
MySQL AB MySQL 4.1.13
MySQL AB MySQL 4.0.25
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 14509
MySQL是一款使用非常广泛的开放源代码关系数据库系统,拥有各种平台的运行版本。
MySQL的init_syms()函数在将用户指定字符串拷贝到栈缓冲区时使用了不安全的字符串函数,导致安全者可能利用此漏洞在主机上执行任意指令。
由于没有正确的过滤这个缓冲区,安全者可能溢出该缓冲区,覆盖部分栈。这允许安全者在缓冲区末尾之外写入14个字节的任意数据和8字节的硬编码数据。
CREATE FUNCTION语句格式如下:
CREATE FUNCTION function_name RETURNS type SONAME "library_name"
function_name字段的用户指定输入仅限于64个字符。如果操作系统成功的调用了这个库的话,控制就会交给init_syms()。这会试图将用户字符串拷贝到50个字节的缓冲区中,然后将硬编码字符串拷贝到用户字符串末尾。在一些早期版本的MySQL中,安全者可以利用上述操作完全控制EIP,或将指定的数据拷贝到任意位置。
<*来源:Reid Borsuk
Team SHATTER (shatter@appsecinc.com)
链接:http://marc.theaimsgroup.com/?l=bugtraq&m=112354450412427&w=2
*>
建议:
--------------------------------------------------------------------------------
厂商补丁:
MySQL AB
--------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://dev.mysql.com/downloads/