安全研究

安全漏洞
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(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障