CVE-2026-73073: 
Vim vulnerability analysis and mitigation

Overview

CVE-2026-73073 is an arbitrary Ex command execution vulnerability in Vim's C omni-completion component, affecting all versions prior to 9.2.0845. The StructMembers() function in runtime/autoload/ccomplete.vim constructs a :vimgrep command using insufficiently escaped typeref: or typename: values from a tags file, enabling injection of arbitrary Ex and OS commands. It was reported by researcher Threonine, disclosed on July 23–24, 2026, and fixed in Vim v9.2.0845. The vulnerability carries a CVSS v4.0 base score of 7.1 (High) (GitHub Advisory).

Technical details

The root cause is improper control of code generation (CWE-94) combined with inclusion of functionality from an untrusted control sphere (CWE-829). The StructMembers() function in ccomplete.vim builds a :vimgrep command by embedding the typeref: or typename: field from a tags file entry, escaping only the pattern delimiter (/) and backslash (\). An attacker can craft a tags file entry whose type value contains an unclosed bracket ([), which causes Vim's pattern-skipping logic to fail; the command parser then falls back to the start of the argument and treats the first unescaped pipe (|) as a command separator, executing whatever follows as an Ex command. The :silent! prefix suppresses any visible error, making the injection stealthy. This is a bypass of the earlier partial fix in patch v9.2.0735 (GHSA-mf92-v4xw-j45x), which only blocked injection via the pattern delimiter character (GitHub Advisory, Fix Commit).

Impact

Successful exploitation allows arbitrary Ex command execution and, through commands such as :!, arbitrary operating-system command execution in the context of the user running Vim. An attacker who can supply a malicious tags file (e.g., via a cloned repository or unpacked archive) can achieve full code execution on the victim's workstation, potentially leading to data exfiltration, credential theft, or further lateral movement within the environment. Confidentiality, integrity, and availability of the affected system are all rated High impact (GitHub Advisory).

Exploitability

No public exploit code or in-the-wild exploitation has been reported as of the disclosure date. The EPSS score is approximately 0.149%, indicating low near-term exploitation probability. The vulnerability is not listed in the CISA KEV catalog. Exploitation requires user interaction — specifically, the victim must open a C file from a tree containing the malicious tags file and invoke omni-completion with CTRL-X CTRL-O on a member access whose type is resolved from that tags file. The attack vector is local, and the attack requires the presence of a crafted tags file under attacker control (GitHub Advisory, Feedly).

Exploitation steps

  1. Craft a malicious tags file: Create a tags file entry where the typeref: or typename: field contains an unclosed bracket followed by a pipe and an Ex command payload, e.g.:
    myvar\tmain.c\t/^x$/;"\tv\ttyperef:struct:[|call system('malicious_command')|####
  2. Deliver the tags file: Place the malicious tags file in a project directory that the victim is likely to open (e.g., a cloned Git repository, a distributed source archive, or a shared development environment).
  3. Wait for victim to open a C file: The victim must open a C source file from the project tree with filetype plugins enabled (the default in most Vim distributions via runtime/defaults.vim).
  4. Trigger omni-completion: The victim invokes C omni-completion with CTRL-X CTRL-O on a member access expression (e.g., myvar.) whose type is not declared in the current buffer, causing Vim to consult the tags file.
  5. Command injection executes: StructMembers() builds the :vimgrep command with the malicious typeref: value; the unclosed [ causes pattern-skipping to fail, and the | is treated as a command separator, executing the injected Ex/OS command silently (GitHub Advisory, Fix Commit).

Indicators of compromise

  • File System: Presence of a tags file in a project directory containing typeref: or typename: fields with unusual characters such as [, |, or shell command strings; unexpected files created by the Vim process (e.g., sentinel files, scripts, or executables in temp directories).
  • Process: Unusual child processes spawned by the Vim process (e.g., sh, bash, curl, wget, python) immediately following a user's use of omni-completion in a C file.
  • Logs: Shell history or audit logs showing commands executed under the user's account at the time of Vim omni-completion usage; auditd records of execve calls originating from the Vim process.

Mitigation and workarounds

Upgrade Vim to version 9.2.0845 or later, which fixes the vulnerability by matching the typeref:/typename: field literally using Vim's \V (very nomagic) mode, preventing any regex metacharacter in the tag value from affecting pattern parsing (Fix Commit, Vim Release). As a workaround, users can disable filetype plugins (:filetype plugin off) to prevent the C omni-completion function from being installed, or avoid invoking CTRL-X CTRL-O on C files from untrusted project trees. Distribution-specific patches are available for Amazon Linux 2, Amazon Linux 2023, Alpine Linux, and Mageia (AWS AL2023 Advisory, AWS AL2 Advisory).

Community reactions

The vulnerability was reported by researcher Threonine and acknowledged by the Vim project maintainer Christian Brabandt, who coordinated the fix with Yasuhiro Matsumoto. The Yocto Project security mailing list discussed the issue in the context of embedded Linux distributions. No significant broader media coverage or notable social media reactions have been identified beyond standard distribution advisory channels (GitHub Advisory).

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

vim

Affected

sid

vim: 2:9.2.0858-1

Fixed

trixie

vim

Affected

RHEL / CentOS

Fixed

OpenShift

openshift/ose-rhel-coreos-8

Affected

RHEL 8

:appstream:vim-2:8.0.1763-32.el8_10.src

Fixed

RHEL 9

:appstream:vim-2:8.2.2637-26.el9_8.23.src

Fixed

RHEL 10

vim-2:9.1.083-9.el10_2.22.src

Fixed

Alpine

Fixed

edge

vim: 9.2.0854-r0

Fixed

v3.23

vim: 9.2.0854-r0

Fixed

Source: This report was generated using AI

Related Vim vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-73078HIGH8.6
  • Vim logoVim
  • vim-X11
NoYesAug 11, 2026
CVE-2026-73077HIGH8.4
  • Vim logoVim
  • vim-enhanced-debuginfo
NoYesAug 11, 2026
CVE-2026-43961HIGH7.8
  • Vim logoVim
  • vim-debugsource
NoYesAug 19, 2026
CVE-2026-73073HIGH7.1
  • Vim logoVim
  • vim-common-debuginfo
NoYesAug 18, 2026
CVE-2026-19617MEDIUM5.5
  • Vim logoVim
  • lvm2-libs
NoYesAug 14, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management