更新日期:2010-02-09
受影响系统:
SystemTap SystemTap 1.1描述:
SystemTap SystemTap 1.0
BUGTRAQ ID: 38120
CVE 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
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
{
printf("%s\n", args);
}
建议:
厂商补丁:
SystemTap
---------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://sourceware.org/git/gitweb.cgi?p=systemtap.git;a=patch;h=a2d399c87a642190f08ede63dc6fc434a5a8363a