安全警告:IBM Informix多个安全漏洞

日期: 2008-06-19 来源:TechTarget中国

  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用户权限。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐