Back to Advisories

Advisories

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

Summary

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).

Affected system(s):

KNOWN VULNERABLE:

  • OpenBSD 3.4 and earlier
  • OpenBSD-current as of March 17, 2004

Vendor Info

OpenBSD
http://www.openbsd.org/

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.

Detailed Analysis

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 advisory@rapid7.com 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.

Solution

Update and rebuild the isakmpd daemon:

cd /usr/src/sbin/isakmpd
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.