Skip to main content

GNU Emacs EUVDEUVD-2026-97124

| CVE-2026-108976 HIGH
Incomplete List of Disallowed Inputs (CWE-184)
2026-10-11 mitre GHSA-f2f9-wp9v-23mf
7.8
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

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

  1. Access
    Craft filename with shell metacharacters
  2. Delivery
    Deliver via repo/share/archive
  3. Exploit
    Victim opens path in Emacs TRAMP
  4. Execution
    Regex bypass injects shell command
  5. Impact
    Arbitrary code execution as user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation completeness
Exploitation Conditions

Exploitation requires that the victim use Emacs TRAMP to process an attacker-controlled filename: the malicious path's username component must contain shell metacharacters that bypass the incomplete tramp-user-regexp disallow list. Concretely, the attacker needs a way to get a crafted filename in front of the victim (a repository, directory listing, shared mount, or archive), and the victim must open, complete, or otherwise cause Emacs/TRAMP to evaluate that path. Limiting factors: the flaw is local (AV:L), affects only installations using TRAMP remote-file functionality, and realistically depends on user interaction with the malicious path; code runs only with the privileges of the Emacs user. It does not affect default non-TRAMP editing of trusted local files.

Impact

This is a genuine local/user-triggered code-execution flaw rather than a remotely-wormable crisis. The input CVSS of 7.8 (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) reflects full confidentiality, integrity and availability loss via OS command injection, consistent with code execution in the context of the Emacs user. No EPSS score, no CISA KEV listing, and no public POC were provided, so exploitation signals are weak: this is 'no public exploit identified at time of analysis.' A notable tension exists in the CVSS vector itself: it specifies UI:N (no user interaction), yet the vulnerability is triggered by TRAMP processing a crafted filename, which in practice requires a victim to open or otherwise cause Emacs to evaluate that path - behavior that normally warrants UI:R. Verify the interaction requirement, as it materially changes real-world risk. A second important signal is that this is explicitly an incomplete fix for CVE-2026-79992 (tramp-user-regexp still has gaps), meaning the attack surface is already understood by researchers and the regex-bypass pattern is public conceptually even if weaponized code is not. Net: a real priority for developer/analyst workstations that use TRAMP, but not an internet-facing mass-exploitation threat - prioritize patching to Emacs 31.2 / TRAMP post-2.8.2 on multi-user or untrusted-content-handling hosts.

Exploit ScenarioDerived

An attacker plants a file or directory whose name contains shell metacharacters crafted to slip past the incomplete tramp-user-regexp validation (for example inside a git repository, shared network folder, or tarball). When a victim opens or lists that path in Emacs with TRAMP engaged, the malformed username portion of the remote filename is passed to a shell, executing arbitrary OS commands as the victim. No public exploit code was identified, but because this is an incomplete fix for CVE-2026-79992 the bypass technique is already publicly documented.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 11, 2026

OS command injection in GNU Emacs's TRAMP remote-file library (Emacs releases before 31.2, TRAMP through 2.8.2) lets an attacker who can get a crafted filename in front of a user execute arbitrary shell commands with that user's privileges, because tramp-user-regexp relies on an incomplete denylist of dangerous shell characters. This is a follow-on defect to CVE-2026-79992, whose fix did not cover all dangerous inputs. Exploitation is local, requires user interaction (the victim must open, complete, or otherwise have Emacs/TRAMP evaluate the malicious path), and only affects installations that use TRAMP remote-file functionality; no public exploit code and no confirmed active exploitation were identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade to GNU Emacs 31.2, which is the first release not listed as affected by this issue; the fix for the root cause (an expanded tramp-user-regexp denylist or equivalent) is documented in the patch reference at https://www.openwall.com/lists/oss-security/2026/10/11/1, and context is in https://www.openwall.com/lists/oss-security/2026/08/21/1. TRAMP is affected through 2.8.2, and because the provided data does not state an exact fixed standalone TRAMP version, users who load a separately installed TRAMP (GNU ELPA or the tarball at https://ftp.gnu.org/gnu/tramp/tramp-2.8.2.tar.gz) should confirm the patched release against the vendor advisory rather than assuming the Emacs upgrade covers them. Where upgrading immediately is not possible, the most effective compensating control is to stop TRAMP from evaluating untrusted paths: disable remote-file handling entirely (set tramp-mode to nil, or unbind the TRAMP remote file-name handlers) so opening a crafted /method:user@host:path is never shell-interpolated - the trade-off is loss of remote editing in that Emacs session. A narrower mitigation is to avoid opening, completing, or previewing filenames from untrusted sources (cloned repositories, directory listings, shared mounts, archives) inside Emacs, which removes the delivery path but relies on user discipline and does not fix the underlying denylist. Restricting the Emacs user's shell environment (a hardened, non-interactive shell, or running Emacs as a low-privileged account) limits post-exploitation impact but does not prevent the injection itself. Because no public exploit code and no confirmed active exploitation were identified at time of analysis, patching can be scheduled through normal change control, prioritized on workstations and accounts where Emacs TRAMP is routinely used to browse files of unknown provenance.

Affected VersionsENISA

emacs 0 <31.2

Affected Packages

euvd emacs fix: 31.2

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

TRAMP (Transparent Remote Access, Multiple Protocol) is the remote-file subsystem bundled with GNU Emacs, which parses remote file names of the form /method:user@host:path and interpolates their components into shell command lines when it spawns helper programs (ssh, rsh, or a local shell method). The root cause class is CWE-184, Incomplete List of Disallowed Inputs: rather than allowlisting safe characters, tramp-user-regexp attempts to block dangerous ones, and the denylist is missing characters or sequences that a shell still interprets, so a filename whose user component carries shell metacharacters flows into a shell invocation and is executed. The advisory explicitly states this is an incomplete fix for CVE-2026-79992, meaning the earlier denylist hardening was bypassed by inputs it failed to enumerate. Affected product data resolves to CPE cpe:2.3:a:gnu:emacs:*:*:*:*:*:*:*:*, consistent with a wildcard match across Emacs versions rather than a single build. Scoring note: the published vector (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) and our assessed vector (CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H) agree that the attack is local, has no scope change, and yields high confidentiality, integrity, and availability impact, but differ on prerequisites - we assess no authentication is needed while user interaction is required, since the victim must cause Emacs/TRAMP to evaluate the attacker-supplied path. Any code that runs executes only with the privileges of the Emacs user, so blast radius is the invoking account, not the system, and default non-TRAMP editing of trusted local files is unaffected.

Know when Emacs 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 (mitre) PRIMARY 7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.8 HIGH

Attacker supplies a crafted filename needing no privileges (PR:N) that the victim must open in TRAMP (UI:R); processing is local (AV:L) and injection yields full code execution as the user (C/I/A:H).

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Red Hat 7.8 HIGH

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

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

DescriptionCVE.org

GNU Emacs before 31.2 (and TRAMP through 2.8.2) allows OS command injection via a filename because tramp-user-regexp has an incomplete list of disallowed inputs. NOTE: this issue exists because of an incomplete fix for CVE-2026-79992.

Executive ViewAI

Why It Matters

A command-injection flaw in GNU Emacs's TRAMP remote-file library (all Emacs releases before 31.2, TRAMP through 2.8.2) could allow an attacker to run arbitrary shell commands with the privileges of any employee who opens or completes a malicious remote file path. Exploitation requires local access and victim interaction rather than remote unauthenticated access, so exposure is concentrated among developers, engineers, and administrators who use Emacs TRAMP to edit files on remote systems. Because TRAMP is commonly used in privileged engineering and infrastructure workflows, a successful exploit could compromise developer credentials, source code, and access to production systems, making timely upgrades of affected installations a priority.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 59% exploitable
Prevalence
Medium
GNU Emacs is a popular developer editor, but TRAMP use is a subset
Social Media
3
Sightings
Data Quality
5 sources
Confidence: Medium

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 HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
Medium

Priority Score

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

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

More in Emacs

View all
CVE-2012-0035 CRITICAL
9.3 Jan 19

Untrusted search path vulnerability in EDE in CEDET before 1.0.1, as used in GNU Emacs before 23.4 and other products, a

CVE-2024-39331 CRITICAL
9.8 Jun 23

In Emacs before 29.4, org-link-expand-abbrev in lisp/ol.el expands a %(...) link abbrev even when it specifies an unsafe

CVE-2017-14482 HIGH
8.8 Sep 14

GNU Emacs before 25.3 allows remote attackers to execute arbitrary code via email with crafted "Content-Type: text/enric

CVE-2024-53920 HIGH
7.8 Nov 27

In elisp-mode.el in GNU Emacs before 30.1, a user who chooses to invoke elisp-completion-at-point (for code completion)

CVE-2026-96442 HIGH
7.8 Sep 23

Code execution in GNU Emacs versions prior to 31.2 occurs when Flymake performs on-the-fly syntax checking with a langua

CVE-2024-30202 HIGH
7.8 Mar 25

In Emacs before 29.3, arbitrary Lisp code is evaluated as part of turning on Org mode. Rated high severity (CVSS 7.8), t

CVE-2023-2491 HIGH
7.8 May 17

A flaw was found in the Emacs text editor. Rated high severity (CVSS 7.8), this vulnerability is low attack complexity.

CVE-2023-27986 HIGH
7.8 Mar 09

emacsclient-mail.desktop in Emacs 28.1 through 28.2 is vulnerable to Emacs Lisp code injections through a crafted mailto

CVE-2023-27985 HIGH
7.8 Mar 09

emacsclient-mail.desktop in Emacs 28.1 through 28.2 is vulnerable to shell command injections through a crafted mailto:

CVE-2022-45939 HIGH
7.8 Nov 28

GNU Emacs through 28.2 allows attackers to execute commands via shell metacharacters in the name of a source-code file,

CVE-2014-9483 HIGH
7.5 Aug 28

Emacs 24.4 allows remote attackers to bypass security restrictions. Rated high severity (CVSS 7.5), this vulnerability i

CVE-2026-96269 HIGH
7.5 Sep 22

Arbitrary code execution in GNU Emacs 28.1 through 31.1 is triggered simply by opening a crafted file: an untrusted read

Vendor StatusVendor

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