Medium severity · published Jun 26, 2026
CVE-2026-52885
Notepad++ TOCTOU: HMAC Checks Disk, Executes from Memory
6.3
CVSS
0.1%
EPSS
No
On KEV
Description
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.
CVSS vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:H
Attack vector
Local
Complexity
High
Privileges
Low
User interaction
None
Confidentiality
None
Integrity
High
Availability
High
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.1% · higher than 2% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
NO
notepad-plus-plus · notepad-plus-plus
< 8.9.6.4 · source: vendor
NO
Notepad++ · Notepad-plus-plus
before 8.9.6.4 · source: NVD
Affected product
NO
notepad-plus-plus
notepad-plus-plus
More from notepad-plus-plus
7.5
CVE-2025-15556
Notepad++ < 8.8.9 WinGUp Updater Lacks Update Integrity Verification
8.6
CVE-2026-85279
Notepad++: Stack Buffer Overflow in Plugin Lexer Loading via Unchecked GetLexerCount() Return Value
8.1
CVE-2026-57233
Notepad++: Path Traversal (Zip Slip) in WinGup Plugin Extraction
7.8
CVE-2026-77605
Notepad++ “Run by system” executes *.txt.cmd when user selected *.txt (target confusion → command execution)
7.8
CVE-2026-86054
Notepad++: Stack Buffer Overflow in `NppParameters::writeSession` via overlong session path