Rapid7 Advisory R7-0018: OpenBSD isakmpd payload handling denial-of-service vulnerabilities
Published: May 4, 2004 Revision: 1.0 http://www.rapid7.com/advisories/R7-0018.jsp CVE: CAN-2004-0218, CAN-2004-0219, CAN-2004-0220, CAN-2004-0221, CAN-2004-0222
The ISAKMP packet processing functions in OpenBSD's isakmpd daemon contain multiple payload handling flaws that allow a remote attacker to launch a denial of service attack against the daemon.
Carefully crafted ISAKMP packets will cause the isakmpd daemon to attempt out-of-bounds reads, exhaust available memory, or loop endlessly (consuming 100% of the CPU).
- OpenBSD 3.4 and earlier
- OpenBSD-current as of March 17, 2004
OpenBSD has been notified of the issues and they have provided source code patches to fix the problems for -current, 3.4-stable, and 3.3-stable. See http://www.openbsd.org/errata.html for more information.
The isakmpd daemon in the upcoming OpenBSD 3.5 release will be privilege-separated, which greatly lessens the risk of any future vulnerabilities that may be found.
To test the security and robustness of IPSEC implementations from multiple vendors, the security research team at Rapid7 has designed the Striker ISAKMP Protocol Test Suite. Striker is an ISAKMP packet generation tool that automatically produces and sends invalid and/or atypical ISAKMP packets.
This advisory is the first in a series of vulnerability disclosures discovered with the Striker test suite. Striker will be made available to qualified IPSEC vendors. Please email firstname.lastname@example.org for more information on obtaining Striker.
OpenBSD's isakmpd daemon performs insufficient validation on payload lengths and payload field lengths before attempting to read the fields. This results in out-of-bounds reads in several cases.
Denial of service by 0-length ISAKMP payload
CVE ID: CAN-2004-0218
An ISAKMP packet with a malformed payload having a self-reported payload length of zero will cause isakmpd to enter an infinite loop, parsing the same payload over and over again.
This issue is similar to CAN-2003-0989, which affected TCPDUMP.
Denial of service by various malformed ISAKMP IPSEC SA payload
CVE ID: CAN-2004-0219
An ISAKMP packet with a malformed IPSEC SA payload will cause isakmpd to read out of bounds and crash.
Denial of service by malformed ISAKMP Cert Request payload
CVE ID: CAN-2004-0220
An ISAKMP packet with a malformed Cert Request payload will cause an integer underflow, resulting in a failed malloc of a huge amount of memory.
Denial of service by malformed ISAKMP Delete payload
CVE ID: CAN-2004-0221
An ISAKMP packet with a malformed delete payload having a large number of SPIs will cause isakmpd to read out of bounds and crash.
Denial of service by various memory leaks
CVE ID: CAN-2004-0222
Various memory leaks in packet processing can be triggered by a remote attacker until all available memory is exhausted, resulting in eventual termination of the daemon.
Update and rebuild the isakmpd daemon:
cvs update -dP
make clean && make obj && make && sudo make install
You can also apply the appropriate patches from http://www.openbsd.org/errata.html instead of using CVS.
Disclaimer & Copyright
Rapid7, LLC is not responsible for the misuse of the information provided in our security advisories. These advisories are a service to the professional security community. There are NO WARRANTIES with regard to this information. Any application or distribution of this information constitutes acceptance AS IS, at the user's own risk. This information is subject to change without notice.
This advisory Copyright (C) 2004 Rapid7, LLC. Permission is hereby granted to redistribute this advisory, providing that no changes are made and that the copyright notices and disclaimers remain intact.