
InputLeap के drag-and-drop handler में CWE-22 path traversal के लिए proof-of-concept और advisory, जिसमें reproduction steps, exploit script, और remediation guidance शामिल है।
उत्पाद: InputLeap v3.0.3
विक्रेता: input-leap
भेद्यता: पाथ ट्रैवर्सल
CWE: CWE-22 किसी पथनाम को प्रतिबंधित निर्देशिका तक सीमित करने में अनुचित सीमा ('पाथ ट्रैवर्सल')
InputLeap का ड्रैग-एंड-ड्रॉप हैंडलर अंतिम पथ विभाजक ढूँढकर और उसके बाद वाले भाग को ही रखकर फ़ाइलनामों को साफ़ करने का प्रयास करता है। जब कोई विभाजक नहीं मिलता, तो C++ स्ट्रिंग सर्च विफलता दर्शाने के लिए npos नामक एक विशेष सेंटिनल मान लौटाता है। हालाँकि, कोड अंकगणितीय गणनाओं में परिणाम का उपयोग करने से पहले इस सेंटिनल की कभी जाँच नहीं करता। चूँकि npos को सबसे बड़े संभव unsigned integer के रूप में परिभाषित किया गया है, इसे घटाने पर चुपचाप रैपअराउंड होता है और एक वैध दिखने वाला उत्तर उत्पन्न होता है जो पूरी तरह से गलत है: केवल फ़ाइलनाम लौटाने के बजाय, यह पूरी असाफ़ मूल स्ट्रिंग लौटाता है। एक हमलावर इसका शोषण ऐसी संदेश बनाकर कर सकता है जिसमें एक प्रविष्टि में विभाजक न हो जबकि दूसरी में बेमेल विभाजक हो — कोड का वैश्विक विभाजक-पहचान अनुमानी तर्क पलट जाता है, सर्च चुपचाप विफल हो जाती है, और ....\AppData...\Startup\evil.exe बिना किसी बदलाव के पार हो जाता है। वह स्ट्रिंग फिर ड्रॉप निर्देशिका से जोड़ दी जाती है और OS को सौंप दी जाती है, जो .. अनुक्रमों की व्याख्या करता है और फ़ाइल को इच्छित फ़ोल्डर के बाहर लिख देता है। यह भेद्यता इसलिए मौजूद है क्योंकि "नहीं मिला" मामले के लिए एक रक्षात्मक जाँच अनुपस्थित है।
/src/lib/inputleap/DragInformation.cpp
/src/lib/inputleap/DropHelper.cpp
एक POC प्रदान किया गया है जो सर्वर से TLS और no crypto कनेक्शन का समर्थन करता है।
input-leap-directory-traversal-poc.py
एक हमलावर इस भेद्यता का शोषण करके डिफ़ॉल्ट या निर्दिष्ट फ़ोल्डर के बाहर किसी मनमाने पथ पर फ़ाइल अपलोड कर सकता है। इससे कोड निष्पादन हो सकता है