1
0
mirror of https://git.yoctoproject.org/poky synced 2026-07-22 17:57:01 +00:00

curl: fix CVE-2026-5773 - wrong reuse of SMB connection

libcurl's SMB handler marks connections for reuse (connkeep) without
verifying that subsequent requests target the same share. This allows
a second SMB request to the same host to reuse a connection
authenticated for a different share, potentially accessing data
without proper authorization.

The upstream fix removes connection reuse for SMB entirely in
lib/protocol.c, a file introduced in curl 8.20.0. For 8.7.1, the
equivalent fix is changing connkeep() to connclose() in lib/smb.c,
which prevents the connection from being returned to the pool.

Tested with SMBv1 server (Docker dperson/samba):
  Without patch: "Re-using existing connection" for different shares
  With patch: New connection per request, no reuse

Binary verified: Curl_conncontrol arg changes from 0 (KEEP) to 1 (CLOSE)

Reference: https://curl.se/docs/CVE-2026-5773.html

(From OE-Core rev: 7736f905e78162ac657d7a1c790dfa5701dd6b19)

Signed-off-by: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Paul Barker <paul@pbarker.dev>
This commit is contained in:
Jaipaul Cheernam
2026-07-06 10:14:49 +02:00
committed by Paul Barker
parent b8085938de
commit 37b718ecb9
2 changed files with 41 additions and 0 deletions
@@ -0,0 +1,40 @@
From 74a169575d6412dc0ff532acdf94de35a6c2a571 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Sun, 5 Apr 2026 18:23:35 +0200
Subject: [PATCH] protocol: disable connection reuse for SMB(S)
Connections should only be reused when using the same "share" (and
perhaps some additional conditions), but instead of fixing this flaw,
this change completely disables connection reuse for SMB. This protocol
is about to get dropped soon anyway.
Reported-by: Osama Hamad
Closes #21238
CVE: CVE-2026-5773
Upstream-Status: Backport [https://github.com/curl/curl/commit/74a169575d6412dc0ff532acdf94de35a6c2a571]
Note: The upstream fix targets lib/protocol.c which was introduced in
curl 8.20.0. In 8.7.1 the equivalent is changing connkeep() to
connclose() in lib/smb.c, which prevents the connection from being
returned to the pool. The effect is identical.
Signed-off-by: Jaipaul Cheernam <jaipaul.cheernam@est.tech>
---
lib/smb.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lib/smb.c b/lib/smb.c
index 7c73cbcec..a1f5c9b31 100644
--- a/lib/smb.c
+++ b/lib/smb.c
@@ -461,8 +461,7 @@ static CURLcode smb_connect(struct Curl_easy *data, bool *done)
if(!smbc->send_buf)
return CURLE_OUT_OF_MEMORY;
- /* Multiple requests are allowed with this connection */
- connkeep(conn, "SMB default");
+ connclose(conn, "SMB default");
/* Parse the username, domain, and password */
slash = strchr(conn->user, '/');
+1
View File
@@ -36,6 +36,7 @@ SRC_URI = " \
file://CVE-2026-1965-2.patch \
file://CVE-2026-3783.patch \
file://CVE-2026-3784.patch \
file://CVE-2026-5773.patch \
"
SRC_URI:append:class-nativesdk = " \