Severity by source
CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Primary rating from Vendor (VulDB) · only source for this CVE.
CVSS VectorVendor: VulDB
Lifecycle Timeline
4DescriptionCVE.org
A flaw has been found in Neovim up to 0.12.2. Affected by this issue is the function M.read of the file runtime/lua/vim/secure.lua of the component View Branch. Executing a manipulation of the argument path can lead to command injection. It is possible to launch the attack on the local host. The exploit has been published and may be used. This patch is called f83e0dcaf8cf18de94828341b0a1a61a86c75baf. A patch should be applied to remediate this issue.
AnalysisAI
Command injection in Neovim up to version 0.12.2 allows a local attacker with low privileges to execute arbitrary Vim commands by crafting a file with a malicious name containing pipe (|) or other Vim Ex command separators. The vulnerable code path is the M.read function in runtime/lua/vim/secure.lua, which concatenates an unsanitized file path directly into a vim.cmd('sview ...') call when a user selects the 'View' action in Neovim's security trust prompt. This CVE is not listed in CISA KEV, indicating no confirmed widespread active exploitation; however, a publicly available proof-of-concept exploit exists (GitHub issue #39914) and an official patch has been released (commit f83e0dcaf8cf18de94828341b0a1a61a86c75baf via PR #39918).
Technical ContextAI
The vulnerability resides in runtime/lua/vim/secure.lua within the M.read function, which is the backend for Neovim's trust-sandbox mechanism - the system that prompts users to allow, deny, or view potentially executable config files such as .nvimrc and .exrc. When the user selects 'View', the pre-patch code constructed a Vim Ex command by direct string concatenation: vim.cmd('sview ' .. fullpath). Because fullpath was not passed through vim.fn.fnameescape(), any filename containing Vim command metacharacters - most critically the pipe |, which is the Vim Ex command separator - would cause the editor to parse and execute the injected token as a second Ex command. The fix replaces the concatenation with vim.cmd(('sview %s'):format(vim.fn.fnameescape(fullpath))), applying proper escaping before command construction. CWE-77 (Improper Neutralization of Special Elements Used in a Command) precisely describes this root cause: externally-controlled input incorporated into a command string without neutralizing command-separator metacharacters. The CPE cpe:2.3:a:n/a:neovim:*:*:*:*:*:*:*:* covers the affected product range.
RemediationAI
The primary remediation is to apply the upstream patch, which is available as commit f83e0dcaf8cf18de94828341b0a1a61a86c75baf merged via PR #39918 (https://github.com/neovim/neovim/pull/39918). The patch replaces unsafe string concatenation with vim.fn.fnameescape() in the 'View' branch of M.read. Upstream fix availability is confirmed via the merged PR and commit; however, a specific tagged release version incorporating this fix was not independently confirmed from the provided data - users should verify their installed Neovim build includes this commit hash or upgrade to any release published after the commit date. As a compensating control before patching, users should avoid selecting the 'View' option when vim.secure.read() prompts them about files in untrusted or shared directories, opting for 'Deny' instead; the trade-off is losing the safe-preview workflow. Setting set noexrc in the global Neovim config disables automatic loading of project-local config files, reducing exposure to the code path that invokes vim.secure.read(), at the cost of disabling legitimate project-local configuration. Restricting Neovim use to trusted directories via wrapper scripts or filesystem permissions also limits attacker ability to plant malicious filenames.
LibreNMS before 24.10.0 allows a remote attacker to execute arbitrary code via OS command injection involving AboutContr
Reachable assertion in Open5GS up to version 2.7.6 allows remote unauthenticated attackers to crash the Diameter CER han
A Command Injection issue in the payload build page in BYOB (Build Your Own Botnet) 2.0 allows attackers to execute arbi
Denial of service in Open5GS 2.7.6 and earlier allows network-adjacent attackers with low-privilege Diameter Gx peer acc
Denial of service in Open5GS HSS (Home Subscriber Server) versions 2.7.0 through 2.7.6 is triggered remotely by manipula
Remote command injection in Control Web Panel allows unauthenticated attackers to execute arbitrary OS commands as root
LINQPad before 5.52.01 Pro edition is vulnerable to Unsafe Deserialization in LINQPad.AutoRefManager::PopulateFromCache(
Remote code execution in dash-uploader (Python package for Plotly Dash) versions 0.1.0 through 0.7.0a2 allows unauthenti
Command injection in LiteLLM 1.18.10 lets attackers who can configure MCP (Model Context Protocol) servers supply arbitr
SQL injection in AzuraCast's backup restore flow (versions up to and including 0.23.7) lets an attacker achieve privileg
Arbitrary file read in Yu AI Code Mother v4.3 lets anonymous, remote attackers retrieve files outside the intended previ
Remote code execution in APScheduler (all versions through 3.10.x and 4.0.0a5) is achievable when applications deseriali
Same weakness CWE-77 – Command Injection
View allSame technique Command Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-35018
GHSA-6869-x4fx-m53f