Vim
CVE-2026-45130
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconGain write access to Vim runtimepath directory
-
DeliveryPlant crafted .spl with oversized COMPOUND length
-
ExploitDeliver text file with spelllang modeline
-
InstallVictim opens file in vulnerable Vim
-
C2Modeline triggers spell file load
-
ExecuteInteger overflow allocates undersized heap buffer
-
ImpactWrite loop overflows heap
-
Step 8Process crash or code execution
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Heap buffer bounds checking
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Two simultaneous preconditions are required. First, a malicious .spl file must already be present in a directory on Vim's runtimepath (e.g., ~/.vim/spell/ or a path listed in &runtimepath) - the attacker must have pre-planted this file through write access, a shared filesystem, or social engineering. Second, the victim must open a file in Vim that contains a modeline setting spelllang to trigger loading of the planted .spl, with UTF-8 encoding active and Vim's modeline feature not disabled. No system authentication or elevated privileges are required of the attacker (PR:N). Exploitation is bounded by: the necessity of pre-planting the .spl on the runtimepath (requires attacker write access to that path or user cooperation), the requirement for active user interaction (opening the text file in Vim), the absence of any network delivery path (AV:L), and the fact that SSVC rates this as not automatable - consistent with a multi-step, per-victim attack that cannot be mass-deployed without runtimepath access. |
| Impact | The CVSS 3.1 score of 6.6 (Medium) is grounded in AV:L (local file-based delivery), UI:R (victim must open a file), C:L/I:L (partial memory disclosure and write capability), and A:H (heap corruption can crash or destabilize the process). The vendor-assigned PR:N is accurate in that the attacker does not need system credentials, but it somewhat understates the setup burden: a malicious .spl file must be pre-positioned on the Vim runtimepath before the modeline triggers loading. EPSS at 0.00% (0th percentile) and SSVC's 'exploitation: none, automatable: no, technical impact: partial' collectively indicate no observed opportunistic or automated exploitation. However, a public PoC exists (GitHub Gist by zhuozhenwei, confirmed in references), which elevates near-term risk - particularly for users who open files from untrusted sources in shared or version-controlled environments where runtimepath directories may be attacker-writable. The gap between the public PoC and the 0.00% EPSS is consistent with a proof-of-concept that has not yet been operationalized in mass campaigns. Overall this is a real but conditional threat: prioritize patching for environments with shared Vim runtimepaths, CI pipelines that open arbitrary files, or users who regularly process untrusted documents. |
| Exploit ScenarioDerived | An attacker with write access to a shared Vim runtimepath directory (e.g., a team's shared ~/.vim/ checkout or a CI workspace) plants a crafted .spl file containing an oversized COMPOUND section length field. The attacker then delivers a text file embedding a Vim modeline such as ` vim: set spelllang=xx:` referencing the malicious spell file; when a developer opens this file in a Vim version prior to 9.2.0450 with default modeline settings and UTF-8 encoding active, read_compound() triggers, the integer multiplication overflows, and the heap write loop corrupts adjacent allocations - potentially crashing Vim or enabling controlled code execution. A public PoC demonstrating this is available at https://gist.github.com/zhuozhenwei/9e579b64c83fd2d254e25f1629da2796. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 24, 2026
Heap buffer overflow in Vim's spell file parser affects all versions prior to 9.2.0450, reachable via a crafted .spl file that exploits a 32-bit signed integer multiplication overflow in read_compound() to allocate an undersized heap buffer and overflow it during a write loop. The attack can be delivered passively through Vim's modeline feature: a text file with a spelllang modeline silently triggers .spl loading when a malicious spell file has been pre-planted on the runtimepath, requiring only that the victim open the file. A public proof-of-concept exists on GitHub Gist; EPSS is 0.00% and CISA KEV has not listed this CVE, indicating no confirmed widespread exploitation at time of analysis.
RemediationAI
Upgrade Vim to version 9.2.0450 or later; the patched release is available at https://github.com/vim/vim/releases/tag/v9.2.0450 and the fixing commit is 92993329178cb1f72d700fff45ca86e1c2d369f8. Ubuntu users should apply the update referenced in USN-8304-1 (https://ubuntu.com/security/notices/USN-8304-1) via their package manager. If immediate patching is not possible, add set nomodeline to the system or user vimrc (/etc/vim/vimrc or ~/.vimrc) to prevent modeline-triggered spell file loading; the trade-off is loss of legitimate per-file editor configuration embedded in modelines. As a complementary control, restrict write access to Vim runtimepath spell directories (typically ~/.vim/spell/ and /usr/share/vim/vimXX/spell/) to prevent attacker-controlled .spl file planting - this eliminates the automated delivery path but does not block a user who is socially engineered into manually loading a crafted spell file.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerable component is read_compound() in src/spellfile.c, which parses the COMPOUND section of Vim's binary .spl (spell language) files. The root cause (CWE-122, Heap-based Buffer Overflow) is a 32-bit signed integer multiplication overflow: the attacker-controlled todo field from the spell file's section header is multiplied as a signed 32-bit integer when computing heap allocation sizes (e.g., c = todo * 2 + 7). A sufficiently large todo value wraps the product to a small positive number, causing alloc() to return a tiny buffer while the subsequent write loop iterates todo times - far beyond the buffer's bounds. The fix in commit 92993329 introduces a COMPOUND_MAX_LEN constant (100,000), promotes all size calculations to size_t to eliminate overflow, and validates the length before allocation. The attack surface is widened by Vim's modeline mechanism: with modeline enabled (the default in most distributions), a file's embedded set spelllang=XX directive can auto-load a .spl file from the runtimepath without further user interaction. CPE: cpe:2.3:a:vim:vim:*:*:*:*:*:*:*:* (all versions prior to 9.2.0450).
Know when Vim gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Pre-planting the malicious .spl on the victim's runtimepath is a measurable attack prerequisite beyond initial access, warranting AC:H over the vendor's AC:L.
AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:H
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
2DescriptionNVD
Vim is an open source, command line text editor. Prior to version 9.2.0450, a heap buffer overflow exists in read_compound() in src/spellfile.c when loading a crafted spell file (.spl) with UTF-8 encoding active. An attacker-controlled length field in the spell file's compound section overflows a 32-bit signed integer multiplication, causing a small buffer to be allocated for a write loop that runs many iterations, overflowing the heap. Because the 'spelllang' option can be set from a modeline, a text file modeline can trigger spell file loading if a malicious .spl file has been planted on the runtimepath. This issue has been patched in version 9.2.0450.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
A heap overflow occurs when a program writes data beyond the bounds of a buffer allocated in the heap memory region.
Affected Products (CPE)NVD
Heap-based Buffer Overflow in GitHub repository vim/vim prior to 9.0.0765. Rated critical severity (CVSS 9.8), this vuln
Use of Out-of-range Pointer Offset in GitHub repository vim/vim prior to 8.2.4440. Rated high severity (CVSS 8.8), this
Code execution vulnerability in Vim before 9.2.0272 allows attackers to gain immediate arbitrary command execution upon
getchar.c in Vim before 8.1.1365 and Neovim before 0.3.6 allows remote attackers to execute arbitrary OS commands via th
vim is vulnerable to Heap-based Buffer Overflow. Rated high severity (CVSS 8.0), this vulnerability is remotely exploita
Use after free in append_command in GitHub repository vim/vim prior to 8.2.4895. Rated high severity (CVSS 7.8), this vu
Heap-based Buffer Overflow in function cmdline_erase_chars in GitHub repository vim/vim prior to 8.2.4899. Rated high se
vim is vulnerable to Heap-based Buffer Overflow. Rated high severity (CVSS 7.8), this vulnerability is no authentication
vim is vulnerable to Heap-based Buffer Overflow. Rated high severity (CVSS 7.8), this vulnerability is no authentication
vim is vulnerable to Heap-based Buffer Overflow. Rated high severity (CVSS 7.8), this vulnerability is no authentication
Heap-based Buffer Overflow in GitHub repository vim/vim prior to 8.2. Rated high severity (CVSS 7.8), this vulnerability
Out-of-bounds Read in GitHub repository vim/vim prior to 8.2. Rated high severity (CVSS 7.8), this vulnerability is no a
Same weakness CWE-122 – Heap-based Buffer Overflow
View allSame technique Buffer Overflow
View allVendor StatusVendor
SUSE
Severity: Medium| Product | Status |
|---|---|
| SLES15-SP5-CHOST-BYOS-SAP-CCloud | Fixed |
| SLES15-SP6-CHOST-BYOS | Fixed |
| SLES15-SP6-CHOST-BYOS-Aliyun | Fixed |
| SLES15-SP6-CHOST-BYOS-Azure | Fixed |
| SLES15-SP6-CHOST-BYOS-EC2 | Fixed |
| SLES15-SP6-CHOST-BYOS-GCE | Fixed |
| SLES15-SP6-CHOST-BYOS-GDC | Fixed |
| SLES15-SP6-CHOST-BYOS-SAP-CCloud | Fixed |
| SLES15-SP7-CHOST-BYOS-Aliyun | Fixed |
| SLES15-SP7-CHOST-BYOS-Azure | Fixed |
| SLES15-SP7-CHOST-BYOS-EC2 | Fixed |
| SLES15-SP7-CHOST-BYOS-GCE | Fixed |
| SLES15-SP7-CHOST-BYOS-GDC | Fixed |
| SLES15-SP7-CHOST-BYOS-SAP-CCloud | Fixed |
| SUSE Linux Enterprise Desktop 15 SP7 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP7 | Fixed |
| SUSE Linux Enterprise Micro 5.3 | Fixed |
| SUSE Linux Enterprise Micro 5.4 | Fixed |
| SUSE Linux Enterprise Micro 5.5 | Fixed |
| SUSE Linux Enterprise Module for Basesystem 15 SP7 | Fixed |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP7 | Fixed |
| SUSE Linux Enterprise Server 15 SP7 | Fixed |
| SUSE Linux Enterprise Server 16.0 | Fixed |
| SUSE Linux Enterprise Server 16.1 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Fixed |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Fixed |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Fixed |
| SUSE Linux Micro 6.0 | Fixed |
| SUSE Linux Micro 6.1 | Fixed |
| SUSE Linux Micro 6.2 | Fixed |
| SLES15-SP3-CHOST-BYOS-Aliyun | Fixed |
| SLES15-SP3-CHOST-BYOS-Azure | Fixed |
| SLES15-SP3-CHOST-BYOS-EC2 | Fixed |
| SLES15-SP3-CHOST-BYOS-GCE | Fixed |
| SLES15-SP3-CHOST-BYOS-SAP-CCloud | Fixed |
| SLES15-SP4-CHOST-BYOS | Fixed |
| SLES15-SP4-CHOST-BYOS-Aliyun | Fixed |
| SLES15-SP4-CHOST-BYOS-Azure | Fixed |
| SLES15-SP4-CHOST-BYOS-EC2 | Fixed |
| SLES15-SP4-CHOST-BYOS-GCE | Fixed |
| SLES15-SP4-CHOST-BYOS-SAP-CCloud | Fixed |
| SLES15-SP5-CHOST-BYOS-Aliyun | Fixed |
| SLES15-SP5-CHOST-BYOS-Azure | Fixed |
| SLES15-SP5-CHOST-BYOS-EC2 | Fixed |
| SLES15-SP5-CHOST-BYOS-GCE | Fixed |
| SLES15-SP5-CHOST-BYOS-GDC | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP4 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP5 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | Fixed |
| SUSE Linux Enterprise Module for Basesystem 15 SP4 | Fixed |
| SUSE Linux Enterprise Module for Basesystem 15 SP5 | Fixed |
| SUSE Linux Enterprise Module for Basesystem 15 SP6 | Fixed |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP4 | Fixed |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP5 | Fixed |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP6 | Fixed |
| SUSE Linux Enterprise Server 12 SP5 | Fixed |
| SUSE Linux Enterprise Server 12 SP5-LTSS | Fixed |
| SUSE Linux Enterprise Server 12 SP5-LTSS Extended Security | Fixed |
| SUSE Linux Enterprise Server 15 SP4 | Fixed |
| SUSE Linux Enterprise Server 15 SP4-LTSS | Fixed |
| SUSE Linux Enterprise Server 15 SP5 | Fixed |
| SUSE Linux Enterprise Server 15 SP5-LTSS | Fixed |
| SUSE Linux Enterprise Server 15 SP6 | Fixed |
| SUSE Linux Enterprise Server 15 SP6-LTSS | Fixed |
| SUSE Linux Enterprise Server LTSS Extended Security 12 SP5 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Fixed |
| SUSE Manager Proxy 4.3 | Fixed |
| SUSE Manager Proxy LTS 4.3 | Fixed |
| SUSE Manager Retail Branch Server 4.3 | Fixed |
| SUSE Manager Retail Branch Server LTS 4.3 | Fixed |
| SUSE Manager Server 4.3 | Fixed |
| SUSE Manager Server LTS 4.3 | Fixed |
| SUSE CaaS Platform 3.0 | Fixed |
| SUSE CaaS Platform 4.0 | Fixed |
| SUSE Enterprise Storage 6 | Fixed |
| SUSE Enterprise Storage 7 | Fixed |
| SUSE Enterprise Storage 7.1 | Fixed |
| SUSE Linux Enterprise Desktop 12 | Fixed |
| SUSE Linux Enterprise Desktop 12 SP1 | Fixed |
| SUSE Linux Enterprise Desktop 12 SP2 | Fixed |
| SUSE Linux Enterprise Desktop 12 SP3 | Fixed |
| SUSE Linux Enterprise Desktop 12 SP4 | Fixed |
| SUSE Linux Enterprise Desktop 15 | Fixed |
| SUSE Linux Enterprise Desktop 15 SP1 | Fixed |
| SUSE Linux Enterprise Desktop 15 SP2 | Fixed |
| SUSE Linux Enterprise Desktop 15 SP3 | Fixed |
| SUSE Linux Enterprise Desktop 15 SP4 | Fixed |
| SUSE Linux Enterprise Desktop 15 SP5 | Fixed |
| SUSE Linux Enterprise Desktop 15 SP6 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP1 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP1-ESPOS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP1-LTSS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP2 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP2-ESPOS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP2-LTSS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP3 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP3-ESPOS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP3-LTSS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15 SP6 | Fixed |
| SUSE Linux Enterprise High Performance Computing 15-ESPOS | Fixed |
| SUSE Linux Enterprise High Performance Computing 15-LTSS | Fixed |
| SUSE Linux Enterprise Micro 5.0 | Fixed |
| SUSE Linux Enterprise Micro 5.1 | Fixed |
| SUSE Linux Enterprise Micro 5.2 | Fixed |
| SUSE Linux Enterprise Module for Basesystem 15 | Fixed |
| SUSE Linux Enterprise Module for Basesystem 15 SP1 | Fixed |
| SUSE Linux Enterprise Module for Basesystem 15 SP2 | Fixed |
| SUSE Linux Enterprise Module for Basesystem 15 SP3 | Fixed |
| SUSE Linux Enterprise Module for Desktop Applications 15 | Fixed |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP1 | Fixed |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP2 | Fixed |
| SUSE Linux Enterprise Module for Desktop Applications 15 SP3 | Fixed |
| SUSE Linux Enterprise Point of Sale 12 SP2-CLIENT | Fixed |
| SUSE Linux Enterprise Real Time 15 SP2 | Fixed |
| SUSE Linux Enterprise Real Time 15 SP3 | Fixed |
| SUSE Linux Enterprise Real Time 15 SP4 | Fixed |
| SUSE Linux Enterprise Server 12 | Fixed |
| SUSE Linux Enterprise Server 12 SP1 | Fixed |
| SUSE Linux Enterprise Server 12 SP1-LTSS | Fixed |
| SUSE Linux Enterprise Server 12 SP2 | Fixed |
| SUSE Linux Enterprise Server 12 SP2-BCL | Fixed |
| SUSE Linux Enterprise Server 12 SP2-ESPOS | Fixed |
| SUSE Linux Enterprise Server 12 SP2-LTSS | Fixed |
| SUSE Linux Enterprise Server 12 SP3 | Fixed |
| SUSE Linux Enterprise Server 12 SP3-BCL | Fixed |
| SUSE Linux Enterprise Server 12 SP3-ESPOS | Fixed |
| SUSE Linux Enterprise Server 12 SP3-LTSS | Fixed |
| SUSE Linux Enterprise Server 12 SP4 | Fixed |
| SUSE Linux Enterprise Server 12 SP4-ESPOS | Fixed |
| SUSE Linux Enterprise Server 12 SP4-LTSS | Fixed |
| SUSE Linux Enterprise Server 12-LTSS | Fixed |
| SUSE Linux Enterprise Server 15 | Fixed |
| SUSE Linux Enterprise Server 15 SP1 | Fixed |
| SUSE Linux Enterprise Server 15 SP1-BCL | Fixed |
| SUSE Linux Enterprise Server 15 SP1-LTSS | Fixed |
| SUSE Linux Enterprise Server 15 SP2 | Fixed |
| SUSE Linux Enterprise Server 15 SP2-BCL | Fixed |
| SUSE Linux Enterprise Server 15 SP2-LTSS | Fixed |
| SUSE Linux Enterprise Server 15 SP3 | Fixed |
| SUSE Linux Enterprise Server 15 SP3-BCL | Fixed |
| SUSE Linux Enterprise Server 15 SP3-LTSS | Fixed |
| SUSE Linux Enterprise Server 15-LTSS | Fixed |
| SUSE Linux Enterprise Server for Raspberry Pi 12 SP2 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 12 SP1 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 12 SP2 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 12 SP3 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 12 SP4 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP1 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP2 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP3 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Fixed |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Fixed |
| SUSE Manager Proxy 4.0 | Fixed |
| SUSE Manager Proxy 4.1 | Fixed |
| SUSE Manager Proxy 4.2 | Fixed |
| SUSE Manager Retail Branch Server 4.0 | Fixed |
| SUSE Manager Retail Branch Server 4.1 | Fixed |
| SUSE Manager Retail Branch Server 4.2 | Fixed |
| SUSE Manager Server 4.0 | Fixed |
| SUSE Manager Server 4.1 | Fixed |
| SUSE Manager Server 4.2 | Fixed |
| SUSE OpenStack Cloud 7 | Fixed |
| SUSE OpenStack Cloud 8 | Fixed |
| SUSE OpenStack Cloud 9 | Fixed |
| SUSE OpenStack Cloud Crowbar 8 | Fixed |
| SUSE OpenStack Cloud Crowbar 9 | Fixed |
| openSUSE Leap 15.3 | Fixed |
| openSUSE Leap 15.4 | Fixed |
| openSUSE Leap 15.5 | Fixed |
| openSUSE Leap 15.6 | Fixed |
| openSUSE Leap Micro 5.2 | Fixed |
| openSUSE Leap Micro 5.3 | Fixed |
| openSUSE Leap Micro 5.4 | Fixed |
| openSUSE Leap Micro 5.5 | Fixed |
| SLES-CHOST-BYOS-Aliyun | Fixed |
| SLES-CHOST-BYOS-Azure | Fixed |
| SLES-CHOST-BYOS-EC2 | Fixed |
| SLES-CHOST-BYOS-GCE | Fixed |
| SLES-CHOST-BYOS-GDC | Fixed |
| SLES-CHOST-BYOS-SAP-CCloud | Fixed |
| SUSE Linux Micro Extras 6.0 | Fixed |
| SUSE Linux Micro Extras 6.1 | Fixed |
| bci/dotnet-aspnet:5.0 bci/dotnet-runtime:5.0 bci/dotnet-sdk:5.0 kiwi-templates-Minimal kiwi-templates-Minimal-Cloud-sap kiwi-templates-Minimal-MS-HyperV-sap kiwi-templates-Minimal-VMware-sap kiwi-templates-Minimal-kvm-and-xen-sap ses/7.1/ceph/haproxy suse/manager/5.0/x86_64/server suse/multi-linux-manager/5.1/x86_64/server suse/multi-linux-manager/5.2/x86_64/server suse/sle-micro/5.0/toolbox suse/sle-micro/5.1/toolbox suse/sle-micro/5.2/toolbox suse/sle-micro/5.3/toolbox suse/sle-micro/5.4/toolbox suse/sle-micro/5.5/toolbox suse/sles/15.2/virt-launcher:0.38.1 suse/sles/15.3/virt-launcher:0.45.0 suse/sles/15.4/virt-launcher:0.49.0 suse/sles/16.0/toolbox | Fixed |
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB