search menu icon-carat-right cmu-wordmark

CERT Coordination Center

TightVNC and UltraVNC Viewer contains a heap-based buffer overflow

Vulnerability Note VU#644655

Original Release Date: 2026-11-13 | Last Revised: 2026-11-13

Overview

A heap-based buffer overflow exists in the Tight JPEG decoding component of the TightVNC Windows Viewer version 1.3.10 and affected UltraVNC Windows Viewers. An attacker controlling a malicious VNC server can trigger memory corruption by sending a specially crafted screen update. Successful exploitation can crash the viewer and may allow arbitrary code execution, although only denial of service conditions were demonstrated during testing.

Description

TightVNC and UltraVNC provide remote desktop access using the Remote Framebuffer (RFB) protocol. Their viewer applications connect to VNC servers and decode screen updates for local display. Tight encoding supports JPEG compression of image data within these updates.

The Windows viewer function DecompressJpegRect() allocates a heap buffer using a hardcoded maximum row width of 8,192 pixels but converts JPEG pixel data using the server-supplied rectangle width without adequately checking that the output fits within the buffer. A malicious server can supply an oversized Tight JPEG rectangle that causes the conversion loop to write beyond the allocated memory. In an allocation demonstrated during testing, which included 256 bytes of padding, the out-of-bounds write began at a rectangle width of 8,257 pixels.

Exploitation requires a vulnerable viewer to establish a session with an attacker-controlled or compromised VNC server and process its crafted update. The server can advertise a sufficiently large framebuffer, so checking that the rectangle fits within the advertised framebuffer does not, by itself, prevent this overflow. Authentication or transport encryption does not prevent exploitation by a malicious server participating in the session.

Impact

An attacker controlling a VNC server can corrupt heap memory in a connected vulnerable viewer, terminating the application and interrupting the remote desktop session. Memory corruption may also permit arbitrary code execution with the privileges of the user running the viewer, but only denial of service was confirmed during testing.

Solution

Review the Vendor Information section for product-specific patch information.

According to UltraVNC’s release notes, the Tight JPEG heap overflow vulnerability was addressed in version 1.8.2.8. Users should upgrade to a current supported release containing that fix, such as version 1.8.3.1.

Unfortunately, we were unable to reach TightVNC to coordinate a fix for the affected 1.3.10 Windows viewer. Users should replace affected viewers with a maintained version or an alternative solution that has been confirmed to address the vulnerability.

Until a corrected viewer is deployed, restrict connections to trusted VNC servers only. This reduces exposure but does not protect against a compromised trusted server.

Acknowledgements

Thank you to re9rch for reporting this vulnerability. This document was written by Michael Bragg.

Vendor Information

644655
 

UltraVNC Not Affected

Notified:  2026-09-21 Updated: 2026-11-13

Statement Date:   September 22, 2026

CVE-2026-128321 Not Affected

Vendor Statement

Fixed
Date: zondag 23 augustus 2026 20:29:39
Committer: RudiDeVos
Commit Date: zondag 20 september 2026 17:58:48
vncviewer: fix Tight JPEG heap overflow by sizing buffer to actual width

DecompressJpegRect() used a hardcoded 8192-pixel row width to size the zlib buffer, but iterated over the server-supplied rectangle width without bounds checking. A malicious VNC server could send a Tight JPEG rectangle wider than 8192 pixels and overflow the COLORREF conversion buffer. Size the buffer to 2w4 and place the COLORREF row at m_zlibbuf[w*4] so it matches the actual JPEG row width, and reject non-positive or out-of-range rectangle dimensions.

Reported-by: @re9rch

https://github.com/ultravnc/UltraVNC/commit/d9a22c8fdc6be634f92d001fda62997e4bc1e90c

Glavsoft (TightVNC) Unknown

Notified:  2026-09-21 Updated: 2026-11-13

CVE-2026-128321 Unknown

Vendor Statement

We have not received a statement from the vendor.


Other Information

CVE IDs: CVE-2026-128321
API URL: VINCE JSON | CSAF
Date Public: 2026-11-13
Date First Published: 2026-11-13
Date Last Updated: 2026-11-13 00:08 UTC
Document Revision: 1

Sponsored by CISA.