OpenBSD systrace 内核组件本地整数溢出漏洞

QQ空间 新浪微博 微信 QQ facebook twitter
漏洞ID 1193260 漏洞类型 缓冲区溢出
发布时间 2006-10-07 更新时间 2006-11-28
CVE编号 CVE-2006-5218 CNNVD-ID CNNVD-200610-129
漏洞平台 N/A CVSS评分 4.6
|漏洞来源
https://www.securityfocus.com/bid/20392
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200610-129
|漏洞详情
OpenBSD是一款开放源代码Unix类操作系统,OpenBSD的systrace功能可以允许或拒绝被管理进程所执行的syscall。systrace的内核组件中存在整数溢出漏洞,攻击者可以通过在systraceioctl()中指定很大的整数值触发这个漏洞,导致绕过安全检查、向任意内核地址越界写入空字节或读取内核内存块。漏洞代码在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);}/*Makesurethatthelengthaddsup*/if(repl->strr_len!=len)return(EINVAL);/*Checkagainstamaximumlength*/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中:intsystrace_fname(structstr_process*strp,caddr_tkdata,size_tlen){if(strp->nfname>=SYSTR_MAXFNAME||len<1)returnEINVAL;strp->fname[strp->nfname]=kdata;strp->fname[strp->nfname][len-1]='\0';strp->nfname++;return0;}len是被攻击者随意控制的,导致向内核空间写入空字节。此外,在systrace_replace使用这个攻击者控制
|受影响的产品
OpenBSD OpenBSD 3.9 OpenBSD OpenBSD 3.8 NetBSD NetBSD 3.0.1 NetBSD NetBSD 2.1 NetBSD NetBSD 2.0.3 NetBSD NetBSD 2.0.2 NetBSD NetBSD 2.0.1
|参考资料

来源: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]20061007014:SECURITYFIX:October7,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
链接:http://www.osvdb.org/29570