==========================================================================
Libreswan & Strongswan Security Notification  March 30, 2009
Remote DoS Vulnerability in Libreswan & Strongswan IPsec
CVE-2009-0790
==========================================================================
A vulnerability in the Dead Peer Detection (RFC-3706) code was found by
Gerd v. Egidy <gerd.von.egidy@intra2net.com> of Intra2net AG affecting
all Libreswan and all Strongswan releases.

A malicious (or expired ISAKMP) R_U_THERE or R_U_THERE_ACK Dead Peer
Detection packet can cause the pluto IKE daemon to crash and restart. No
authentication or encryption is required to trigger this bug. One spoofed
UDP packet can cause the pluto IKE daemon to restart and be unresponsive
for a few seconds while restarting.

A patch was created by Paul Wouters <paul@xelerance.com> for Libreswan and
Strongswan.

This bug affects the following software releases:

Current branches:

Libreswan-2.6.20 and earlier
Strongswan-4.2.13 and earlier

Maintenance mode branches:

Libreswan-2.4.13 and earlier
Strongswan-2.8.8 and earlier

End of Life branches:

Superfreeswan-1.9x
Libreswan-1.x
Libreswan-2.0.x - 2.3.1
Libreswan-2.5.x

Everyone is strongly encouraged to upgrade to these minimum versions:

libreswan-2.6.21
strongswan-4.2.14

libreswan-2.4.14
strongswan-2.8.9

If you cannot upgrade to a new version, please apply the appropriate
patch as listed at http://www.libreswan.org/CVE-2009-0790/

Dead Peer Detection is an IPsec IKE Notification message. It uses
an ICOOKIE/RCOOKIE mechanism to match an incoming packet to a know
Security Association (ISAKMP). Unlike most Notification messages, DPD
notifications have no phase2 state association.  Incorrect handling of
this exception can cause a NULL pointer dereference on a non-existing
state object 'st'. This bug is triggered in the case where one end has
expired an ISAKMP state, but the other end still uses the old state
to send a DPD Notification.

Since this state-lookup is performed before any encryption or
decryption takes place, as we need to find the proper ISAKMP to locate
the cryptogrpahic key material used for decryption, this bug can be
triggered without going through a phase1 (ISAKMP) negotiation.

When such a packet is received, the pluto daemon crashes and restarts.

Locations for downloading patches and source code:
http://www.libreswan.org/               http://www.strongswan.org/
ftp://ftp.libreswan.org/libreswan/       http://download1.strongswan.org/
ftp://ftp.libreswan.fi/pub/libreswan/    http://download2.strongswan.org/

Paul Wouters <paul@xelerance.com>
GPG key: 0xB5CC27E1
==========================================================================

These patches are included in libreswan-2.4.14 and libreswan-2.6.21 and above.

libreswan-2.x.x-dpd_null_state.patch should be applied to:
- libreswan-2.4.x < 2.4.14 (Maintenance mode)
- libreswan-2.5.x (EOL)
- libreswan-2.0.0 through libreswan-2.3.1 (EOL)
- libreswan-1.x (EOL)
- superfreeswan (EOL)

libreswan-2.6.x-dpd_null_state.patch should be applied to:
- libreswan-2.6.x < 2.6.21
