Skip to main content

Vim EUVDEUVD-2026-56225

| CVE-2026-73071 LOW
Use After Free (CWE-416)
2026-08-11 GitHub_M
3.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify Vim instance running in socketserver mode
  2. Delivery
    Connect to local or loopback socket
  3. Exploit
    Send crafted JSON payload exceeding 4096-byte read buffer
  4. Execution
    Force buffer refill freeing original pointer mid-parse
  5. Persist
    Invalid escape sequence triggers parse error path
  6. Impact
    Vim server dereferences stale pointer and crashes

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Memory lifecycle management
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires Vim to be started with the socketserver or clientserver channel feature explicitly enabled (e.g., via --clientserver socket --servername channel:PORT), which is a non-default, operator-configured deployment mode. The attacker must be able to connect to the Vim socket - typically requiring local system access or, if the socket is bound to a routable address rather than loopback, network access. The malicious payload must exceed 4096 bytes (MAXMSGSIZE) so the JSON string crosses a buffer boundary, and must contain an invalid JSON construct (such as a broken \u escape) after that boundary to trigger the error path. Standard interactive Vim sessions, including plugins that read JSON files, do not invoke this code path. Windows builds are not affected per the test suite constraints.

Impact

The CVSS 3.1 base score of 3.3 (AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L) accurately reflects a genuine low-severity finding. The local attack vector is consistent with Vim's socketserver typically binding to a local socket or loopback address rather than an externally routable interface. The impact is confined strictly to availability - a server crash - with no confidentiality or integrity implications per the CVSS vector. Notably, the source data tags this vulnerability as 'Information Disclosure,' which conflicts with C:N in the CVSS vector; reading freed memory on an error path could theoretically expose heap content, but the official assessment assigns no confidentiality impact and the commit diff supports that conclusion. No EPSS data was provided. The absence of a KEV entry, the local attack vector, the non-default socketserver configuration requirement, and the crash-only impact collectively place this at low operational priority for most environments. SSVC signals: exploitation is unconfirmed, the attack is not automatable at scale, and technical impact is partial availability only.

Exploit ScenarioDerived

A local user on a system where Vim is running in socketserver mode connects to the Vim socket and sends a raw JSON payload exceeding 4096 bytes in length, with an invalid Unicode escape sequence (e.g., \uZZZZ) positioned past the first buffer boundary. The oversized message forces a buffer refill mid-parse, freeing the pointer used by the error-reporting path, which then reads freed memory and causes the Vim server process to crash. No independent public exploit code is known, but the commit's test function provides a functional reproduction pattern.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 11, 2026

Use-after-free in Vim's JSON channel parsing (versions 9.2.0511 through 9.2.0843) causes the socketserver process to crash when processing malformed JSON messages that straddle read-buffer boundaries. The stale pointer p in json_decode_item() is invalidated when channel_fill() frees the underlying buffer mid-parse; the error-reporting code then reads freed memory, producing a crash with no code-execution or data-exfiltration potential. No active exploitation is confirmed and no public exploit code has been identified; vendor-released patch v9.2.0844 resolves the flaw.

RemediationAI

Upgrade Vim to version 9.2.0844 or later, which incorporates commit f8126294a526aa80c5123eb3079e325daee9ec75 correcting the stale-pointer dereference in src/json.c. The patch is a targeted single-line change with minimal regression risk. For environments that cannot upgrade immediately, the effective compensating control is to stop using Vim's socketserver or clientserver channel feature - specifically, do not invoke Vim with --servername or --remote options in socket or channel mode. This entirely eliminates the vulnerable code path with no impact on standard interactive or scripted Vim usage. The GitHub advisory is at https://github.com/vim/vim/security/advisories/GHSA-69ch-22ch-r887.

Affected VersionsENISA

vim 9.2.0511, < 9.2.0844

Affected Packages

euvd vim_9_2_0511 fix: 9.2.0844

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw resides in src/json.c in the json_decode_item() function (cpe:2.3:a:vim:vim:*:*:*:*:*:*:*:*), which parses JSON messages exchanged over Vim's channel and socketserver interface. When a JSON string is large enough to cross a read-buffer boundary (the channel reads at most MAXMSGSIZE = 4096 bytes per call), json_decode_string() internally invokes js_fill() to refill the buffer. This refill frees the original buffer and provisions a new one. A local variable pointer p - set to point into the old buffer before the refill - is then passed to semsg() on the error path to report the parse position, a textbook CWE-416 use-after-free. The fix replaces the stale p with reader->js_buf + reader->js_used, correctly deriving the live cursor position from the reader structure. The bug manifests only on the error path: an invalid JSON construct (such as a malformed \uZZZZ escape) must appear after the buffer boundary to trigger parse failure and reach the vulnerable semsg() call.

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

Vendor (GitHub_M) PRIMARY 3.3 LOW
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L
vuln.today AI 3.3 LOW

Local vector confirmed by socketserver socket access requiring local presence; PR:L required to connect; crash-only impact means no confidentiality or integrity effect.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

Lifecycle Timeline

2
Patch available
Aug 11, 2026 - 17:02 EUVD
CVE Published
Aug 11, 2026 - 15:29 cve.org
LOW 3.3

DescriptionCVE.org

Vim is an open source, command line text editor. From 9.2.0511 until 9.2.0844, json_decode_item() in src/json.c can retain a stale pointer after json_decode_string() invokes channel_fill() to refill and free the current buffer, causing the error path to read freed memory instead of reader->js_buf + reader->js_used when an invalid JSON string spans buffers. This issue is fixed in version 9.2.0844.

Threat Intelligence Overview

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Ubiquitous
Vim ships by default on virtually all Linux and Unix systems.
Data Quality
7 sources
Confidence: High

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.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

16
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +16
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Use-after-free vulnerabilities occur when a program continues to access memory through a pointer after that memory has been deallocated.

Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Vim

View all
CVE-2022-3520 CRITICAL POC
9.8 Dec 02

Heap-based Buffer Overflow in GitHub repository vim/vim prior to 9.0.0765. Rated critical severity (CVSS 9.8), this vuln

CVE-2022-0729 HIGH POC
8.8 Feb 23

Use of Out-of-range Pointer Offset in GitHub repository vim/vim prior to 8.2.4440. Rated high severity (CVSS 8.8), this

CVE-2026-34714 HIGH POC
8.6 Mar 30

Code execution vulnerability in Vim before 9.2.0272 allows attackers to gain immediate arbitrary command execution upon

CVE-2019-12735 HIGH POC
8.6 Jun 05

getchar.c in Vim before 8.1.1365 and Neovim before 0.3.6 allows remote attackers to execute arbitrary OS commands via th

CVE-2021-3968 HIGH POC
8.0 Nov 19

vim is vulnerable to Heap-based Buffer Overflow. Rated high severity (CVSS 8.0), this vulnerability is remotely exploita

CVE-2022-1616 HIGH POC
7.8 May 07

Use after free in append_command in GitHub repository vim/vim prior to 8.2.4895. Rated high severity (CVSS 7.8), this vu

CVE-2022-1619 HIGH POC
7.8 May 08

Heap-based Buffer Overflow in function cmdline_erase_chars in GitHub repository vim/vim prior to 8.2.4899. Rated high se

CVE-2021-4136 HIGH POC
7.8 Dec 19

vim is vulnerable to Heap-based Buffer Overflow. Rated high severity (CVSS 7.8), this vulnerability is no authentication

CVE-2021-3973 HIGH POC
7.8 Nov 19

vim is vulnerable to Heap-based Buffer Overflow. Rated high severity (CVSS 7.8), this vulnerability is no authentication

CVE-2021-3927 HIGH POC
7.8 Nov 05

vim is vulnerable to Heap-based Buffer Overflow. Rated high severity (CVSS 7.8), this vulnerability is no authentication

CVE-2022-2125 HIGH POC
7.8 Jun 19

Heap-based Buffer Overflow in GitHub repository vim/vim prior to 8.2. Rated high severity (CVSS 7.8), this vulnerability

CVE-2022-2126 HIGH POC
7.8 Jun 19

Out-of-bounds Read in GitHub repository vim/vim prior to 8.2. Rated high severity (CVSS 7.8), this vulnerability is no a

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy