What this actually is.
Technical background, root cause, and affected surface.
Win8ScreenDriver::applyNewScreenProperties() resets m_drvImpl to NULL before constructing a new DXGI implementation. If the constructor throws (GPU reset, display hot-plug, RDP/session change, hybrid-GPU switch), m_drvImpl stays NULL and is later dereferenced without checks by executeDetection(), getScreenBuffer(), grabFb(), getScreenPropertiesChanged() and getCursorPosition(), crashing the server.
- Product
- TightVNC
- Vendor
- GlavSoft LLC
- Severity
- Medium
- CVSS Score
- 5.9
- Status
- Published
- Vector
- CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
- CWE
- CWE-476: NULL Pointer Dereference
From one request
to root shell.
Reproduced in a sandboxed environment. Requires only LAN or WiFi adjacency.
Working PoC developed by Securin and shared privately with the vendor; no public PoC released.
The bug, and the fix.
Win8ScreenDriver.cpp:100-136 applyNewScreenProperties() - m_drvImpl set to 0 then constructor throws Win8ScreenDriver.cpp:58/79/85/91/135 - executeDetection(), getScreenBuffer(), grabFb(), getScreenPropertiesChanged(), getCursorPosition() dereference m_drvImpl without NULL check (header states it 'must be always guaranteed non zero')
What an attacker does to you.
Post-exploitation outcomes mapped to CVSS impact metrics.
TightVNC Server crash and loss of all active remote sessions (denial of service)
C:N · I:N · A:H
CWE-476: NULL Pointer Dereference
Fix it. In this order.
A runbook, not a checklist. Sequence matters — assume compromise before you act.
Upgrade TightVNC to 2.8.88 or later, which adds internal state checks during screen capture. Configure service recovery to restart the server automatically.
disclose@securin.ioVendors moved in days.
Attackers in hours.
Reconstructed from vendor advisories, CISA bulletins, and Securin research records.
Reported to vendor (SourceForge #1660)
Vendor acknowledged
TightVNC 2.8.88 released with fix
CVE published to MITRE
Disclosed 20 days after discovery
Cite, verify, go deeper.
Primary sources — NVD, CISA KEV, and machine-readable IoC feed.