Skip to main content

Notepad++ EUVDEUVD-2026-39906

| CVE-2026-52885 HIGH
Time-of-check Time-of-use (TOCTOU) Race Condition (CWE-367)
2026-06-26 GitHub_M
7.5
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Gain write access to shortcuts.xml
  2. Delivery
    Plant malicious shortcuts.xml pre-launch
  3. Exploit
    Notepad++ loads tampered commands into memory
  4. Execution
    Restore legitimate file on disk
  5. Persist
    User fires command, HMAC validates clean file
  6. Impact
    Malicious in-memory command executes

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
Exploitation Conditions

Requires local write access to the on-disk shortcuts.xml file and the ability to win a timing race: the attacker must place the malicious shortcuts.xml before Notepad++ startup (when _userCommands is populated) and restore the legitimate file before the command-time HMAC check executes. Exploitation further depends on the victim subsequently triggering a user-defined command whose payload was loaded from the tampered file. Limiting factors: it is local-only (AV:L) with high complexity (AC:H) due to the swap window, it does not work against a read-only or properly permission-restricted shortcuts.xml, and it requires the attacker to already control or write to the victim's Notepad++ configuration files - so an attacker with no prior local file-write foothold cannot exploit it.

Impact

The supplied CVSS 4.0 vector (AV:L/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H, base 7.5) correctly reflects a local-only attack with high complexity due to the race window, but high impact to confidentiality, integrity and availability since arbitrary user commands run. There is no EPSS score, KEV listing, or POC provided, so real-world exploitation pressure is low and opportunistic mass exploitation is implausible - this is a precondition-heavy local issue, not an internet-facing RCE. Note a tension worth flagging: PR:N is asserted, yet the attack inherently requires write access to shortcuts.xml, which is effectively a local-privilege/foothold prerequisite - defenders should treat this as requiring prior local file-write access rather than zero privileges. The 'Information Disclosure' tag undersells the issue; the true impact is integrity bypass leading to execution of attacker-controlled commands. Overall this is a moderate, defense-in-depth priority for managed Windows fleets rather than an emergency.

Exploit ScenarioDerived

An attacker who already has write access to a victim's shortcuts.xml (for example via a prior low-privilege foothold or a writable shared profile path) replaces the file with one defining a malicious command, then restores the legitimate file once Notepad++ has loaded the tampered commands into memory. When the user triggers the affected command, the runtime HMAC check validates the restored clean file and passes, while the attacker's command executes from memory. No public POC is identified, and the high attack complexity reflects the need to win the startup-to-restore timing race.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% 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 code execution in Notepad++ before 8.9.6.4 stems from a time-of-check/time-of-use race in NppCommands.cpp: the integrity HMAC of shortcuts.xml is verified against the on-disk file when a command fires, but the command payload is read from the _userCommands vector loaded at startup and never re-synced with disk. An attacker with write access to shortcuts.xml can plant a malicious version before launch and restore the legitimate file afterward, so the runtime HMAC check passes on the clean file while the malicious in-memory command executes. There is no public exploit identified at time of analysis and the issue is not in CISA KEV; it is fixed in 8.9.6.4.

RemediationAI

Vendor-released patch: upgrade Notepad++ to 8.9.6.4 or later, which caches the shortcuts.xml HMAC at startup (Parameters.cpp) and compares the cached load-time value instead of recomputing it at command time, eliminating the swap window; see advisory https://github.com/notepad-plus-plus/notepad-plus-plus/security/advisories/GHSA-qm4c-qg8p-qfcr and commit 4f7563c7c7f8ffa0d795ec86a7777067c7d644b5. Where immediate upgrade is not possible, restrict filesystem write permissions on the user's shortcuts.xml (under the Notepad++ config directory) so that only the owning user/process can modify it, which directly removes the attacker's ability to swap the file but does nothing if the attacker already controls the user account; additionally monitor or audit modifications to shortcuts.xml (e.g., file-integrity monitoring) to detect pre-launch tampering, accepting that this is detective rather than preventive. Avoid running Notepad++ from shared or world-writable profile locations.

Affected VersionsENISA

notepad-plus-plus < 8.9.6.4

Affected Packages

euvd notepad_plus_plus fix: 8.9.6.4

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++ stores user-defined command shortcuts in shortcuts.xml and protects that file's integrity with an HMAC keyed on the machine GUID (computeHMAC over getMachineGUID() and the file content), comparing the disk value against a value persisted in config.xml. The root cause is CWE-367 (Time-of-Check Time-of-Use Race Condition): the check (computeHMAC of the current on-disk shortcuts.xml at command() execution) and the use (the _userCommands vector populated once during NppParameters::load() at startup) reference two different points in time and are never reconciled. The fix changes Parameters.cpp/Parameters.h to compute and cache the disk HMAC at load time into a new _shortcutsOnDiskHmac field and compares that cached, load-time value (nppGUI._shortcutsOnDiskHmac vs nppGUI._shortcutsXmlHmacInConfig) instead of recomputing it from disk at command time, closing the swap window. Affected component per CPE is cpe:2.3:a:notepad-plus-plus:notepad-plus-plus.

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.5 HIGH
CVSS:4.0/AV:L/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 6.7 MEDIUM

Local file-swap race (AV:L/AC:H); attacker needs write access to the victim's config file (PR:L) and the user must trigger a command (UI:R); full command execution gives C/I/A High.

3.1 AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H
4.0 AV:L/AC:H/AT:N/PR:L/UI:P/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
High
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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.4, NppCommands.cpp checks the HMAC of the on-disk shortcuts.xml at the moment a user command fires (Time-of-Check). However, the command payload is taken from the in-memory _userCommands vector, which is populated at application startup and never re-synchronized with the on-disk file (Time-of-Use). Swapping shortcuts.xml between startup and command execution causes the HMAC check to validate a clean file while a malicious command runs. An attacker with write access to shortcuts.xml places a malicious version on disk before launch, then immediately restores the legitimate file. The HMAC check at execution time validates the restored legitimate file (check passes), while the malicious payload executes from memory. This vulnerability is fixed in 8.9.6.4.

Executive ViewAI

Why It Matters

Notepad++ versions before 8.9.6.4 contain a local code execution vulnerability stemming from a race condition between configuration integrity verification and command execution. No public exploit identified at time of analysis. Organizations using Notepad++ should prioritize immediate upgrade to eliminate the risk of unauthorized code execution on affected workstations.

Business Impact: High
Compensating Controls

Apply vendor patch: upgrade to Notepad++ 8.9.6.4 or later. Interim mitigations: restrict file system write permissions on Notepad++ configuration directories (shortcuts.xml, plugin configurations) to administrators only; implement execution monitoring and application whitelisting on systems where Notepad++ access includes untrusted users.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
High
one of the most widely installed Windows source/text editors
Social Media
2
Sightings
Data Quality
7 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.2%
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

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

Attack Technique

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

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