SystemTap __get_argv()和__get_compat_argv()函数本地溢出漏洞
发表时间:2010-02-09 09:25:10 作者: 来源:红客联盟 收藏本页
发布日期:2010-02-05c8e中国红客联盟-全球最大的红客组织
更新日期:2010-02-09c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
受影响系统:
SystemTap SystemTap 1.1c8e中国红客联盟-全球最大的红客组织
SystemTap SystemTap 1.0
描述:
BUGTRAQ  ID: 38120c8e中国红客联盟-全球最大的红客组织
CVE ID: CVE-2010-0411c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
SystemTap是一种Linux内核诊断工具,允许从运行的Linux内核快速和安全的获取信息。c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
SystemTap的tapset/aux_syscall.stp文件中的__get_argv()和__get_compat_argv()函数中存在缓冲区溢出漏洞,本地用户可以通过运行恶意脚本触发这个溢出,导致系统崩溃。c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
漏洞的起因是没有正确地处理strlcpy()的返回代码,__get_argv()中的c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
                rc = strlcpy (str, buf, len);c8e中国红客联盟-全球最大的红客组织
                str += rc;c8e中国红客联盟-全球最大的红客组织
                len -= rc;c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
将返回代码处理为拷贝的内存数量。strlcpy()所返回的strlen(buf)可能大于len,在拷贝多个argv字符串时可能导致len为负值。__get_argv中的长度检查只检测0,长度为负值时__get_argv会继续拷贝argv,溢出内存缓冲区。c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
<*来源:Josh Stone (jistone@redhat.com)c8e中国红客联盟-全球最大的红客组织
  c8e中国红客联盟-全球最大的红客组织
  链接:http://secunia.com/advisories/38426/c8e中国红客联盟-全球最大的红客组织
        http://sourceware.org/bugzilla/long_list.cgi?buglist=11234c8e中国红客联盟-全球最大的红客组织
        https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=559719c8e中国红客联盟-全球最大的红客组织
*>c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
测试方法:

警 告c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!c8e中国红客联盟-全球最大的红客组织

probe syscall.execvec8e中国红客联盟-全球最大的红客组织
{c8e中国红客联盟-全球最大的红客组织
       printf("%s\n", args);c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
}c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
建议:
厂商补丁:c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
SystemTapc8e中国红客联盟-全球最大的红客组织
---------c8e中国红客联盟-全球最大的红客组织
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:c8e中国红客联盟-全球最大的红客组织
c8e中国红客联盟-全球最大的红客组织
http://sourceware.org/git/gitweb.cgi?p=systemtap.git;a=patch;h=a2d399c87a642190f08ede63dc6fc434a5a8363ac8e中国红客联盟-全球最大的红客组织
下一篇:下面没有链接了
豫ICP备09015648号版权所有© 2001-2009中国红客联盟 All Rights Reserved.