a format string injection vulnerability in Notepad++ 8.9.3 allows an attacker to cause a reliable crash (DoS) or leak stack/register contents via a malicious language pack
github: llgsjsm/cve-2026-3008
on a casual thursday, i decided to pass some time by looking into some popular applications instead of doom scrolling my life away. notepad++ was one of them, we get on with tinkering shall we??
i can just distribute the malicious nativeLang.xml and pass it off as a legitimate language pack in the npp community forums. when the user unknowingly load up his npp, and tries to a matching term – it will crash every. single. time.
best part? a normal user wouldnt even know why it crashes
asides causing mischief from crashing however, this exploit can expose registers/stack values. with a write primitive you can… (or maybe not)
function: sub_1400916C0 — Find Results panel initializer vulnerable instruction: 0x140091E6D triggered by: any operation that produces results (Find All, Find in Files, Mark All)
sub_140099E60 retrieves an attacker-controlled string from nativeLang.xml and places it in v38.
wsprintfW is then called with v38 as the format string argument, not as a data argument — so any format specifiers in the XML value ( %s , %x ) are interpreted by wsprintfW.
the string originates from the attribute in nativeLang.xml with no validation at any point in the data flow:
crash (denial of service): the payload %s%s%s%s%s%s%s%s causes an immediate access violation since wsprintfW dereferences junk register/stack values as WCHAR* pointers, hitting an invalid address. tested and confirmed on notepad++ 8.9.3 x64
information disclosure: %x and %08lx specifiers leak stack and register contents into the Find Results panel tab. heres the output for %08lx :
wsprintfW does not support %n , so there is no write primitive hence theres no avenue for code execution (sad)
create nativeLang.xml with this payload:
then open Notepad++, for any text, and click Find All in Current Document . Notepad++ crashes immediately
The full story
This article is one source in a clustered incident — the cluster page carries the summary, timeline and every other outlet covering it.
