漏洞信息详情
OpenBSD systrace 内核组件本地整数溢出漏洞
- CNNVD编号:CNNVD-200610-129
- 危害等级: 中危
- CVE编号:
CVE-2006-5218
- 漏洞类型:
缓冲区溢出
- 发布时间:
2006-10-10
- 威胁类型:
本地
- 更新时间:
2006-10-23
- 厂 商:
netbsd - 漏洞来源:
Chris Evans※ chris… -
漏洞简介
OpenBSD是一款开放源代码Unix类操作系统,OpenBSD的systrace功能可以允许或拒绝被管理进程所执行的syscall。
systrace的内核组件中存在整数溢出漏洞,攻击者可以通过在systrace ioctl()中指定很大的整数值触发这个漏洞,导致绕过安全检查、向任意内核地址越界写入空字节或读取内核内存块。
漏洞代码在systrace_preprepl函数中:
for (i = 0, len = 0; i < repl->strr_nrepl; i++) {
len += repl->strr_offlen[i];
if (repl->strr_offlen[i] == 0)
continue;
if (repl->strr_offlen[i] + repl->strr_off[i] > len)
return (EINVAL);
}
/* Make sure that the length adds up */
if (repl->strr_len != len)
return (EINVAL);
/* Check against a maximum length */
if (repl->strr_len > 2048)
return (EINVAL);
这里strr_offlen[i] + strr_off[i]可能溢出,导致攻击者可以选择很大数值的strr_offlen或strr_off;len变量也存在整数溢出,轻易地满足strr_len <= 2048这个条件。然后在systrace_replace中就会使用攻击者所提供的超大值:
if (repl->strr_flags[i] & SYSTR_NOLINKS) {
ret = systrace_fname(strp, kdata, repl->strr_offlen[i]);
在systrace_fname中:
int
systrace_fname(struct str_process *strp, caddr_t kdata, size_t len)
{
if (strp->nfname >= SYSTR_MAXFNAME || len < 1)
return EINVAL;
strp->fname[strp->nfname] = kdata;
strp->fname[strp->nfname][len – 1] = \’\’\0\’\’;
strp->nfname++;
return 0;
}
len是被攻击者随意控制的,导致向内核空间写入空字节。此外,在systrace_replace使用这个攻击者控制的长度拷贝出用户空间,可能导致窃取内核内存的内容:
if (copyout(kdata, udata, repl->strr_offlen[i])) {
ret = EINVAL;
goto out;
}
漏洞公告
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.8/common/019_systrace.patch
ftp://ftp.openbsd.org/pub/OpenBSD/patches/3.9/common/014_systrace.patch
参考网址
来源: BID
名称: 20392
链接:http://www.securityfocus.com/bid/20392
来源: SECTRACK
名称: 1017009
链接:http://securitytracker.com/id?1017009
来源: SECUNIA
名称: 22324
链接:http://secunia.com/advisories/22324
来源: OPENBSD
名称: [3.9] 20061007 014: SECURITY FIX: October 7, 2006
链接:http://openbsd.org/errata.html#systrace
来源: XF
名称: openbsd-systracepreprepl-integer-overflow(29392)
链接:http://xforce.iss.net/xforce/xfdb/29392
来源: MISC
链接:http://scary.beasts.org/security/CESA-2006-003.html
来源: OSVDB
名称: 29570