Skip to main content

Notepad++ EUVDEUVD-2026-39904

| CVE-2026-48800 HIGH
OS Command Injection (CWE-78)
2026-06-26 GitHub_M
7.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Gain local write access to user profile
  2. Delivery
    Inject malicious <Command> into shortcuts.xml
  3. Exploit
    feedUserCmds loads value into UserCommand._cmd
  4. Execution
    Victim clicks crafted Run-menu item
  5. Persist
    ShellExecute runs attacker binary
  6. Impact
    Code execution and persistence as user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK

2 techniques 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

Exploitation requires (1) the attacker to write to the victim's shortcuts.xml configuration file and inject a crafted <Command> value inside <UserDefinedCommands>, and (2) the victim to subsequently click the malicious entry in Notepad++'s Run menu (UI:R). Limiting factors: the attack vector is local (AV:L) - there is no remote or network trigger; it depends on first gaining filesystem write access to the user's Notepad++ config, and on the victim interacting with the planted menu item; it affects only Windows installations of Notepad++ prior to 8.9.6.1. Not exploitable against an unmodified configuration or without that initial local write access.

Impact

The CVSS 3.1 vector (AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H, 7.8 High) accurately frames this as a local, low-complexity issue requiring victim interaction (clicking the Run-menu entry) but yielding full confidentiality, integrity, and availability impact via arbitrary code execution in the user's context. The practical prerequisite - the ability to write to the victim's shortcuts.xml - is not captured by PR:N: an attacker already needs local filesystem write access to that profile or another tampering channel, so this is realistically a privilege-persistence / post-compromise primitive rather than an initial remote-access bug. No EPSS score, SSVC decision, KEV listing, or public POC was provided, and there is no public exploit identified at time of analysis, so exploitation is currently theoretical. Net assessment: a legitimate priority for endpoints where untrusted code or other users can modify Notepad++ config files, but lower urgency than the raw 7.8 suggests for typical single-user workstations because it is not remotely or autonomously exploitable.

Exploit ScenarioDerived

An attacker with local write access to a user's Notepad++ profile (for example via prior low-privilege access, a shared workstation, or a malicious installer) edits shortcuts.xml to add a <Command> entry whose text is a path to a malicious executable, labeled as a benign-looking Run-menu item. The next time the victim opens that Run-menu entry, ShellExecute launches the attacker's binary in the victim's context. No public POC is referenced, but the low attack complexity makes weaponization straightforward once file-write access is obtained.

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

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

Alert me

AnalysisAIv1 – Jun 26, 2026

Local OS command injection in Notepad++ before 8.9.6.1 lets an attacker who can write to a user's shortcuts.xml inject an arbitrary executable path into a <Command> entry under <UserDefinedCommands>, which feedUserCmds() loads into UserCommand._cmd with no validation and later passes straight to ShellExecute when the victim clicks the corresponding Run-menu item. Because the malicious entry renders as an ordinary Run-menu item, it doubles as a stealthy persistence mechanism that executes attacker-chosen binaries in the victim's user context. There is no public exploit identified at time of analysis and the flaw is not listed in CISA KEV, but the fix is confirmed in release 8.9.6.1.

RemediationAI

Upgrade to Notepad++ 8.9.6.1 or later, which is the vendor-released patch (8.9.6.1) that adds path and trust validation before ShellExecute (commit 6b3dc52). Reference the advisory GHSA-3x3f-3j39-pj3v for details. If immediate patching is not possible, treat shortcuts.xml as a sensitive file: restrict NTFS write permissions on each user's %AppData%\Notepad++\shortcuts.xml (and the installation-directory copy) so only the owning user/administrators can modify it, audit the <UserDefinedCommands> section for unexpected <Command> entries pointing at non-absolute paths or untrusted locations, and remove any you did not create - the trade-off is that legitimate custom Run commands must be re-added and maintained manually. Monitoring file-integrity on shortcuts.xml is a low-impact compensating control that detects tampering without breaking functionality.

Affected VersionsENISA

notepad-plus-plus < 8.9.6.1

Affected Packages

euvd notepad_plus_plus fix: 8.9.6.1

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

Notepad++ is a widely used open-source Windows source-code editor whose Run menu supports user-defined commands persisted in the shortcuts.xml configuration file. At Parameters.cpp:3658, NppXml::value(aNode) reads the text content of each <Command> tag inside <UserDefinedCommands> and stores it verbatim in UserCommand._cmd. When the menu item is invoked, NppCommands.cpp:4264 builds a Command object via string2wstring(ucmd.getCmd()) and calls run(), which reaches ShellExecute at RunDlg.cpp:221 using the stored string as the executable path. The root cause is CWE-78 (Improper Neutralization of Special Elements used in an OS Command): configuration-sourced data is treated as a trusted command line with no path validation, allowlisting, or trust-location check, so any value placed in that XML field is executed. The fix commit (6b3dc52) adds runtime security checks - rejecting non-absolute paths, missing files, and untrusted/unsafe-URL targets, and warning on executables from untrusted locations.

Know when Notepad Plus Plus 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 7.8 HIGH
AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
vuln.today AI 7.8 HIGH

Local config-file injection executed only after the victim clicks the menu item gives AV:L/UI:R; arbitrary code runs as the user with full C/I/A impact; no app privileges are required to author the XML, so PR:N.

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:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Jun 26, 2026 - 22:02 EUVD

DescriptionCVE.org

Notepad++ is a free and open-source source code editor. Prior to 8.9.6.1, the <Command> tag text content inside <UserDefinedCommands> in shortcuts.xml is read by NppXml::value(aNode) (Parameters.cpp:3658) in the feedUserCmds() function and stored in UserCommand._cmd without any validation. When the user clicks the corresponding entry in the Run menu, NppCommands.cpp:4264 creates a Command object with string2wstring(ucmd.getCmd()) and calls run(), which invokes ShellExecute (RunDlg.cpp:221) with the attacker-controlled string as the executable path. The injected command appears as a normal menu item in the Run menu, making it a viable persistence mechanism. This vulnerability is fixed in 8.9.6.1.

Executive ViewAI

Why It Matters

Notepad++ versions prior to 8.9.6.1 contain a local command injection vulnerability that allows attackers to inject malicious executables into user Run menus, creating a persistent backdoor mechanism that executes in user context. Organizations using Notepad++ across development, analyst, and shared-use workstations are at risk of compromise and malware persistence.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
High
extremely popular Windows source-code editor, very large user base
Social Media
7
Sightings
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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.4%
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
Scheduled
Exploitation
Poc
System Exposure· derived
Small
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

39
Low Medium High Critical
KEV: 0
EPSS: 0
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.

CVE-2025-15556 HIGH
7.5 Feb 03

Notepad++ versions prior to 8.8.9 contain an update integrity verification vulnerability (CVE-2025-15556) when using the

CVE-2026-85279 HIGH POC
8.6 Sep 22

Loading a crafted Notepad++ plugin that reports more than 30 external lexers can overflow a 30-element stack array insid

CVE-2026-48778 HIGH POC
7.8 Jun 26

Local code execution in Notepad++ before 8.9.6.1 occurs because the <GUIConfig name="commandLineInterpreter"> value in c

CVE-2026-86054 HIGH POC
7.8 Sep 22

Notepad++ installations prior to 8.9.8 crash when a local attacker can control the -settingsDir= command-line argument a

CVE-2026-77605 HIGH POC
7.8 Sep 22

Arbitrary code execution in Notepad++ prior to 8.9.8 on Windows 10 and Windows 11 occurs when the editor's 'Folder as Wo

CVE-2023-47452 HIGH POC
7.8 Nov 30

An Untrusted search path vulnerability in notepad++ 6.5 allows local users to gain escalated privileges through the msim

CVE-2023-40031 HIGH POC
7.8 Aug 25

Notepad++ is a free and open-source source code editor. Rated high severity (CVSS 7.8), this vulnerability is no authent

CVE-2022-32168 HIGH POC
7.8 Sep 28

Notepad++ versions 8.4.1 and before are vulnerable to DLL hijacking where an attacker can replace the vulnerable dll (Ux

CVE-2019-16294 HIGH POC
7.8 Sep 14

SciLexer.dll in Scintilla in Notepad++ (x64) before 7.7 allows remote code execution or denial of service via Unicode ch

CVE-2026-85995 HIGH POC
7.3 Sep 22

Improper signature verification in the Notepad++ updater path allows a locally planted or modified GUP.exe updater binar

CVE-2026-25926 HIGH POC
7.3 Feb 19

Notepad++ versions before 8.9.2 allow local code execution through an unsafe search path vulnerability that permits atta

CVE-2026-85288 MEDIUM POC
6.7 Sep 22

Notepad++ releases prior to 8.9.8 enforce their shortcuts.xml HMAC integrity check on the Macro menu and keyboard-shortc

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