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

  • 发布于:2021-05-05
  • 190 人围观
受影响系统:
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),因此攻击者就可以破坏栈,覆盖任意内存位置。

<*来源:Reid Borsuk
        Team SHATTER (shatter@appsecinc.com
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=112360818900941&w=2
*>

建议:

临时解决方法:

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

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

厂商补丁:

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

http://www.mysql.com/

万企互联
标签: