- cnnvd编号:cnnvd-200706-380
- 危害等级: 超危
- cve编号:cve-2007-3338
- 漏洞类型: 缓冲区溢出
- 威胁类型:远程
- 厂 商:ingres
- 漏洞来源: idefensechris anle...
- 发布时间:2007-06-22
- 更新时间:2020-12-11
漏洞简介
ingres是很多ca产品默认所使用的数据库后端。
ingres sql函数uuid_from_char()可从uuid的字符串表示创建uuid,例如:
select uuid_from_char(\'\'11111111-2222-3333-4444-555555555555\'\')
如果向uuid_from_char传送了超长字符串参数,就可能溢出栈缓冲区,覆盖保存的返回地址,将执行路径重新定向到攻击者所选择的地址。
ingres verifydb工具可以解析duveutil.c文件duve_get_args函数中的命令行参数。如果传送了以下形式的参数:
-dbms_testaaaaaaaaaaaaaa...<很多a>
就会导致执行以下代码:
case \'\'d\'\': /* debug flag - should be 1st parameter */
if (mecmp((ptr)argv[parmno], (ptr)\"-dbms_test\", (u_i2)10)
==du_identical )
{
char numbuf[100]; /* scratch pad to read in number*/
/* the dbms_test flag was specified. see if a numeric
** value was attached to it. if so, convert to decimal.
*/
if (argv[parmno][10])
{
stcopy ( &argv[parmno][10], numbuf);
cv_numbuf(numbuf, &duve_cb->duve_dbms_test);
}
else
duve_cb->duve_dbms_test = -1;
}
else
duve_cb->duve_debug = true;
break;
ingres没有执行长度检查便使用stcopy函数将-dbms_test字符串后的参数数据拷贝到了numbuf缓冲区,这导致覆盖栈中的变量,包括所保存的返回地址。
漏洞公示
目前厂商已经发布了升级补丁以修复这个安全问题,补丁下载链接:
ingres corporation
------------------
参考网站
来源: supportconnectw.ca.com
链接:
来源: xf
名称: ingres-duvegetargs-bo(34998)
链接:
来源: xf
名称: ingres-uuidfromchar-bo(34995)
链接:
来源: bid
名称: 24585
链接:
来源: bugtraq
名称: 20070625 ingres stack overflow in uuid_from_char function
链接:
来源: bugtraq
名称: 20070625 ingres verifydb local stack overflow
链接:
来源: misc
链接:
来源: misc
链接:
来源: vupen
名称: adv-2007-2290
链接:
来源: vupen
名称: adv-2007-2288
链接:
来源: www.ca.com
链接:
来源: secunia
名称: 25775
链接:
来源: secunia
名称: 25756
链接:
受影响实体