IBM Informix多个安全漏洞

来源:岁月联盟 编辑:zhuzhu 时间:2006-08-21
IBM Informix多个安全漏洞 受影响系统: 
Novell Informix Dynamic Server 9.40.UC5
Novell Informix Dynamic Server 9.40.UC3
Novell Informix Dynamic Server 9.40.UC2
Novell Informix Dynamic Server 9.40.UC1
Novell Informix Dynamic Server 9.40.TC5
Novell Informix Dynamic Server 9.40 xC7
Novell Informix Dynamic Server 9.4
Novell Informix Dynamic Server 7.31.xD8
Novell Informix Dynamic Server 7.3
Novell Informix Dynamic Server 10.0 xC3
Novell Informix Dynamic Server 10.0
不受影响系统: 
Novell Informix Dynamic Server 9.40.xD8
Novell Informix Dynamic Server 7.31.xD9
Novell Informix Dynamic Server 10.0.xC4
描述: 


--------------------------------------------------------------------------------
BUGTRAQ  ID: 19264
CVE(CAN) ID: CVE-2006-3853,CVE-2006-3854,CVE-2006-3855,CVE-2006-3857,CVE-2006-3858,CVE-2006-3860,CVE-2006-3862,CVE-2006-3861

Informix Dynamic Server(IDS)是一款由IBM开发的数据库。

IBM Informix Dynamic Server中存在多个安全漏洞,具体如下:

1 ifx_load_internal SQL函数可能将任意函数库加载到数据库服务进程的地址空间。安全者可以将代码放置在Windows的DllMain()函数或Linux的_init()函数上,当加载函数库时就会导致自动执行代码。

2 如果用户名大于32个字节的话就会调用_mt_logprintf()记录一条错误消息("%s :
username is longer than usersize(32).")。_mt_logprintf()会在栈上创建960字节的缓冲区,然后在vsprintf()调用中将错误消息做为参数传送给该目标。因此如果用户名大于960字节的话就会导致溢出,控制进程的执行路径。

3 Informix服务器记录用户时未经长度检查便将用户名拷贝到了260字节的栈缓冲区,导致覆盖栈的返回地址,将进程的执行路径重新定向到安全者所选择的位置。 

4 安全者可以向SET DEBUG FILE SQL语句和start_onpload及dbexp过程注入任意操作系统命令。注入到SET DEBUG FILE中的命令会以informix用户的权限执行;注入到dbexp或start_onpload中的命令会以登录用户的权限执行。

5 可使用LOTOFILE和rlt_tracefile_set函数以及SET DEBUG FILE语句创建并写入文件。

6 在SQL级别以下SQL语句存在溢出漏洞:

SET DEBUG FILE
IFX_FILE_TO_FILE
FILETOCLOB
LOTOFILE
DBINFO

在协议级别以下C函数存在溢出:

_sq_remview
_sq_remproc
_sq_remperms
_sq_distfetch
_sq_dcatalog

上述语句或函数都调用了getname()函数。该函数将源字符串拷贝到目标缓冲区,类似于strcpy()。

此外在协议级别上_sq_scroll和_sq_bbind函数中的空指针可能触发未处理的异常,导致拒绝服务。

7 当用户登录到Informix服务器时会在共享内存部分找到明文口令。在Windows上“everyone”都可以打开这部分内存,读取内容,访问所有登录用户的口令。在Linux和Windows上如果出现崩溃的话,共享内存都会被dump到完全可读的日志文件。

8 运行在Linux上Informix的大多数setuid root程序中都存在溢出漏洞。以下形式的超长SQLIDEBUG环境变量:

SQLIDEBUG=1:/long-file-name

在超长filename的272-6字节处栈中所保存的返回地址会被覆盖。

9 在Informix上公众(public)可以获得连接权限,因此任何登录用户都可以进行连接。公众还可以发布并创建数据库命令。在创建数据库时,创建该数据库的用户会成为该数据库的DBA。DBA可以以informix用户的权限执行代码,并逐步获得root用户权限。

<*来源:David Litchfield (david@nextgenss.com)
  
  链接:http://www.novell.com/inc/pf/pf.jsp?url=http://support.novell.com/cgi-bin/search/searchtid.cgi?/2973
        http://www.ngssoftware.com/research/
        http://www.ngssoftware.com/research/
        http://www.ngssoftware.com/research/
        http://www.ngssoftware.com/research/
        http://www.ngssoftware.com/research/
        http://www.ngssoftware.com/research/
        http://www.ngssoftware.com/research/
        http://www.ngssoftware.com/research/
        http://www.ngssoftware.com/research/
*> 

建议: 


--------------------------------------------------------------------------------

厂商补丁:

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

http://support.novell.com/security-alerts

图片内容