漏洞信息详情
Snort GRE报文解码整数溢出漏洞
漏洞简介
Snort是Snort团队的一套网络入侵预防软件与网络入侵检测软件。该软件提供数据包嗅探、数据包分析和数据包检测等功能。很多其他IDS产品中也使用了Snort及其组件。
Snort的decode.c文件中DecodeGRE()函数在解码GRE协议时存在整数溢出漏洞,攻击者可能利用此漏洞获取某些敏感信息。
漏洞相关代码如下:
==BEGIN CODE==
...
(line 3459 decode.c)
void DecodeGRE(u_int8_t *pkt, const u_int32_t len, Packet *p)
{
u_int8_t flags;
u_int32_t hlen; /* GRE header length */
u_int32_t payload_len;
...
payload_len = len - hlen; (calculation for payload_len is done here)
...
switch (ntohs(p->greh->ether_type)) (line 3597 decode.c)
{
...
default: (line 3625 decode.c)
pc.other++;
p->data = pkt + hlen;
p->dsize = (u_short)payload_len; (truncates payload_len to 65XXX)
return;
}
...
==END CODE==
payload_len、len和hlen都是32位的无符整型。特制的GRE报文会触发整数下溢,导致payload_len回绕成为非常大的数值。如果使用了GRE头中正确的协议字段的话,攻击者就会到达decode.c的3627行,该行将payload_len做为无符short型分配给p->dsize,这能将payload_len截短到大约65535。
必须以--enable-gre选项编译了Snort且以-d选项运行才能利用这个漏洞dump每个报文的应用层内容。如果接收到了恶意报文,Snort就会在内存中报文长度以外读取和记录数据,导致泄漏可能包含有其他报文内容、Snort规则和各种Snort数据结构的内存部分。
漏洞公告
目前厂商已经发布了升级补丁以修复这个安全问题,补丁下载链接:
http://www.snort.org
参考网址
来源: www.snort.org
链接:http://www.snort.org/got_source/source.html
来源: BID
名称: 22004
链接:http://www.securityfocus.com/bid/22004
来源: BUGTRAQ
名称: 20070111 Calyptix Security Advisory CX-2007-001 - Snort 2.6.1.2 Integer Underflow Vulnerability
链接:http://www.securityfocus.com/archive/1/archive/1/456598/100/0/threaded
来源: OSVDB
名称: 33464
链接:http://osvdb.org/33464
来源: OSVDB
名称: 32095
链接:http://osvdb.org/32095
来源: MISC
链接:http://labs.calyptix.com/advisories/CX-2007-01.txt
来源: VUPEN
名称: ADV-2007-0152
链接:http://www.frsirt.com/english/advisories/2007/0152
来源: SECTRACK
名称: 1017507
链接:http://securitytracker.com/id?1017507
来源: SREASON
名称: 2165
链接:http://securityreason.com/securityalert/2165
来源:NSFOCUS 名称:9805 链接:http://www.nsfocus.net/vulndb/9805
受影响实体
- Snort Snort:2.6.1.2<!--2000-1-1-->
补丁
暂无
还没有评论,来说两句吧...