Cloudanix VulnDB

CVE-2026-34714

Critical · 9.2

CVSS

9.2

EPSS

0.3%

Published

Mar 30, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A malicious file can run commands on a person’s computer as soon as they open it with an outdated version of Vim.

Exploitation
Requires User Interaction
Attacker needs
User Interaction
Complexity
Low
Impact
Remote Code Execution
Component
Application
Class
RCE
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Vim versions before 9.2.0272 can evaluate attacker-controlled expressions when a crafted file is opened. The flaw is an expression-injection issue involving the tabpanel option, which did not have the expected modeline-expression restriction. As a result, content embedded in a file can cause Vim to execute commands with the privileges of the user running Vim, even under the default configuration. Successful exploitation can lead to arbitrary code execution, data theft from the user context, tampering with files accessible to that user, and limited denial of service.

Why it matters to the business

An attacker can turn a seemingly ordinary file into an execution trigger for malware or credential theft when opened in Vim. This is especially relevant for developers, administrators, SREs, and security staff who routinely open untrusted files from source repositories, support bundles, logs, patches, archives, or incident artifacts. Although EPSS is currently low and there is no known KEV listing or public exploit maturity reported, the impact is high because Vim is widely deployed on Linux, Unix, macOS, containers, and developer workstations.

How an attack unfolds

An attacker prepares a file containing crafted Vim configuration content that abuses expression handling in the tabpanel option. The attacker then delivers the file through a channel where users commonly inspect files in a terminal editor, such as a source-code repository, patch submission, archive, log bundle, ticket attachment, or shared filesystem. When the victim opens the file in a vulnerable Vim version, Vim processes the embedded setting and evaluates the attacker-controlled expression. That expression can cause command execution in the context of the current user. The attacker’s post-exploitation options depend on that user’s permissions and may include reading local secrets, modifying project files, installing persistence in user-writable locations, or launching additional tooling.

How to fix it

Upgrade Vim to version 9.2.0272 or later wherever Vim is installed, including developer workstations, administrator jump hosts, servers, base images, CI/CD runners, containers, and packaged appliances. If using operating-system packages, apply the vendor security update that backports the fix, even if the displayed upstream version remains lower than 9.2.0272. Where immediate patching is not possible, reduce exposure by avoiding opening untrusted files with vulnerable Vim builds, disabling modelines where operationally feasible by setting 'set nomodeline' in system and user Vim configuration, and using safer viewers such as less, cat, sed, or isolated throwaway containers for untrusted files. Treat mitigation as temporary; the durable fix is the patched Vim release or vendor-backported package.

How to confirm the fix worked

Confirm the installed Vim build is patched by checking the reported version and patch level with commands such as 'vim --version' and verifying version 9.2.0272 or later, or confirming the relevant vendor package changelog includes the security fix for this issue. Validate all package sources in use, including OS repositories, language or toolchain images, developer base images, containers, and embedded copies. On Linux distributions, use the package manager to confirm the installed package release is at or above the vendor-fixed build. To validate mitigation, review global and user Vim configuration files for 'set nomodeline' where patching is pending, but do not rely on this as the final remediation. For exposure testing, open only benign proof-of-concept test files in an isolated disposable environment and confirm patched Vim does not evaluate tabpanel modeline expressions in a way that executes commands.

Typical attack path

  1. Attacker identifies users or workflows likely to open untrusted files with Vim, such as developers, administrators, or incident responders.
  2. Attacker crafts a file that includes malicious Vim option content targeting the vulnerable tabpanel expression handling.
  3. Attacker delivers the file through a repository, patch, archive, support bundle, log collection, email attachment, or shared directory.
  4. Victim opens the file using a vulnerable Vim version before 9.2.0272.
  5. Vim evaluates the injected expression immediately when processing the crafted file content.
  6. Attacker-controlled commands execute with the privileges and environment of the user running Vim.
  7. Attacker uses the gained execution context to access files, steal secrets, modify source or configuration, or stage follow-on malware.

How to detect it

Investigate whether vulnerable Vim instances opened suspicious files before patching. Useful log and telemetry sources include endpoint detection records, process creation logs, shell history, auditd, sysmon-style telemetry on Linux/macOS, file-integrity monitoring, repository audit logs, email or ticket attachment records, and proxy/DNS logs for outbound activity initiated from developer or administrator endpoints. Look for Vim launching child processes such as sh, bash, zsh, python, perl, ruby, node, curl, wget, nc, ncat, ssh, or chmod; this is unusual for normal file editing and should be triaged. Search recently received or committed files for Vim modelines or option-setting text containing tabpanel combined with expression syntax. Review suspicious timestamps where a file was opened in Vim followed immediately by creation or modification of shell profiles, SSH keys, cron entries, user service files, temporary scripts, or outbound network connections. Because there is no reported KEV exploitation and no mature public exploit in the provided data, prioritize behavioral evidence over threat-actor-specific indicators.

  • tabpanel=%{
  • set tabpanel=%{
  • vim: set tabpanel=%{
  • vi: set tabpanel=%{
  • ex: set tabpanel=%{
  • vim:se tabpanel=%{
  • vi:se tabpanel=%{
  • vim -c
  • vim --cmd
  • /bin/sh -c
  • /bin/bash -c
  • /usr/bin/curl
  • /usr/bin/wget
  • /usr/bin/nc
  • /usr/bin/ncat
  • /tmp/.vim
  • ~/.vim/after/plugin
  • ~/.vim/plugin
  • ~/.vimrc

What your security team should do

  • Prioritize patching Vim on developer workstations, administrator systems, build servers, CI/CD runners, bastion hosts, and incident-response analysis machines.
  • Update golden images, container base images, endpoint management packages, and configuration-management manifests so vulnerable Vim versions are not reintroduced.
  • If patching cannot be completed immediately, temporarily disable Vim modelines globally and instruct users not to open untrusted files with Vim on vulnerable systems.
  • Search repositories, shared file stores, ticket attachments, and recently received archives for suspicious Vim modeline content referencing tabpanel and expression syntax.
  • Hunt endpoint telemetry for Vim processes spawning shells, scripting interpreters, download utilities, or network tools, especially shortly after opening files from untrusted locations.
  • Add awareness guidance for developers and administrators that opening files from external repositories, patches, logs, and support bundles can trigger code execution in vulnerable Vim versions.
  • Monitor vendor advisories for backported package names and fixed distribution releases, because many operating systems may retain older upstream version numbers while including the patch.

The record

Vim before 9.2.0272 allows code execution that happens immediately upon opening a crafted file in the default configuration, because %{expr} injection occurs with tabpanel lacking P_MLE.

Affected packages

Ecosystem Package Introduced Fixed
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS vim 0 9.2.0280-150500.20.46.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS vim 0 9.2.0280-150500.20.46.1
SUSE:Linux Enterprise Micro 5.5 vim 0 9.2.0280-150500.20.46.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 vim 0 9.2.0280-150500.20.46.1
SUSE:Linux Enterprise Module for Desktop Applications 15 SP7 vim 0 9.2.0280-150500.20.46.1
SUSE:Linux Enterprise Server 15 SP5-LTSS vim 0 9.2.0280-150500.20.46.1
SUSE:Linux Enterprise Server 15 SP6-LTSS vim 0 9.2.0280-150500.20.46.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 vim 0 9.2.0280-150500.20.46.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP6 vim 0 9.2.0280-150500.20.46.1
openSUSE:Leap 15.6 vim 0 9.2.0280-150500.20.46.1
openSUSE:Leap 16.0 vim 0 9.2.0280-160000.1.1
openSUSE:Tumbleweed vim 0 9.2.0398-1.1

Related vulnerabilities