strongswan: patch CVE-2026-78127

Use patch[1] provided by strongSwan[2]

Details:
https://nvd.nist.gov/vuln/detail/cve-2026-78127

[1]https://download.strongswan.org/security/CVE-2026-78127/strongswan-5.3.1-6.0.7_message_log_leak.patch
[2]https://www.strongswan.org/blog/2026/09/07/strongswan-vulnerability-(cve-2026-78127).html

Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
Signed-off-by: Anuj Mittal <anuj.mittal@oss.qualcomm.com>
(cherry picked from commit 7b8fd4df2e)
Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
This commit is contained in:
Ankur Tyagi committed 2026-10-13 21:32:54 +13:00
1 parent 9b00eaf6ee
commit 22d52d3b42
2 files changed
+116

No files matched your search

@@ -0,0 +1,115 @@
From b38d55b7df137e599c0364a8f0e6d3e1ab84ed50 Mon Sep 17 00:00:00 2001
From: Tobias Brunner <tobias@strongswan.org>
Date: Mon, 8 Jun 2026 09:19:42 +0200
Subject: [PATCH] message: Avoid memory leak if string buffer for message is
too small
This leaked 40 or 80 bytes per parsed message for the enumerators that
were not destroyed. While triggering an OOM condition will require quite
a lot of messages and the DoS protection also helps avoiding that this
is triggered quickly, it all depends on the memory constraints of the
system and the time available to the attacker. Also, if IKEv1 is allowed,
it could get quicker as the lack of message IDs doesn't allow dismissing
unexpected messages before parsing them.
Fixes: 092958c89d52 ("fixed payload debug message")
Fixes: 6a4a47511f75 ("Show contents of the CP payload in message_t stringification")
Fixes: CVE-2026-78127
CVE: CVE-2026-78127
Upstream-Status: Backport [https://github.com/strongswan/strongswan/commit/4b7108ac0f84fbf40da2b510eb6333afa2a54240]
Signed-off-by: Ankur Tyagi <ankur.tyagi85@gmail.com>
---
src/libcharon/encoding/message.c | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/src/libcharon/encoding/message.c b/src/libcharon/encoding/message.c
index 8da9a1d..a4bf9cb 100644
--- a/src/libcharon/encoding/message.c
+++ b/src/libcharon/encoding/message.c
@@ -1398,7 +1398,7 @@ static char* get_string(private_message_t *this, char *buf, int len)
payload->get_type(payload));
if (written >= len || written < 0)
{
- return buf;
+ goto err;
}
pos += written;
len -= written;
@@ -1424,7 +1424,7 @@ static char* get_string(private_message_t *this, char *buf, int len)
}
if (written >= len || written < 0)
{
- return buf;
+ goto err;
}
pos += written;
len -= written;
@@ -1454,7 +1454,7 @@ static char* get_string(private_message_t *this, char *buf, int len)
eap->get_code(eap), method);
if (written >= len || written < 0)
{
- return buf;
+ goto err;
}
pos += written;
len -= written;
@@ -1495,7 +1495,8 @@ static char* get_string(private_message_t *this, char *buf, int len)
attribute->get_type(attribute));
if (written >= len || written < 0)
{
- return buf;
+ attributes->destroy(attributes);
+ goto err;
}
pos += written;
len -= written;
@@ -1507,7 +1508,7 @@ static char* get_string(private_message_t *this, char *buf, int len)
written = snprintf(pos, len, ")");
if (written >= len || written < 0)
{
- return buf;
+ goto err;
}
pos += written;
len -= written;
@@ -1529,7 +1530,7 @@ static char* get_string(private_message_t *this, char *buf, int len)
}
if (written >= len || written < 0)
{
- return buf;
+ goto err;
}
pos += written;
len -= written;
@@ -1544,7 +1545,7 @@ static char* get_string(private_message_t *this, char *buf, int len)
frag->get_total_fragments(frag));
if (written >= len || written < 0)
{
- return buf;
+ goto err;
}
pos += written;
len -= written;
@@ -1557,16 +1558,16 @@ static char* get_string(private_message_t *this, char *buf, int len)
written = snprintf(pos, len, "(%d)", unknown->get_type(unknown));
if (written >= len || written < 0)
{
- return buf;
+ goto err;
}
pos += written;
len -= written;
}
}
- enumerator->destroy(enumerator);
-
- /* remove last space */
snprintf(pos, len, " ]");
+
+err:
+ enumerator->destroy(enumerator);
return buf;
}
#endif
@@ -12,6 +12,7 @@ SRC_URI = "https://download.strongswan.org/strongswan-${PV}.tar.bz2 \
file://CVE-2026-78123.patch \
file://CVE-2026-78124.patch \
file://CVE-2026-78126.patch \
file://CVE-2026-78127.patch \
"
SRC_URI[sha256sum] = "e518e34e159514f4c6ba80d1f926cb151e0dd4e3a1d94213171234b8b9ae6f55"