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中国
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
数据库和数据仓库的区别在哪儿?
目前,大部分数据仓库还是用数据库进行管理。数据库是整个数据仓库环境的核心,是数据存放的地方和提供对数据检索的支持。
-
如何使用服务来平衡Oracle RAC 数据库工作负载
为不同的应用程序配置不同的服务,DBA可以更有效地平衡集群工作负载,在Oracle RAC数据库环境下实现更好的应用程序性能。