Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-52885 — Technische Analyse von CVE-2026-52885: eine TOCTOU-Race-Condition in Notepad++ v8.9.6.2, die eine beliebige Befehlsausführung durch Umgehung der HMAC-Integrität ermöglicht. Enthält Grundursache, Angriffsszenario, PoC und Patch-Analyse. | Kitploit
Tools/GitHubGitHub/v3s9er/cve-2026-52885
SchwachstellenanalyseCode-AnalyseExploitationBinäranalysePapers & ForschungLernen & Bildung
GitHubv3s9er/cve-2026-52885

CVE-2026-52885

Technische Analyse von CVE-2026-52885: eine TOCTOU-Race-Condition in Notepad++ v8.9.6.2, die eine beliebige Befehlsausführung durch Umgehung der HMAC-Integrität ermöglicht. Enthält Grundursache, Angriffsszenario, PoC und Patch-Analyse.

Repository anzeigen
vor 7 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

TOCTOU: HMAC prüft Festplatte, führt aus dem Speicher aus

Notepad++ v8.9.6.2 — Angreifergesteuerte UserCommand-Ausführung durch HMAC-Race-Condition

Advisory

GHSAGHSA-qm4c-qg8p-qfcr
CVECVE-2026-52885
SchweregradHoch
Betroffenv8.9.6.2
Behobenv8.9.6.4
Patch-Commit4f7563c
Betroffene DateiPowerEditor/src/NppCommands.cpp :4328–4359
PlattformWindows 11 Pro x64
Erforderliche BerechtigungStandardbenutzer (Schreibzugriff auf shortcuts.xml)
Forscherv3s9er
Offengelegt2026-06-05

Zusammenfassung

Notepad++ v8.9.6.2 führte eine HMAC-SHA256-Integritätsprüfung auf shortcuts.xml ein, um die Einschleusung beliebiger UserCommand-Einträge zu verhindern.

Die Prüfung weist einen TOCTOU-Fehler auf: Der HMAC wird zum Zeitpunkt der Auslösung gegen die Datei auf der Festplatte verifiziert, aber der ausgeführte Befehl wird aus dem In-Memory-Vektor _userCommands gelesen, der beim Start geladen wird. Diese beiden Quellen werden nie wieder synchronisiert.

Ein Angreifer, der in shortcuts.xml schreiben kann, kann vor dem Start einen bösartigen Befehl platzieren, Notepad++ diesen in den Speicher laden lassen, die legitime Datei auf der Festplatte wiederherstellen und dann den Befehl auslösen. Die HMAC-Prüfung besteht (die Festplatte ist sauber), aber die schädliche Nutzlast wird ausgeführt (der Speicher ist veraltet).


Technischer Überblick

Der Integritätsmechanismus validiert die aktuelle shortcuts.xml auf der Festplatte, während die Befehlsausführung eine zuvor geladene In-Memory-Repräsentation verwendet. Da die beiden Datenquellen unabhängig sind, kann ein Angreifer die Datei vor dem Start ändern, sie in den Speicher parsen lassen, dann die Originaldatei vor der Befehlsausführung wiederherstellen – was dazu führt, dass die HMAC-Prüfung besteht, während die schädliche Nutzlast ausgeführt wird.


Grundursache

NppCommands.cpp Zeilen 4328–4359:

root@kitploit:~
// TIME OF CHECK — reads on-disk file
std::string currentHMAC = computeHMAC(
    getMachineGUID(),
    getFileContent(nppParams.getShortcutsPath().c_str())
);
if (currentHMAC != nppGUI._shortcutsXmlHmacInConfig) { return; }
// validated against DISK

// TIME OF USE — reads in-memory vector (loaded at startup, never refreshed)
int i = id - ID_USER_CMD;
const vector<UserCommand>& cmds = nppParams.getUserCommandList();
UserCommand ucmd = cmds[i];
Command cmd(string2wstring(ucmd.getCmd(), CP_UTF8));
cmd.run(_pPublicInterface->getHSelf()); // executes payload from MEMORY
OperationQuelleZeitpunkt
PRÜFUNG (HMAC)Datei auf FestplatteZum Zeitpunkt der Auslösung
NUTZUNG (Ausführung)SpeichervektorBeim Start geladen
LÜCKEAngreifergesteuertStart → Auslösung

Angriffsszenario

Voraussetzung: Schreibzugriff auf shortcuts.xml

  • Portable Installation: gleiches Verzeichnis wie notepad++.exe
  • Standardinstallation: %AppData%\Notepad++\

Schritte:

  1. Überschreibe shortcuts.xml auf der Festplatte mit einer bösartigen Version (cmd = calc.exe)
  2. Starte Notepad++ — _userCommands wird aus der bösartigen Datei befüllt
  3. Stelle die legitime shortcuts.xml auf der Festplatte wieder her — HMAC stimmt nun mit config.xml überein
  4. Sende WM_COMMAND(21000) (ID_USER_CMD+0) oder drücke Strg+Alt+P
  5. HMAC-Prüfung liest die legitime Datei von der Festplatte → BESTANDEN
  6. Ausführung liest _userCommands[0] aus dem Speicher → calc.exe wird ausgeführt

Ergebnis: Ausführung von angreifergesteuerten Befehlen unter den Berechtigungen des aktuellen Benutzers. Kein Admin, keine UAC, keine Benutzerwarnung.


Ausführungszeitachse


Auswirkungen


Proof of Concept

Siehe poc_8962_toctou.ps1.

Anforderungen:

  • Notepad++ v8.9.6.2 portable x64
  • doLocalConf.xml im Notepad++-Verzeichnis vorhanden (Portable-Modus)
  • config.xml mit einem gültigen HMAC für die legitime shortcuts.xml
root@kitploit:~
.\poc_8962_toctou.ps1 -NppPath "C:\path\to\notepad++.exe"

Verifiziert: calc.exe gestartet (PID 35932), Festplatte zeigt durchgehend legitime shortcuts.xml.


Patch-Analyse

Der Fix (Commit 4f7563c) verschiebt die HMAC-Validierung in den Startvorgang, zusammen mit der anfänglichen Datei-Parse. Prüfung und Nutzung arbeiten nun gleichzeitig auf demselben Objekt, wodurch das TOCTOU-Fenster beseitigt wird.

v8.9.6.2 (anfällig)v8.9.6.4 (behoben)
HMAC-PrüfungZum Zeitpunkt der Auslösung, erneutes Lesen der FestplatteBeim Start, gleiche Bytes wie beim Parsen
BefehlsquelleSpeicher geladen beim StartSpeicher validiert beim Start
TOCTOU-Fenster

Referenzen

  • GHSA-qm4c-qg8p-qfcr
  • Patch-Commit 4f7563c
  • Notepad++ v8.9.6.4 Veröffentlichung
Tool herunterladen
ZeitEreignisZustand
T+0,0sAngreifer schreibt BÖSARTIGE shortcuts.xmlFestplatte=BÖSARTIG
T+0,0sAngreifer startet Notepad++Festplatte=BÖSARTIG
T+0,1sNotepad++ liest shortcuts.xml → _userCommands[0]="calc.exe"Speicher=BÖSARTIG
T+4,2sNotepad++ vollständig geladenSpeicher=BÖSARTIG
T+4,2sAngreifer stellt LEGITIME shortcuts.xml wieder herFestplatte=LEGITIM / Speicher=BÖS
T+4,7sAngreifer sendet WM_COMMAND(21000)
T+4,7sHMAC-Prüfung: liest LEGITIME Datei von Festplatte → BESTANDENPRÜFUNG OK
T+4,7sAusführung: liest _userCommands[0] aus SPEICHER → calc.exeAUSBEUTUNG
T+4,7scalc.exe gestartet (PID 35932)BESTÄTIGT
ArtBeliebige Befehlsausführung
Admin erforderlichNein
UAC-EingabeaufforderungNein
ErkennbarkeitNiedrig — Festplatte zeigt durchgehend legitime Datei; Nutzlast nur im Speicher
CVSS (geschätzt)AV:L / AC:H / PR:L / UI:N / S:U / C:H / I:H / A:H
Start → Auslösung
Beseitigt