
# Notepad++ CVE-2026-52886 — session.xml backupFilePath starts_with() Pfad-Traversal (GHSA-rqfm-pw34-r7j6)
starts_with()-PräfixprüfungNotepad++ — Beliebiges Lesen von Dateien über session.xml-backupFilePath-Traversal
PowerEditor/src/Notepad_plus.cpp (Sitzungswiederherstellung — backupFilePath-Validierung)session.xml)Notepad++ validiert das backupFilePath-Attribut bei der Sitzungswiederherstellung über einen rohen String-Präfixvergleich mittels std::wstring::starts_with(), ohne den Pfad vorher zu normalisieren. Ein manipulierter Pfad, der mit dem legitimen Präfix des Backup-Verzeichnisses beginnt, aber ..\-Traversierungssequenzen enthält, besteht die Prüfung, wird jedoch beim Öffnen der Datei durch das Betriebssystem zu einem beliebigen Speicherort aufgelöst — der Inhalt jeder lesbaren Datei wird in einen Editor-Tab geladen.
Beim Start mit aktiviertem Snapshot- (Backup-)Modus stellt Notepad++ die vorherige Sitzung aus session.xml wieder her. Das backupFilePath jedes Eintrags soll sich im Backup-Verzeichnis der Anwendung befinden. Die Integritätsprüfung stellt lediglich sicher, dass der gespeicherte Pfad mit der erwarteten Zeichenfolge des Backup-Verzeichnisses beginnt. Da der Vergleich anhand der rohen, nicht normalisierten Zeichenfolge erfolgt, setzt ein Angreifer das legitime Präfix voran und verlässt das Verzeichnis anschließend über ..\-Sequenzen.
Die Prüfung testet ein textuelles Präfix; die Verwendung öffnet den vom Betriebssystem aufgelösten Pfad. Beide weichen voneinander ab, sobald ..\ vorhanden ist.
| Operation | Quelle | Verhalten |
|---|---|---|
| PRÜFUNG | Rohe backupFilePath-Zeichenfolge | starts_with(backupDir) — besteht bei Präfixübereinstimmung |
| VERWENDUNG | Vom Betriebssystem aufgelöster Pfad | ..\-Sequenzen kollabieren zu einem beliebigen Speicherort |
Voraussetzung: Schreibzugriff auf session.xml, Snapshot-/Backup-Modus aktiviert.
Schritte:
session.xml und injiziere einen manipulierten backupFilePath:
<backupDir>\..\..\..\..\Users\victim\.ssh\id_rsa<backupDir>\ erfüllt starts_with(), sodass die Validierung erfolgreich ist...\-Sequenzen auf; die Zieldatei wird geöffnet.Ergebnis: Nur-Lese-Exfiltration — der Inhalt der Zieldatei ist im Editor sichtbar, einschließlich sensibler Dateien wie SSH-Schlüssel, Umgebungskonfigurationsdateien und Credential-Stores.
.env-/Konfigurationsdateien, Credential-Stores — jede für den Benutzer lesbare DateiAnforderungen:
session.xmlbackupFilePath-Payload: Präfix des Backup-Verzeichnisses + ..\-Traversierungssequenzen + Pfad der ZieldateiDas Injizieren des manipulierten Pfads und das Starten der Anwendung lädt die Zieldatei in einen Editor-Tab.
Der Fix (Commit 7e66f36) führt vor der Validierung eine ordnungsgemäße Pfad-Normalisierung durch, sodass ..\-Sequenzen vor dem Präfixvergleich aufgelöst werden — geprüfter Pfad und verwendeter Pfad stimmen nun überein.