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:
committed by
Paul Barker
parent
b8085938de
commit
37b718ecb9
@@ -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, '/');
|
||||
@@ -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 = " \
|
||||
|
||||
Reference in New Issue
Block a user