Package: racoon
Severity: grave
Tags: sid sarge patch
Justification: remote DoS
Original Advisory:
https://bugzilla.redhat.com/bugz...nt.cgi?id=109966&action=view
http://secunia.com/advisories/14584/
Description:
Sebastian Krahmer has reported a vulnerability in KAME Racoon, which can
be exploited by malicious people to cause a DoS (Denial of Service).
The vulnerability is caused due to an error when parsing ISAKMP headers
and can be exploited via a specially crafted ISAKMP packet.
Solution:
The vulnerability has been fixed in SNAP release 2005/03/14.
http://www.kame.net/snap-users/
The attached patch's changelog is,
Tue Mar 8 05:31:52 JST 2005
* kame/kame/racoon/isakmp.c:
one of buffer overrun problem was fixed. from ipsec-tools team.
The diff is between,
kame-20050307-openbsd36-snap.tgz
kame-20050314-openbsd36-snap.tgz
-- System Information:
Debian Release: 3.1
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.6.10-1-k7
Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8)
Versions of packages racoon depends on:
ii debconf 1.4.46 Debian configuration management sy
ii ipsec-tools 1:0.5-4 IPsec tools for Linux
ii libc6 2.3.2.ds1-20 GNU C Library: Shared libraries an
ii libreadline5 5.0-10 GNU readline and history libraries
ii libssl0.9.7 0.9.7e-3 SSL shared libraries
ii perl 5.8.4-8 Larry Wall's Practical Extraction
diff -ru kame.old/kame/kame/racoon/isakmp.c kame.new/kame/kame/racoon/isakmp.c
--- kame.old/kame/kame/racoon/isakmp.c 2004-03-30 21:14:39.000000000 -0600
+++ kame.new/kame/kame/racoon/isakmp.c 2005-03-07 14:29:58.000000000 -0600
@@ -1,4 +1,4 @@
-/* $KAME: isakmp.c,v 1.181 2004/03/31 03:14:39 sakane Exp $ */
+/* $KAME: isakmp.c,v 1.182 2005/03/07 20:29:58 sakane Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -1151,7 +1151,7 @@
p->type = np;
p->len = ntohs(gen->len);
- if (p->len == 0 || p->len > tlen) {
+ if (p->len < sizeof(struct isakmp_gen) || p->len > tlen) {
plog(LLV_DEBUG, LOCATION, NULL,
"invalid length of payload\n");
vfree(result);