Bug 1070356

Summary: openswan breaks NAT-T draft clients (and possibly ike fragmentation)
Product: Red Hat Enterprise Linux 6 Reporter: Paul Wouters <pwouters>
Component: openswanAssignee: Paul Wouters <pwouters>
Status: CLOSED ERRATA QA Contact: Aleš Mareček <amarecek>
Severity: high Docs Contact:
Priority: urgent    
Version: 6.5CC: amarecek, cww, eparis, jskala, ksrot, mkolaja, mrogers, pwouters
Target Milestone: rcKeywords: OtherQA, Regression, ZStream
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1070358 (view as bug list) Environment:
Last Closed: 2014-10-14 08:19:19 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1070358, 1090273    
Attachments:
Description Flags
patch for NAT-T draft payloads none

Description Paul Wouters 2014-02-26 16:35:52 UTC
Created attachment 868101 [details]
patch for NAT-T draft payloads

Description of problem:

When a client supporting only non-RFC versions of NAT-T connect to openswan, the connection is rejected with:

 ***parse ISAKMP Key Exchange Payload:
|    next payload type: ISAKMP_NEXT_NONCE
|    length: 260
| got payload 0x400(ISAKMP_NEXT_NONCE) needed: 0x400 opt: 0x102080
"any--east-l2tp"[1] 192.1.2.254 #1: next payload type of ISAKMP Nonce Payload has an unknown value: 130
"any--east-l2tp"[1] 192.1.2.254 #1: malformed payload in packet
| payload malformed after IV
| 
"any--east-l2tp"[1] 192.1.2.254 #1: sending notification PAYLOAD_MALFORMED to 192.1.2.254:500

Version-Release number of selected component (if applicable):
2.6.32-27.2

This can be tested most easily using Windows XP, as it does not support the NAT-T in RFC version, only draft version 2.

the cause is due to bug introduced while backporting the CVE fix for libreswan to openswan. A change in the payload_names struct accidentally left out the private use payload names (which include the two draft NAT-T payloads and the IKE fragmentation payload)

Patch attached to this bug,

Comment 4 Paul Wouters 2014-04-09 14:41:24 UTC
For this scenario, you need a setup that has an "old" client behind NAT to openswan as a server.

We have added an option ikev1_natt={bofh|rfc|draft} to libreswan that can suppress sending the RFC value, so that newer clients also fall into the older code that is broken in the latest openswan build, but this option hasn't made it into a release yet. I can make a patch that would apply to openswan so you can build it and configure it so that it does not understand the rfc but only the draft.

Otherwise, the easiest way to test this now is to use a Windows XP VM, as it does not support the RFC method, only the draft method.

I don't know how this customer is but Matt Rogers should know.

Comment 7 Karel Srot 2014-04-19 10:59:21 UTC
Hi Paul,
is this a duplicate to bug 1070356? If yes, could you please close this one?

Comment 8 Paul Wouters 2014-04-19 16:09:40 UTC
(In reply to Karel Srot from comment #7)
> Hi Paul,
> is this a duplicate to bug 1070356? If yes, could you please close this one?

uhm, you are asking if 1070356 is a duplicate of 1070356 ?

I'm a software engineer, not a philosopher :)

Comment 9 Paul Wouters 2014-04-23 00:46:26 UTC
note that bz#1072922 is a duplicate of this bug

Comment 10 Paul Wouters 2014-04-23 01:04:49 UTC
*** Bug 1072922 has been marked as a duplicate of this bug. ***

Comment 17 errata-xmlrpc 2014-10-14 08:19:19 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2014-1588.html