diff options
4 files changed, 157 insertions, 0 deletions
diff --git a/meta-oe/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-1.patch b/meta-oe/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-1.patch new file mode 100644 index 0000000000..c1dc6860f2 --- /dev/null +++ b/meta-oe/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-1.patch | |||
@@ -0,0 +1,32 @@ | |||
1 | From a7e711d0f162c6edc8acad2a96981d4890784ea3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Changqing Li <changqing.li@windriver.com> | ||
3 | Date: Mon, 12 May 2025 17:02:55 +0800 | ||
4 | Subject: [PATCH] auth-digest: Handle missing realm/nonce in authenticate | ||
5 | header | ||
6 | |||
7 | CVE: CVE-2025-32910 | ||
8 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/417/diffs?commit_id=e40df6d48a1cbab56f5d15016cc861a503423cfe] | ||
9 | |||
10 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
11 | --- | ||
12 | libsoup/soup-auth-digest.c | 3 +++ | ||
13 | 1 files changed, 3 insertions(+) | ||
14 | |||
15 | diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c | ||
16 | index e8ba990..0ab3499 100644 | ||
17 | --- a/libsoup/soup-auth-digest.c | ||
18 | +++ b/libsoup/soup-auth-digest.c | ||
19 | @@ -142,6 +142,9 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg, | ||
20 | guint qop_options; | ||
21 | gboolean ok = TRUE; | ||
22 | |||
23 | + if (!soup_auth_get_realm (auth)) | ||
24 | + return FALSE; | ||
25 | + | ||
26 | g_free (priv->domain); | ||
27 | g_free (priv->nonce); | ||
28 | g_free (priv->opaque); | ||
29 | |||
30 | -- | ||
31 | 2.34.1 | ||
32 | |||
diff --git a/meta-oe/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-2.patch b/meta-oe/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-2.patch new file mode 100644 index 0000000000..019a35e3be --- /dev/null +++ b/meta-oe/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-2.patch | |||
@@ -0,0 +1,94 @@ | |||
1 | From eccfca1074fc485a0b60dfb9c8385429a226bf73 Mon Sep 17 00:00:00 2001 | ||
2 | From: Changqing Li <changqing.li@windriver.com> | ||
3 | Date: Fri, 16 May 2025 13:19:38 +0800 | ||
4 | Subject: [PATCH] auth-digest: Handle missing nonce | ||
5 | |||
6 | CVE: CVE-2025-32910 | ||
7 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/417/diffs?commit_id=405a8a34597a44bd58c4759e7d5e23f02c3b556a] | ||
8 | |||
9 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
10 | --- | ||
11 | libsoup/soup-auth-digest.c | 45 ++++++++++++++++++++++++++++---------- | ||
12 | 1 files changed, 28 insertions(+), 10 deletions(-) | ||
13 | |||
14 | diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c | ||
15 | index 0ab3499..10a8591 100644 | ||
16 | --- a/libsoup/soup-auth-digest.c | ||
17 | +++ b/libsoup/soup-auth-digest.c | ||
18 | @@ -132,6 +132,19 @@ soup_auth_digest_get_qop (SoupAuthDigestQop qop) | ||
19 | return g_string_free (out, FALSE); | ||
20 | } | ||
21 | |||
22 | +static gboolean | ||
23 | +validate_params (SoupAuthDigest *auth_digest) | ||
24 | +{ | ||
25 | + SoupAuthDigestPrivate *priv = soup_auth_digest_get_instance_private (auth_digest); | ||
26 | + | ||
27 | + if (priv->qop || priv->algorithm == SOUP_AUTH_DIGEST_ALGORITHM_MD5_SESS) { | ||
28 | + if (!priv->nonce) | ||
29 | + return FALSE; | ||
30 | + } | ||
31 | + | ||
32 | + return TRUE; | ||
33 | +} | ||
34 | + | ||
35 | static gboolean | ||
36 | soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg, | ||
37 | GHashTable *auth_params) | ||
38 | @@ -169,17 +182,22 @@ soup_auth_digest_update (SoupAuth *auth, SoupMessage *msg, | ||
39 | if (priv->algorithm == -1) | ||
40 | ok = FALSE; | ||
41 | |||
42 | - stale = g_hash_table_lookup (auth_params, "stale"); | ||
43 | - if (stale && !g_ascii_strcasecmp (stale, "TRUE") && *priv->hex_urp) | ||
44 | - recompute_hex_a1 (priv); | ||
45 | - else { | ||
46 | - g_free (priv->user); | ||
47 | - priv->user = NULL; | ||
48 | - g_free (priv->cnonce); | ||
49 | - priv->cnonce = NULL; | ||
50 | - memset (priv->hex_urp, 0, sizeof (priv->hex_urp)); | ||
51 | - memset (priv->hex_a1, 0, sizeof (priv->hex_a1)); | ||
52 | - } | ||
53 | + if (!validate_params (auth_digest)) | ||
54 | + ok = FALSE; | ||
55 | + | ||
56 | + if (ok) { | ||
57 | + stale = g_hash_table_lookup (auth_params, "stale"); | ||
58 | + if (stale && !g_ascii_strcasecmp (stale, "TRUE") && *priv->hex_urp) | ||
59 | + recompute_hex_a1 (priv); | ||
60 | + else { | ||
61 | + g_free (priv->user); | ||
62 | + priv->user = NULL; | ||
63 | + g_free (priv->cnonce); | ||
64 | + priv->cnonce = NULL; | ||
65 | + memset (priv->hex_urp, 0, sizeof (priv->hex_urp)); | ||
66 | + memset (priv->hex_a1, 0, sizeof (priv->hex_a1)); | ||
67 | + } | ||
68 | + } | ||
69 | |||
70 | return ok; | ||
71 | } | ||
72 | @@ -359,6 +377,8 @@ soup_auth_digest_compute_response (const char *method, | ||
73 | if (qop) { | ||
74 | char tmp[9]; | ||
75 | |||
76 | + g_assert (cnonce); | ||
77 | + | ||
78 | g_snprintf (tmp, 9, "%.8x", nc); | ||
79 | g_checksum_update (checksum, (guchar *)tmp, strlen (tmp)); | ||
80 | g_checksum_update (checksum, (guchar *)":", 1); | ||
81 | @@ -422,6 +442,9 @@ soup_auth_digest_get_authorization (SoupAuth *auth, SoupMessage *msg) | ||
82 | g_return_val_if_fail (uri != NULL, NULL); | ||
83 | url = soup_uri_to_string (uri, TRUE); | ||
84 | |||
85 | + g_assert (priv->nonce); | ||
86 | + g_assert (!priv->qop || priv->cnonce); | ||
87 | + | ||
88 | soup_auth_digest_compute_response (msg->method, url, priv->hex_a1, | ||
89 | priv->qop, priv->nonce, | ||
90 | priv->cnonce, priv->nc, | ||
91 | |||
92 | -- | ||
93 | 2.34.1 | ||
94 | |||
diff --git a/meta-oe/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-3.patch b/meta-oe/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-3.patch new file mode 100644 index 0000000000..bdf4d64ca3 --- /dev/null +++ b/meta-oe/recipes-support/libsoup/libsoup-2.4/CVE-2025-32910-3.patch | |||
@@ -0,0 +1,28 @@ | |||
1 | From 74c95d54fe42041fe161cb74c76d942ffd37a5dd Mon Sep 17 00:00:00 2001 | ||
2 | From: Changqing Li <changqing.li@windriver.com> | ||
3 | Date: Fri, 16 May 2025 13:21:43 +0800 | ||
4 | Subject: [PATCH] auth-digest: Fix leak | ||
5 | |||
6 | CVE: CVE-2025-32910 | ||
7 | Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/417/diffs?commit_id=ea16eeacb052e423eb5c3b0b705e5eab34b13832] | ||
8 | |||
9 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
10 | --- | ||
11 | libsoup/soup-auth-digest.c | 1 + | ||
12 | 1 file changed, 1 insertion(+) | ||
13 | |||
14 | diff --git a/libsoup/soup-auth-digest.c b/libsoup/soup-auth-digest.c | ||
15 | index 10a8591..6d965d2 100644 | ||
16 | --- a/libsoup/soup-auth-digest.c | ||
17 | +++ b/libsoup/soup-auth-digest.c | ||
18 | @@ -66,6 +66,7 @@ soup_auth_digest_finalize (GObject *object) | ||
19 | g_free (priv->nonce); | ||
20 | g_free (priv->domain); | ||
21 | g_free (priv->cnonce); | ||
22 | + g_free (priv->opaque); | ||
23 | |||
24 | memset (priv->hex_urp, 0, sizeof (priv->hex_urp)); | ||
25 | memset (priv->hex_a1, 0, sizeof (priv->hex_a1)); | ||
26 | -- | ||
27 | 2.34.1 | ||
28 | |||
diff --git a/meta-oe/recipes-support/libsoup/libsoup-2.4_2.74.3.bb b/meta-oe/recipes-support/libsoup/libsoup-2.4_2.74.3.bb index 6d6a6420d2..3e4a8e14d4 100644 --- a/meta-oe/recipes-support/libsoup/libsoup-2.4_2.74.3.bb +++ b/meta-oe/recipes-support/libsoup/libsoup-2.4_2.74.3.bb | |||
@@ -29,6 +29,9 @@ SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz \ | |||
29 | file://CVE-2025-32050.patch \ | 29 | file://CVE-2025-32050.patch \ |
30 | file://CVE-2025-32052.patch \ | 30 | file://CVE-2025-32052.patch \ |
31 | file://CVE-2025-32909.patch \ | 31 | file://CVE-2025-32909.patch \ |
32 | file://CVE-2025-32910-1.patch \ | ||
33 | file://CVE-2025-32910-2.patch \ | ||
34 | file://CVE-2025-32910-3.patch \ | ||
32 | " | 35 | " |
33 | SRC_URI[sha256sum] = "e4b77c41cfc4c8c5a035fcdc320c7bc6cfb75ef7c5a034153df1413fa1d92f13" | 36 | SRC_URI[sha256sum] = "e4b77c41cfc4c8c5a035fcdc320c7bc6cfb75ef7c5a034153df1413fa1d92f13" |
34 | 37 | ||