Package: release.debian.org Severity: normal Tags: trixie X-Debbugs-Cc: [email protected], [email protected] Control: affects -1 + src:libvncserver User: [email protected] Usertags: pu
Dear Release Managers, I would like to close these bugs regarding trixie through p-u: https://bugs.debian.org/1132016 https://bugs.debian.org/1132017 [ Reason ] This fixes CVE-2026-32853 and CVE-2026-32854. [ Impact ] CVE-2026-32853: A malicious VNC server can cause information disclosure or application crash to the client. CVE-2026-32854: Attackers can crash the server when httpd and proxy features are enabled. [ Tests ] Build tests and autopkgstest locally and on debusine.d.n: https://debusine.debian.net/debian/developers/work-request/556022/ [ Risks ] I consider the risks low as the fix consists exactly of upstream's commits: https://github.com/LibVNC/libvncserver/commit/009008e https://github.com/LibVNC/libvncserver/commit/dc78dee [ Checklist ] [x] *all* changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach debdiff against the package in stable [x] the issue is verified as fixed in unstable -- GPG Fingerprint 3DF5 E8AA 43FC 9FDF D086 F195 ADF5 0EDA F8AD D585
diff -Nru libvncserver-0.9.15+dfsg/debian/changelog libvncserver-0.9.15+dfsg/debian/changelog --- libvncserver-0.9.15+dfsg/debian/changelog 2025-04-10 12:51:42.000000000 +0200 +++ libvncserver-0.9.15+dfsg/debian/changelog 2026-04-03 21:45:50.000000000 +0200 @@ -1,3 +1,14 @@ +libvncserver (0.9.15+dfsg-1+deb13u1) UNRELEASED; urgency=medium + + * Team upload. + * debian/patches: + + CVE-2026-32853: Add 0001_CVE-2026-32853.patch fixing a heap out-of-bounds + read (Closes: #1132016). + + CVE-2026-32854: Add 0002_CVE-2026-32854.patch fixing NULL pointer + dereferences in httpd proxy handlers (Closes: #1132017). + + -- Sven Geuer <[email protected]> Fri, 03 Apr 2026 21:45:50 +0200 + libvncserver (0.9.15+dfsg-1) unstable; urgency=medium * New upstream release. diff -Nru libvncserver-0.9.15+dfsg/debian/patches/0001_CVE-2026-32853.patch libvncserver-0.9.15+dfsg/debian/patches/0001_CVE-2026-32853.patch --- libvncserver-0.9.15+dfsg/debian/patches/0001_CVE-2026-32853.patch 1970-01-01 01:00:00.000000000 +0100 +++ libvncserver-0.9.15+dfsg/debian/patches/0001_CVE-2026-32853.patch 2026-04-03 21:45:50.000000000 +0200 @@ -0,0 +1,61 @@ +Description: Fix CVE-2026-32853, Heap Out-of-Bounds Read in HandleUltraZipBPP + For details see + https://github.com/LibVNC/libvncserver/security/advisories/GHSA-87q7-v983-qwcj +Origin: upstream, https://github.com/LibVNC/libvncserver/commit/009008e +Bug-Debian: https://bugs.debian.org/1132016 +Forwarded: not-needed +Reviewed-by: Sven Geuer <[email protected]> +Last-Update: 2026-04-03 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +diff --git a/src/libvncclient/ultra.c b/src/libvncclient/ultra.c +index 1d3aaba6..5633b8cb 100644 +--- a/src/libvncclient/ultra.c ++++ b/src/libvncclient/ultra.c +@@ -126,6 +126,7 @@ HandleUltraZipBPP (rfbClient* client, int rx, int ry, int rw, int rh) + int toRead=0; + int inflateResult=0; + unsigned char *ptr=NULL; ++ unsigned char *ptr_end=NULL; + lzo_uint uncompressedBytes = ry + (rw * 65535); + unsigned int numCacheRects = rx; + +@@ -194,11 +195,18 @@ HandleUltraZipBPP (rfbClient* client, int rx, int ry, int rw, int rh) + + /* Put the uncompressed contents of the update on the screen. */ + ptr = (unsigned char *)client->raw_buffer; ++ ptr_end = ptr + uncompressedBytes; + for (i=0; i<numCacheRects; i++) + { + unsigned short sx, sy, sw, sh; + unsigned int se; + ++ /* subrect header: sx(2) + sy(2) + sw(2) + sh(2) + se(4) = 12 bytes */ ++ if (ptr + 12 > ptr_end) { ++ rfbClientLog("UltraZip: subrect %d header exceeds decompressed data bounds\n", i); ++ return FALSE; ++ } ++ + memcpy((char *)&sx, ptr, 2); ptr += 2; + memcpy((char *)&sy, ptr, 2); ptr += 2; + memcpy((char *)&sw, ptr, 2); ptr += 2; +@@ -213,8 +221,13 @@ HandleUltraZipBPP (rfbClient* client, int rx, int ry, int rw, int rh) + + if (se == rfbEncodingRaw) + { ++ uint64_t rawBytes = (uint64_t)sw * sh * (BPP / 8); ++ if (rawBytes > (size_t)(ptr_end - ptr)) { ++ rfbClientLog("UltraZip: subrect %d raw data exceeds decompressed data bounds\n", i); ++ return FALSE; ++ } + client->GotBitmap(client, (unsigned char *)ptr, sx, sy, sw, sh); +- ptr += ((sw * sh) * (BPP / 8)); ++ ptr += (size_t)rawBytes; + } + } + +@@ -222,3 +235,4 @@ HandleUltraZipBPP (rfbClient* client, int rx, int ry, int rw, int rh) + } + + #undef CARDBPP ++ diff -Nru libvncserver-0.9.15+dfsg/debian/patches/0002_CVE-2026-32854.patch libvncserver-0.9.15+dfsg/debian/patches/0002_CVE-2026-32854.patch --- libvncserver-0.9.15+dfsg/debian/patches/0002_CVE-2026-32854.patch 1970-01-01 01:00:00.000000000 +0100 +++ libvncserver-0.9.15+dfsg/debian/patches/0002_CVE-2026-32854.patch 2026-04-03 21:45:50.000000000 +0200 @@ -0,0 +1,54 @@ +Description: Fix CVE-2026-32854, NULL pointer derefs in httpd proxy handlers + For details see + https://github.com/LibVNC/libvncserver/security/advisories/GHSA-xjp8-4qqv-5x4x +Origin: upstream, https://github.com/LibVNC/libvncserver/commit/dc78dee +Bug-Debian: https://bugs.debian.org/1132017 +Forwarded: not-needed +Reviewed-by: Sven Geuer <[email protected]> +Last-Update: 2026-04-03 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +diff --git a/src/libvncserver/httpd.c b/src/libvncserver/httpd.c +index f4fe51c9..7cefadc4 100644 +--- a/src/libvncserver/httpd.c ++++ b/src/libvncserver/httpd.c +@@ -353,10 +353,11 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen) + + + /* Process the request. */ +- if(rfbScreen->httpEnableProxyConnect) { ++if(rfbScreen->httpEnableProxyConnect) { + const static char* PROXY_OK_STR = "HTTP/1.0 200 OK\r\nContent-Type: octet-stream\r\nPragma: no-cache\r\n\r\n"; + if(!strncmp(buf, "CONNECT ", 8)) { +- if(atoi(strchr(buf, ':')+1)!=rfbScreen->port) { ++ char *colon = strchr(buf, ':'); ++ if(colon == NULL || atoi(colon+1)!=rfbScreen->port) { + rfbErr("httpd: CONNECT format invalid.\n"); + rfbWriteExact(&cl,INVALID_REQUEST_STR, strlen(INVALID_REQUEST_STR)); + httpCloseSock(rfbScreen); +@@ -369,14 +370,17 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen) + rfbScreen->httpSock = RFB_INVALID_SOCKET; + return; + } +- if (!strncmp(buf, "GET ",4) && !strncmp(strchr(buf,'/'),"/proxied.connection HTTP/1.", 27)) { +- /* proxy connection */ +- rfbLog("httpd: client asked for /proxied.connection\n"); +- rfbWriteExact(&cl,PROXY_OK_STR,strlen(PROXY_OK_STR)); +- rfbNewClientConnection(rfbScreen,rfbScreen->httpSock); +- rfbScreen->httpSock = RFB_INVALID_SOCKET; +- return; +- } ++ if (!strncmp(buf, "GET ",4)) { ++ char *slash = strchr(buf, '/'); ++ if (slash != NULL && !strncmp(slash,"/proxied.connection HTTP/1.", 27)) { ++ /* proxy connection */ ++ rfbLog("httpd: client asked for /proxied.connection\n"); ++ rfbWriteExact(&cl,PROXY_OK_STR,strlen(PROXY_OK_STR)); ++ rfbNewClientConnection(rfbScreen,rfbScreen->httpSock); ++ rfbScreen->httpSock = RFB_INVALID_SOCKET; ++ return; ++ } ++ } + } + + if (strncmp(buf, "GET ", 4)) { diff -Nru libvncserver-0.9.15+dfsg/debian/patches/series libvncserver-0.9.15+dfsg/debian/patches/series --- libvncserver-0.9.15+dfsg/debian/patches/series 1970-01-01 01:00:00.000000000 +0100 +++ libvncserver-0.9.15+dfsg/debian/patches/series 2026-04-03 21:45:50.000000000 +0200 @@ -0,0 +1,2 @@ +0001_CVE-2026-32853.patch +0002_CVE-2026-32854.patch
signature.asc
Description: This is a digitally signed message part

