MySQL用户定义函数多个安全漏洞

来源:岁月联盟 编辑:zhuzhu 时间:2005-08-12
MySQL用户定义函数多个安全漏洞

受影响系统:
MySQL AB MySQL 5.0.XX
MySQL AB MySQL 4.1.XX
MySQL AB MySQL 4.0.XX
描述:
--------------------------------------------------------------------------------
MySQL是一款使用非常广泛的开放源代码关系数据库系统,拥有各种平台的运行版本。

安全者可以通过特制的CREATE FUNCTION请求导致系统停止,或执行任意代码,具体如下:

1)

如果安全者能够要求基于Windows的MySQL服务器加载无效的库文件的话,应用程序就会挂起,直到服务器上确认了对话框。通过请求Windows默

认安装PATH中包含的一个或多个非库文件,安全者可以导致服务器终止。这是由于在加载无效的库文件时Windows函数LoadLibraryEx()会中止

,给出以下消息:

"The application or DLL XXXX is not a valid Windows image. Please
check this against your installation diskette."

应注意这个漏洞仅影响Windows平台,其他操作系统不受影响。

2) MySQL要求任何UDF库都定义了XXX_deinit()或XXX_init()函数以过滤任意函数库执行,但这个函数命名规则过于通用,默认函数库也可能定

义了这些函数。

例如,Windows

2000默认捆绑的“jpeg1x32.dll”和“jpeg2x32.dll”库也定义了这些函数,这就允许安全者从“jpeg1x32.dll”加载jpeg_cmp() 函数,或从

“jpeg2x32.dll”加载jpeg_decmp()函数。如果调用了任何一个上述函数的话,MySQL守护程序都会由于错误的参数传递而崩溃。

jpeg_cmp_init()和jpeg_decmp_init()函数都假设栈中有6个参数在等待。其中的一个参数Arg 6(EBP+0x1C)是指向内存位置的指针,然后传

送给这个函数的其他参数会覆盖这个指针后的内存。由于在这个调用前没有使用Arg 4(EBP+0x14)到Arg 6(EBP+0x1C),因此安全者就可以

破坏栈,覆盖任意内存位置。

建议:
--------------------------------------------------------------------------------
临时解决方法:

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

* 限制创建用户定义函数。

厂商补丁:

MySQL AB
--------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

图片内容