首页 -> 安全研究

安全研究

安全漏洞
Kame-Derived Stack Non-ESP IPV4报文转发策略被绕过漏洞

发布日期:2002-03-04
更新日期:2002-03-08

受影响系统:
FreeBSD FreeBSD 4.5
FreeBSD FreeBSD 4.4
FreeBSD FreeBSD 4.3
FreeBSD FreeBSD 4.2
NetBSD NetBSD 1.5.2
NetBSD NetBSD 1.5.1
NetBSD NetBSD 1.5
OpenBSD OpenBSD 2.7
OpenBSD OpenBSD 2.6
不受影响系统:
OpenBSD OpenBSD 3.0
OpenBSD OpenBSD 2.9
OpenBSD OpenBSD 2.8
描述:
BUGTRAQ  ID: 4224
CVE(CAN) ID: CVE-2002-0414

KAME是种免费使用、开放源码的IPv6和IPSec实现,目前通过KAME Project分发、维护。

在某些情况下,KAME未能严格遵守RFC的要求,从而带来安全隐患。

在两个Security Gateway之间要求使用Encapsulating Security Payload (ESP)以确保数据的机密性、完整性。如果SG对端未能成功使用ESP,意味着机密性的丧失。根据RFC 2401,本地SG应该做inbound SPD检查,从而丢弃来自SG对端的报文。然而现有实现中,未做这个检查,于是一个伪造过的报文有可能被本地SG转发。攻击者可以伪造发往本地SG的报文,但无法有效接收来自本地SG的报文,因为目前的实现做了正确的outbound SPD检查。

<*来源:Greg Troxel (gdt@ir.bbn.com
        Bill Chiarchiaro (wjc@work.cleartech.com
  
  链接:http://archives.neohapsis.com/archives/bugtraq/2002-03/0019.html
*>

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 按照Greg Troxel <gdt@ir.bbn.com>提供的补丁程序修改代码。

厂商补丁:

FreeBSD
-------
Greg Troxel <gdt@ir.bbn.com>提供了如下补丁

FreeBSD RELENG_4:

Index: src/sys/netinet/ip_input.c
===================================================================
RCS file: /FREEBSD-CVS/src/sys/netinet/ip_input.c,v
retrieving revision 1.130.2.31
diff -u -r1.130.2.31 ip_input.c
--- src/sys/netinet/ip_input.c 2001/12/15 01:06:27 1.130.2.31
+++ src/sys/netinet/ip_input.c 2002/02/24 16:10:26
@@ -625,8 +625,18 @@
if (ipforwarding == 0) {
ipstat.ips_cantforward++;
m_freem(m);
- } else
+ } else {
+#ifdef IPSEC
+ /*
+ * Enforce inbound IPsec SPD.
+ */
+ if (ipsec4_in_reject(m, NULL)) {
+ ipsecstat.in_polvio++;
+ goto bad;
+ }
+#endif /* IPSEC */
ip_forward(m, 0);
+ }
#ifdef IPFIREWALL_FORWARD
ip_fw_fwd_addr = NULL;
#endif

NetBSD
------
Greg Troxel <gdt@ir.bbn.com>提供了如下补丁

NetBSD netbsd-1-5:

Index: src/sys/netinet/ip_input.c
===================================================================
RCS file: /NETBSD-CVS/netbsd/src/sys/netinet/ip_input.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 ip_input.c
--- src/sys/netinet/ip_input.c 2001/07/05 14:42:54 1.1.1.1
+++ src/sys/netinet/ip_input.c 2002/02/25 01:07:02
@@ -611,6 +611,15 @@
ipstat.ips_cantforward++;
m_freem(m);
} else {
+#ifdef IPSEC
+ /*
+ * Enforce inbound IPsec SPD.
+ */
+ if (ipsec4_in_reject(m, NULL)) {
+ ipsecstat.in_polvio++;
+ goto bad;
+ }
+#endif
/*
* If ip_dst matched any of my address on !IFF_UP interface,
* and there's no IFF_UP interface that matches ip_dst,

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