public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/curl] f44: Resolves: CVE-2026-8458 - wrong reuse for different services
@ 2026-09-08 13:41 Jan Macku
0 siblings, 0 replies; only message in thread
From: Jan Macku @ 2026-09-08 13:41 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/curl
Branch : f44
Commit : 36d78322637794048cbf72be708508b2e728daba
Author : Jan Macku <jamacku@redhat.com>
Date : 2026-08-27T16:00:10+02:00
Stats : +128/-0 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/curl/c/36d78322637794048cbf72be708508b2e728daba?branch=f44
Log:
Resolves: CVE-2026-8458 - wrong reuse for different services
---
diff --git a/0025-curl-8.18.0-CVE-2026-8458.patch b/0025-curl-8.18.0-CVE-2026-8458.patch
new file mode 100644
index 0000000..0708bbc
--- /dev/null
+++ b/0025-curl-8.18.0-CVE-2026-8458.patch
@@ -0,0 +1,124 @@
+From 179746545e59d241dfb9901588a60bbd100397ea Mon Sep 17 00:00:00 2001
+From: Stefan Eissing <stefan@eissing.org>
+Date: Wed, 13 May 2026 12:02:48 +0200
+Subject: [PATCH] creds: add sasl service name
+
+The SASL service name, used in authentication, is part of curl's credentials
+when authenticating to a server/proxy. Make it part of the connection's
+credentials so that connection reuse is only allowed when the service
+name matches.
+
+Closes #21585
+
+(cherry picked from commit 5e99b73cf441d9c369768b9cd48b5389b9a2503d)
+Co-authored-by: Cursor <cursoragent@cursor.com>
+---
+ lib/url.c | 36 +++++++++++++++++++++++++++++++-----
+ lib/urldata.h | 2 ++
+ 2 files changed, 33 insertions(+), 5 deletions(-)
+
+diff --git a/lib/url.c b/lib/url.c
+index 900b0f7352..c3fb1439ca 100644
+--- a/lib/url.c
++++ b/lib/url.c
+@@ -538,6 +538,8 @@ void Curl_conn_free(struct Curl_easy *data, struct connectdata *conn)
+ Curl_safefree(conn->sasl_authzid);
+ Curl_safefree(conn->options);
+ Curl_safefree(conn->oauth_bearer);
++ Curl_safefree(conn->sasl_service);
++ Curl_safefree(conn->proxy_service);
+ Curl_safefree(conn->host.rawalloc); /* hostname buffer */
+ Curl_safefree(conn->conn_to_host.rawalloc); /* hostname buffer */
+ Curl_safefree(conn->hostname_resolve);
+@@ -1032,7 +1034,8 @@ static bool url_match_auth(struct connectdata *conn,
+ if(Curl_timestrcmp(m->needle->user, conn->user) ||
+ Curl_timestrcmp(m->needle->passwd, conn->passwd) ||
+ Curl_timestrcmp(m->needle->sasl_authzid, conn->sasl_authzid) ||
+- Curl_timestrcmp(m->needle->oauth_bearer, conn->oauth_bearer)) {
++ Curl_timestrcmp(m->needle->oauth_bearer, conn->oauth_bearer) ||
++ Curl_timestrcmp(m->needle->sasl_service, conn->sasl_service)) {
+ /* one of them was different */
+ return FALSE;
+ }
+@@ -1114,7 +1117,8 @@ static bool url_match_auth_ntlm(struct connectdata *conn,
+ partway through a handshake!) */
+ if(m->want_ntlm_http) {
+ if(Curl_timestrcmp(m->needle->user, conn->user) ||
+- Curl_timestrcmp(m->needle->passwd, conn->passwd)) {
++ Curl_timestrcmp(m->needle->passwd, conn->passwd) ||
++ Curl_timestrcmp(m->needle->sasl_service, conn->sasl_service)) {
+
+ /* we prefer a credential match, but this is at least a connection
+ that can be reused and "upgraded" to NTLM */
+@@ -1139,7 +1143,9 @@ static bool url_match_auth_ntlm(struct connectdata *conn,
+ if(Curl_timestrcmp(m->needle->http_proxy.user,
+ conn->http_proxy.user) ||
+ Curl_timestrcmp(m->needle->http_proxy.passwd,
+- conn->http_proxy.passwd))
++ conn->http_proxy.passwd) ||
++ Curl_timestrcmp(m->needle->proxy_service,
++ conn->proxy_service))
+ return FALSE;
+ }
+ else if(conn->proxy_ntlm_state != NTLMSTATE_NONE) {
+@@ -1180,7 +1186,8 @@ static bool url_match_auth_nego(struct connectdata *conn,
+ so that we can reuse Negotiate connections if possible. */
+ if(m->want_nego_http) {
+ if(Curl_timestrcmp(m->needle->user, conn->user) ||
+- Curl_timestrcmp(m->needle->passwd, conn->passwd))
++ Curl_timestrcmp(m->needle->passwd, conn->passwd) ||
++ Curl_timestrcmp(m->needle->sasl_service, conn->sasl_service))
+ return FALSE;
+ }
+ else if(conn->http_negotiate_state != GSS_AUTHNONE) {
+@@ -1199,7 +1206,9 @@ static bool url_match_auth_nego(struct connectdata *conn,
+ if(Curl_timestrcmp(m->needle->http_proxy.user,
+ conn->http_proxy.user) ||
+ Curl_timestrcmp(m->needle->http_proxy.passwd,
+- conn->http_proxy.passwd))
++ conn->http_proxy.passwd) ||
++ Curl_timestrcmp(m->needle->proxy_service,
++ conn->proxy_service))
+ return FALSE;
+ }
+ else if(conn->proxy_negotiate_state != GSS_AUTHNONE) {
+@@ -3505,6 +3514,23 @@ static CURLcode create_conn(struct Curl_easy *data,
+ }
+ }
+
++ if(data->set.str[STRING_SERVICE_NAME]) {
++ conn->sasl_service = curlx_strdup(data->set.str[STRING_SERVICE_NAME]);
++ if(!conn->sasl_service) {
++ result = CURLE_OUT_OF_MEMORY;
++ goto out;
++ }
++ }
++
++ if(data->set.str[STRING_PROXY_SERVICE_NAME]) {
++ conn->proxy_service =
++ curlx_strdup(data->set.str[STRING_PROXY_SERVICE_NAME]);
++ if(!conn->proxy_service) {
++ result = CURLE_OUT_OF_MEMORY;
++ goto out;
++ }
++ }
++
+ #ifdef USE_UNIX_SOCKETS
+ if(data->set.str[STRING_UNIX_SOCKET_PATH]) {
+ conn->unix_domain_socket =
+diff --git a/lib/urldata.h b/lib/urldata.h
+index 7e36cc2336..318dfdb84c 100644
+--- a/lib/urldata.h
++++ b/lib/urldata.h
+@@ -637,6 +637,8 @@ struct connectdata {
+ char *options; /* options string, allocated */
+ char *sasl_authzid; /* authorization identity string, allocated */
+ char *oauth_bearer; /* OAUTH2 bearer, allocated */
++ char *sasl_service; /* SASL service name, allocated */
++ char *proxy_service; /* proxy SASL service name, allocated */
+ struct curltime created; /* creation time */
+ struct curltime lastused; /* when returned to the connection poolas idle */
+
+--
+2.55.0
+
diff --git a/curl.spec b/curl.spec
index 6f84fc4..d398785 100644
--- a/curl.spec
+++ b/curl.spec
@@ -96,6 +96,9 @@ Patch023: 0023-curl-8.18.0-CVE-2026-11564.patch
# Fix stale proxy password leak (CVE-2026-9079)
Patch024: 0024-curl-8.18.0-CVE-2026-9079.patch
+# Fix wrong reuse for different services (CVE-2026-8458)
+Patch025: 0025-curl-8.18.0-CVE-2026-8458.patch
+
# patch making libcurl multilib ready
Patch101: 0101-curl-7.32.0-multilib.patch
@@ -526,6 +529,7 @@ rm -f ${RPM_BUILD_ROOT}%{_mandir}/man1/wcurl.1*
- Fix HTTP/2 stream-dependency tree UAF (CVE-2026-10536)
- Fix Native CA trust persist (CVE-2026-11564)
- Fix stale proxy password leak (CVE-2026-9079)
+- Fix wrong reuse for different services (CVE-2026-8458)
* Mon Aug 24 2026 Jan Macku <jamacku@redhat.com> - 8.18.0-9
- Fix QUIC zero-length UDP datagrams busy-loop (CVE-2026-11352)
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-09-08 13:41 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-08 13:41 [rpms/curl] f44: Resolves: CVE-2026-8458 - wrong reuse for different services Jan Macku
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox