Executive brief
Vim is a widely-used command-line text editor. A flaw in its popup window rendering logic allows malicious Vim scripts to read and write data outside the allocated memory buffer, potentially corrupting adjacent data structures. Exploitation requires running untrusted Vim scripts or plugins, and the practical impact is undefined behavior that typically manifests silently but could lead to crashes or further compromise.
Technical details
The vulnerability is an out-of-bounds read and conditional write in the popup_mark_opacity_zindex() function in src/popupwin.c. When a popup window is anchored to a text property with clipwindow and opacity options enabled, and the host window is scrolled so the anchor moves above the visible area, the popup's window row becomes negative. The function fails to bound-check this negative index before accessing a heap array, causing reads before the array's start and writes of the popup's z-index value when it is smaller than the value already present. The attack requires Vim script code that creates such a popup configuration and scrolls the host window; this cannot be triggered via file contents or modelines. The issue is fixed in Vim 9.2.0843.
Affected products
- Vim Vim 9.2.0469 to 9.2.0842
Timeline
- 2026-07-23: disclosed: GitHub Security Advisory GHSA-pmvp-6rcj-98p4 published
- 2026-08-11: advisory: NVD published CVE-2026-73075
- 2026-07-23: patched: Fixed in Vim 9.2.0843