ike-sa-manager: Make sure the message ID of initial messages is 0
authorTobias Brunner <tobias@strongswan.org>
Wed, 25 Feb 2015 07:09:11 +0000 (08:09 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 4 Mar 2015 12:47:53 +0000 (13:47 +0100)
commit650a3ad5151958b99a95836fb8b84b8aa18da1be
tree12cdcd090ae71e739100dd3e05c68dbec48fcf12
parenteb251906298b529fa53b8a99746a9a7a9f318dd5
ike-sa-manager: Make sure the message ID of initial messages is 0

It is mandated by the RFCs and it is expected by the task managers.

Initial messages with invalid MID will be treated like regular messages,
so no IKE_SA will be created for them.  Instead, if the responder SPI is 0
no SA will be found and the message is rejected with ALERT_INVALID_IKE_SPI.
If an SPI is set and we do find an SA, then we either ignore the message
because the MID is unexpected, or because we don't allow initial messages
on established connections.

There is one exception, though, if an attacker can slip in an IKE_SA_INIT
with both SPIs set before the client's IKE_AUTH is handled by the server,
it does get processed (see next commit).

References #816.
src/libcharon/sa/ike_sa_manager.c