-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Release date: Monday, March 11, 2024 Contact: security@libreswan.org PGP key: 907E790F25C1E8E561CD73B585FF4B43B30FC6F9 ================================================================== CVE-2024-2357: Missing PreSharedKey for connection can cause crash ================================================================== This alert (and any updates) are available at the following URLs: https://libreswan.org/security/CVE-2024-2357 The Libreswan Project was notified of an issue causing libreswan to restart under some IKEv2 retransmit scenarios when a connection is configured to use PreSharedKeys (authby=secret) and the connection cannot find a matching configured secret. When such a connection is automatically added on startup using the auto= keyword, it can cause repeated crashes leading to a Denial of Service. Severity: Medium Vulnerable versions : libreswan 4.2 - 4.12 Not vulnerable : libreswan 4.1, 4.13+, 5.0+ Vulnerability information ========================= When an IKEv2 state would fail to find its own PreSharedKey (secret) to create the AUTH payload in the IKE_AUTH Exchange, it would omit sending a packet, but would not delete the state. When this state is referenced later, it would cause an assertion failure and crash and restart the pluto daemon. Exploitation ============ There is no known exploitation. A peer cannot cause this error to happen. Even if they would change their ID so a PSK cannot found, the connection fail properly at an earlier state. The vulnerability can only be triggered by a misconfiguration locally. Workaround ========== As a workaround to prevent such a misconfiguration from causing the crash, one can place an unguessable long random "catch all" secret in /etc/ipsec.secrets, for example using the following command: echo -e "# CVE-2024-2357 workaround\n: PSK \"$(openssl rand -hex 32)\"" >> /etc/ipsec.secrets This will ensure a PSK secret is always found, but it will always be wrong, and thus authentication will still properly fail. History ======= * 08-02-2024 https://github.com/libreswan/libreswan/issues/1609 reported * 14-02-2024 Workaround posted in the github issue * 15-02-2024 Fix published (as issue was already public via githb issue) * 10-03-2024 Advanced notice given to supported customers and distributions * 11-03-2024 Public announcement and release of 4.13 and 5.0 Credits ======= This vulnerability was found and reported by Andrew Vaughn. Upgrading ========= To address this vulnerability, please upgrade to libreswan 4.13 or later, or libreswan 5.0 or later. About libreswan (https://libreswan.org/) ======================================== Libreswan is a free implementation of the Internet Key Exchange (IKE) protocols IKEv1 and IKEv2. It is a descendant (continuation fork) of openswan 2.6.38. IKE is used to establish IPsec VPN connections. IPsec uses strong cryptography to provide both authentication and encryption services. These services allow you to build secure tunnels through untrusted networks. Everything passing through the untrusted network is encrypted by the IPsec gateway machine, and decrypted by the gateway at the other end of the tunnel. The resulting tunnel is a virtual private network (VPN). Patches ======= For those who cannot upgrade, the below patch can be applied. This patch is also available at: https://github.com/libreswan/libreswan/commit/cb9e1047d33fde695d63a95854c2bc2470a476c8.patch diff --git a/programs/pluto/ikev2_auth.c b/programs/pluto/ikev2_auth.c index ad5e3b5ede..fe75d6ea37 100644 - --- a/programs/pluto/ikev2_auth.c +++ b/programs/pluto/ikev2_auth.c @@ -862,7 +862,7 @@ stf_status submit_v2AUTH_generate_initiator_signature(struct ike_sa *ike, struct &signed_octets); if (d != NULL) { llog_diag(RC_LOG_SERIOUS, ike->sa.logger, &d, "%s", ""); - - return false; + return STF_FATAL; } if (DBGP(DBG_CRYPT)) { -----BEGIN PGP SIGNATURE----- iQJHBAEBCgAxFiEEkH55DyXB6OVhzXO1hf9LQ7MPxvkFAmXuQRETHHRlYW1AbGli cmVzd2FuLm9yZwAKCRCF/0tDsw/G+QyCD/4s6PfgDQ5U/26v563mjfI7eNn0+aY6 ES1/RjEXNvI1wBAhuET0GIcaGPS4de0EXsmCqsuVObx3954ZEMfob0XY9e7AyygM q4ps2WjsCOI0Bo9ezDuRrutkKLnColsFnuXqPjy4ts5dlnU3LgcWC//V2G8eR0Gh a9bfyiepk9JikzIY0+f2erF8YeXyonp0KDLorpn3pTUWDZXgYaju7lVpM0ScXyvn /D+cwo4tQ/JD0kC8nijG2ScoDjs/eyHjgzKghZIS+9T+dInp4kjK6JEoxYocYQEo hXyc0QQZvOyg+QTdJZVZ7rk8c+GOqWQqhU5wT/Ymd75eYpy1P2dCAlMkpMk7vajU Yga0C1J1yxVwa5VDUFAluBu8vzhVcCRu0LBBiWx/C18MB+nmJdZceae8HTjuJgpc IG/HDB8zoSyI32TOMpWPc3/mOhX46MBEOcjDnw6Rh5y/QWVOeX03wWR5VLDAgUAt BZr+909Bl+v3t6eOrGPqfiR9r7eNQMZVktpifpSRrg8SoX7lPoOMHXrdCt7tsRyJ AUqrEiqfkJr00eXC924rsTTyVq8x2jcsSrY/iEeAPW87pkQdttDrDfFsSg/qicKo YKPszWF5tTdykr6QuiSL+tOeITJDDqB6XoiL1l5n0S8OhLY++ye4cdglcNafoj8R 7SueGxOAbOxngw== =8zcz -----END PGP SIGNATURE-----