Skip to main content
Meet us at Black Hat USA 2026— Las Vegas, August 1–6Book a Meeting
Mallory
UnratedPublic exploit

Arbitrary Code Execution in Notepad++ config.xml commandLineInterpreter

IdentifiersCVE-2026-48778CWE-78

CVE-2026-48778 is an arbitrary code execution vulnerability in Notepad++ affecting versions prior to 8.9.6.1. The issue is caused by unsafe handling of the <GUIConfig name="commandLineInterpreter"> element in config.xml. Notepad++ reads this value via NppXml::value() in Parameters.cpp and stores it in the GUI configuration state without validation, allowlisting, integrity verification, or signature checks. When the user invokes File → Open Containing Folder → cmd (IDM_FILE_OPEN_CMD), Notepad++ constructs a Command object from the stored value in NppCommands.cpp and ultimately calls ShellExecute in RunDlg.cpp using the attacker-controlled string as the executable path. This allows a tampered configuration file to replace the expected command interpreter with an arbitrary executable or command target.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Successful exploitation results in arbitrary code execution in the security context of the current user. An attacker who can influence the victim's Notepad++ configuration can cause the application to launch attacker-chosen executables when the victim uses the affected UI feature. This can be used to execute malware, establish persistence, or run other local programs instead of the intended command shell. The impact is limited to the privileges of the user running Notepad++, but on developer or administrative workstations this may still be significant.

Mitigation

If you can’t patch tonight, do this now.

Until patching is completed, prevent unauthorized modification of Notepad++ configuration files, especially %APPDATA%\Notepad++\config.xml and any alternate settings directories. Restrict write access to user configuration locations where feasible, monitor for unexpected changes to config.xml, and avoid launching Notepad++ with attacker-influenced -settingsDir values. In environments using cloud-synchronized or shared settings paths, treat those locations as sensitive and monitor them for tampering. User awareness measures can also reduce social-engineering scenarios involving malicious archives or shortcuts that plant or redirect to hostile configuration files.

Remediation

Patch, then assume compromise.

Upgrade Notepad++ to version 8.9.6.1 or later. The vendor fix removes the configurable commandLineInterpreter setting from config.xml and replaces it with trusted system paths for launching cmd and PowerShell. Specifically, the vulnerable configuration parsing and storage were removed, and the application now uses trusted system resolution rather than attacker-controlled XML values for this workflow.
PUBLIC EXPLOITS

Exploits

3 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos (1 hidden).

VALID 3 / 4 TOTALView more in app
CVE-2026-48778MaturityPoCVerified exploit

Small standalone Windows C++ proof-of-concept repository with 2 files: one exploit source file and one README. The exploit is a local file-based RCE enabler for Notepad++ tied to CVE-2026-48778. Its workflow is straightforward: print banner/help, read a single payload argument, resolve %APPDATA%, derive %APPDATA%\Notepad++\config.xml and a backup path, copy the original config to config.xml.backup, then overwrite config.xml with attacker-controlled XML containing a GUIConfig named commandLineInterpreter. The payload is not a shellcode or network stager; it is simply a command string embedded into the XML. After modification, the user must manually trigger the vulnerable Notepad++ feature ('Open Containing Folder in cmd') for execution. No network communication, C2, persistence beyond config tampering, privilege escalation, or stealth features are present. This is a real exploit/POC rather than a detector, and its structure/purpose is to demonstrate local code execution by abusing Notepad++ configuration handling on affected Windows versions.

XK3NF4Disclosed May 30, 2026cppmarkdownlocalfile
CVE-2026-48778-PoCMaturityPoCVerified exploit

This repository is a small standalone local proof-of-concept for CVE-2026-48778 affecting Notepad++ on Windows. It contains two files: a README describing the issue and usage, and a single Python exploit script. The script does not perform remote exploitation; instead, it abuses a local configuration weakness by locating %APPDATA%\Notepad++\config.xml, reading the XML contents, and replacing or inserting the GUIConfig entry named commandLineInterpreter with calc.exe. After the file is modified, the user is instructed to open Notepad++ and trigger File -> Open Containing Folder -> cmd, at which point calc.exe launches instead of the normal command interpreter. The exploit capability is therefore arbitrary code execution via configuration hijacking, but only in a local context with write access to the victim user's Notepad++ config file and a vulnerable Notepad++ version installed. The payload is hardcoded and basic, making this an operational PoC rather than a weaponized exploit. No networking, persistence, privilege escalation, or exfiltration behavior is present.

kavin-jindalDisclosed May 30, 2026pythonmarkdownlocal
Notepad-8.9.6-PoCMaturityPoCVerified exploit

This repository is a small standalone PoC collection for three local vulnerabilities affecting Notepad++ <= 8.9.6 on Windows. It contains 7 files total: a README, two XML payload samples, one PowerShell crash PoC, and three Python PoCs. The code is not part of a larger exploit framework. Repository structure and purpose: - README.md documents the three CVEs, prerequisites, trigger conditions, and usage examples. - poc_CVE-2026-48770.py and payloads/poc_CVE-2026-48770.ps1 implement the same local crash technique in Python and PowerShell. - poc_CVE-2026-48778.py generates or restores a malicious config.xml for command execution. - poc_CVE-2026-48800.py generates or restores a malicious shortcuts.xml for command execution. - payloads/config.xml and payloads/shortcuts.xml are ready-made drop-in XML payloads. Main exploit capabilities: 1. CVE-2026-48770: local denial-of-service/crash. The PoC locates the Notepad++ window and sends a crafted WM_COPYDATA message with dwData=3 and a non-NUL-terminated 8192-byte buffer, aiming to trigger an out-of-bounds read and crash the process. 2. CVE-2026-48778: local code execution via configuration injection. The script writes a malicious %APPDATA%\Notepad++\config.xml or a temporary config.xml for use with -settingsDir. It sets GUIConfig name="commandLineInterpreter" to an attacker-chosen executable. When the user selects File -> Open Containing Folder -> cmd, Notepad++ launches that executable. 3. CVE-2026-48800: local code execution via shortcuts injection. The script writes a malicious %APPDATA%\Notepad++\shortcuts.xml or a temporary shortcuts.xml for use with -settingsDir. It adds a UserDefinedCommands entry whose text is an attacker-chosen executable. After restart, the victim can trigger execution from the Run menu. Operational characteristics: - The RCE PoCs support direct overwrite and restore workflows, including automatic backup creation (.bak). - Both RCE PoCs also support a settingsdir mode that avoids modifying the real AppData directory by preparing a temporary settings directory and printing a launch command for notepad++.exe -settingsDir=<tmpdir>. - Payloads are basic and customizable through command-line arguments, making the repository more than a pure detection script but still a straightforward PoC/operational local exploit set. No external network infrastructure, C2, or remote endpoints are used. The exploit surface is entirely local: Windows messaging and local Notepad++ configuration files.

atiillaDisclosed May 28, 2026markdownxmllocalfile
What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence

Every observed campaign linking this CVE to a named adversary.

Associated malware

Malware families riding this exploit, with evidence and IOCs.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity22

Community discussion across Reddit, Mastodon, and other social sources.