Libsafe安全检查可绕过漏洞
发布日期:2005-04-18
更新日期:2005-04-18
受影响系统:Avaya Labs Libsafe 2.0-16
描述:
BUGTRAQ ID:
13190
CVE(CAN) ID:
CVE-2005-1125
Libsafe是用于保护栈中关键元素的函数库。
攻击者可以绕过libsafe的检查,利用多线程应用程序中的漏洞。
安全函数strcpy()中的代码:
char *strcpy(char *dest, const char *src)
{
...
if (!real_strcpy)
real_strcpy = (strcpy_t) getLibraryFunction("strcpy");
...
if ((max_size = _libsafe_stackVariableP(dest)) == 0) {
LOG(5, "strcpy(<heap var> , <src>)\n");
return real_strcpy(dest, src);
}
...
if ((len = strnlen(src, max_size)) == max_size)
_libsafe_die("Overflow caused by strcpy()");
...
_libsafe_stackVariableP()函数检查缓冲区和栈帧之间的长度。仅在地址没有指向栈变量的情况下才应返回0。请看以下函数代码:
uint _libsafe_stackVariableP(void *addr) {
...
/*
* If _libsafe_die() has been called, then we don't need to do anymore
* libsafe checking.
*/
if (dying)
return 0;
...
调用_libsafe_die()函数后就会出现攻击。设置了dying变量,至少杀死了一个应用程序。如果是多线程程序的话,就可能在_libsafe_die()前出现攻击。
<*来源:Overflow.pl (
adv@overflow.pl)
链接:
http://www.overflow.pl/adv/libsafebypass.txt
*>
建议:
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* 删除_libsafe_stackVariableP函数中的代码:
if (dying)
return 0;
厂商补丁:
Avaya Labs
----------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.research.avayalabs.com浏览次数:2535
严重程度:0(网友投票)