{"id":"CVE-2026-48800","aliases":["EUVD-2026-39904","GHSA-3x3f-3j39-pj3v"],"status":"published","title":"Notepad++: Arbitrary Code Execution via shortcuts.xml UserCommand Injection","description":"Notepad++ is a free and open-source source code editor. Prior to 8.9.6.1, the \u003cCommand\u003e tag text content inside \u003cUserDefinedCommands\u003e 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.","severity":{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00209,"percentile":0.11154,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":true,"fix_available":false},"cwes":["CWE-78"],"published":"2026-06-26T20:12:43Z","modified":"2026-10-28T10:51:51Z","exploits":[{"source":"pocgithub","id":"kavin-jindal/CVE-2026-48800-PoC","title":"kavin-jindal/CVE-2026-48800-PoC","date":"2026-05-31","url":"https://github.com/kavin-jindal/CVE-2026-48800-PoC"}],"products":[{"vendor":"notepad-plus-plus","product":"notepad-plus-plus"},{"vendor":"notepad-plus-plus","product":"notepad\\+\\+"}],"references":[{"url":"https://github.com/notepad-plus-plus/notepad-plus-plus/security/advisories/GHSA-3x3f-3j39-pj3v","tags":["x_refsource_CONFIRM","exploit","Exploit","Patch","Vendor Advisory","advisory"]},{"url":"https://github.com/notepad-plus-plus/notepad-plus-plus/commit/6b3dc52a9245c6d8c6287a8d6d93a30981c05feb","tags":["x_refsource_MISC","Patch","fix"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48800.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-48800","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2026-48800","title":"Notepad++: Arbitrary Code Execution via shortcuts.xml UserCommand Injection","description":"Notepad++ is a free and open-source source code editor. Prior to 8.9.6.1, the \u003cCommand\u003e tag text content inside \u003cUserDefinedCommands\u003e 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.","status":"published","published":"2026-06-26T20:12:43.955Z","modified":"2026-06-30T03:36:14.723Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high","assessor":"cna"}],"cwes":["CWE-78"],"updated_at":"2026-11-02T13:50:49.872037Z"}],"euvd":[{"id":"EUVD-2026-39904","description":"Notepad++ is a free and open-source source code editor. Prior to 8.9.6.1, the \u003cCommand\u003e tag text content inside \u003cUserDefinedCommands\u003e 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.","status":"published","published":"2026-06-26T20:12:43Z","modified":"2026-06-30T03:36:14Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T18:20:22.124605Z"}],"nvd":[{"id":"CVE-2026-48800","description":"Notepad++ is a free and open-source source code editor. Prior to 8.9.6.1, the \u003cCommand\u003e tag text content inside \u003cUserDefinedCommands\u003e 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.","status":"published","published":"2026-06-26T21:16:34.297Z","modified":"2026-06-30T05:19:35.057Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-78"],"updated_at":"2026-11-02T14:12:26.508751Z"}],"osv":[{"id":"CVE-2026-48800","title":"Notepad++: Arbitrary Code Execution via shortcuts.xml UserCommand Injection","description":"Notepad++ is a free and open-source source code editor. Prior to 8.9.6.1, the \u003cCommand\u003e tag text content inside \u003cUserDefinedCommands\u003e 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.","status":"published","published":"2026-06-26T20:12:43.955Z","modified":"2026-10-28T10:51:51.701123884Z","cvss":[{"version":"3.1","score":7.8,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-78"],"updated_at":"2026-11-02T15:45:06.701612Z"}]}}
