
# Notepad++ CVE-2026-52886 — session.xml backupFilePath starts_with() पाथ ट्रैवर्सल (GHSA-rqfm-pw34-r7j6)
starts_with() प्रीफिक्स चेक बायपासNotepad++ — session.xml backupFilePath ट्रैवर्सल के माध्यम से मनमाना फ़ाइल पठन
PowerEditor/src/Notepad_plus.cpp (सत्र पुनर्स्थापना — backupFilePath सत्यापन)session.xml तक लेखन पहुंच)Notepad++ सत्र पुनर्स्थापना के दौरान backupFilePath विशेषता को std::wstring::starts_with() के माध्यम से एक कच्चे स्ट्रिंग प्रीफिक्स तुलना द्वारा सत्यापित करता है, पहले पाथ को सामान्यीकृत (normalize) किए बिना। एक क्राफ्टेड पाथ जो वैध बैकअप निर्देशिका प्रीफिक्स से शुरू होता है लेकिन इसमें ..\ ट्रैवर्सल अनुक्रम होते हैं, जांच में पास हो जाता है, फिर भी जब OS फ़ाइल खोलता है तो वह एक मनमाने स्थान पर हल हो जाता है — किसी भी पठनीय फ़ाइल की सामग्री को संपादक टैब में लोड कर देता है।
स्नैपशॉट (बैकअप) मोड सक्षम के साथ लॉन्च होने पर, Notepad++ पिछले सत्र को session.xml से पुनर्स्थापित करता है। प्रत्येक प्रविष्टि का backupFilePath एप्लिकेशन की बैकअप निर्देशिका के अंतर्गत होने की उम्मीद की जाती है। अखंडता जांच केवल यह सत्यापित करती है कि संग्रहीत पाथ अपेक्षित बैकअप निर्देशिका स्ट्रिंग से शुरू होता है। चूंकि तुलना कच्चे, अन-सामान्यीकृत स्ट्रिंग पर होती है, एक हमलावर वैध प्रीफिक्स जोड़ता है और फिर ..\ अनुक्रमों के साथ निर्देशिका से बाहर निकल जाता है।
जांच एक पाठ्य प्रीफिक्स का परीक्षण करती है; उपयोग OS-हल किए गए पाथ को खोलता है। ..\ मौजूद होने पर दोनों में विरोध हो जाता है।
| संक्रिया | स्रोत | व्यवहार |
|---|---|---|
| जांच | कच्चा backupFilePath स्ट्रिंग | starts_with(backupDir) — प्रीफिक्स मिलान पर पास |
| उपयोग | OS-हल किया गया पाथ | ..\ अनुक्रम एक मनमाने स्थान पर सिमट जाते हैं |
पूर्व-शर्त: session.xml तक लेखन पहुंच, स्नैपशॉट/बैकअप मोड सक्षम।
चरण:
session.xml को अधिलेखित करें, एक क्राफ्टेड backupFilePath इंजेक्ट करते हुए:
<backupDir>\..\..\..\..\Users\victim\.ssh\id_rsa<backupDir>\ starts_with() को संतुष्ट करता है, इसलिए सत्यापन पास हो जाता है।..\ अनुक्रमों को सिमटा देता है; लक्ष्य फ़ाइल खोल दी जाती है।परिणाम: केवल-पठनीय बहिर्निकासी — लक्ष्य फ़ाइल की सामग्री संपादक में दिखाई देती है, जिसमें SSH कुंजियाँ, पर्यावरण कॉन्फ़िगरेशन फ़ाइलें और क्रेडेंशियल स्टोर जैसी संवेदनशील फ़ाइलें शामिल हैं।
.env / कॉन्फ़िग फ़ाइलें, क्रेडेंशियल स्टोर — उपयोगकर्ता द्वारा पठनीय कोई भी फ़ाइलआवश्यकताएँ:
session.xml तक लेखन पहुंचbackupFilePath पेलोड: बैकअप निर्देशिका प्रीफिक्स + ..\ ट्रैवर्सल अनुक्रम + लक्ष्य फ़ाइल पाथक्राफ्टेड पाथ इंजेक्ट करके और एप्लिकेशन लॉन्च करके लक्ष्य फ़ाइल को संपादक टैब में लोड किया जाता है।
फिक्स (कमिट 7e66f36) सत्यापन से पहले उचित पाथ सामान्यीकरण करता है, इसलिए ..\ अनुक्रम प्रीफिक्स तुलना से पहले सिमटा दिए जाते हैं — जाँचा गया पाथ और उपयोग किया गया पाथ अब मेल खाते हैं।