安全研究

安全漏洞
SystemTap __get_argv()和__get_compat_argv()函数本地溢出漏洞

发布日期:2010-02-05
更新日期:2010-02-08

受影响系统:
SystemTap SystemTap 1.1
SystemTap SystemTap 1.0
描述:
BUGTRAQ  ID: 38120
CVE(CAN) ID: CVE-2010-0411

SystemTap是一种Linux内核诊断工具,允许从运行的Linux内核快速和安全的获取信息。

SystemTap的tapset/aux_syscall.stp文件中的__get_argv()和__get_compat_argv()函数中存在缓冲区溢出漏洞,本地用户可以通过运行恶意脚本触发这个溢出,导致系统崩溃。

漏洞的起因是没有正确地处理strlcpy()的返回代码,__get_argv()中的

                rc = strlcpy (str, buf, len);
                str += rc;
                len -= rc;

将返回代码处理为拷贝的内存数量。strlcpy()所返回的strlen(buf)可能大于len,在拷贝多个argv字符串时可能导致len为负值。__get_argv中的长度检查只检测0,长度为负值时__get_argv会继续拷贝argv,溢出内存缓冲区。

<*来源:Josh Stone (jistone@redhat.com
  
  链接:http://secunia.com/advisories/38426/
        http://sourceware.org/bugzilla/long_list.cgi?buglist=11234
        https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=559719
        https://www.redhat.com/support/errata/RHSA-2010-0125.html
        https://www.redhat.com/support/errata/RHSA-2010-0124.html
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

probe syscall.execve
{
       printf("%s\n", args);

}

建议:
厂商补丁:

RedHat
------
RedHat已经为此发布了一个安全公告(RHSA-2010:0124-01)以及相应补丁:
RHSA-2010:0124-01:Important: systemtap security update
链接:https://www.redhat.com/support/errata/RHSA-2010-0124.html

SystemTap
---------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://sourceware.org/git/gitweb.cgi?p=systemtap.git;a=patch;h=a2d399c87a642190f08ede63dc6fc434a5a8363a

浏览次数:2765
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障