Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-38360 — चेतावनी: dash-uploader (Python/PyPI) में CVE-2026-38360 पथ ट्रैवर्सल (CWE-22) | Kitploit
उपकरण/GitHubGitHub/a1ohadance/cve-2026-38360
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगलर्निंग और शिक्षा
GitHuba1ohadance/cve-2026-38360

CVE-2026-38360

चेतावनी: dash-uploader (Python/PyPI) में CVE-2026-38360 पथ ट्रैवर्सल (CWE-22)

रिपॉजिटरी देखें
234 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-38360: dash-uploader में पाथ ट्रैवर्सल

CVE NVD CWE Severity Patch Auth Version PyPI Downloads

Total Downloads
License

अप्रमाणित पाथ ट्रैवर्सल fohrloop/dash-uploader (Python, PyPI) में, जो मनमानी फ़ाइल लेखन की अनुमति देता है, जिससे (केवल इन्हीं तक सीमित नहीं) रिमोट कोड निष्पादन (RCE), एप्लिकेशन सोर्स कोड का ओवरराइट, स्टोर्ड XSS और स्थायी बैकडोर इंस्टॉलेशन हो सकता है।

⚠️ कोई पैच उपलब्ध नहीं है, और भविष्य में कभी भी जारी नहीं किया जाएगा

रिपॉजिटरी को 2025-07-19 को आर्काइव किया गया था और कोई सक्रिय मेंटेनर नहीं है। प्रकाशित प्रत्येक संस्करण (0.1.0 से 0.7.0a2 तक) प्रभावित है और आगे भी रहेगा। पैकेज अभी भी लगभग 28,000 मासिक डाउनलोड प्राप्त करता है।

प्रोडक्शन में dash-uploader चलाने वाले किसी भी व्यक्ति को स्वयं मिटिगेशन लागू करना होगा। अनुशंसित समाधान Plotly Dash के अंतर्निर्मित dcc.Upload कंपोनेंट पर माइग्रेट करना है। पूर्ण विकल्पों के लिए मिटिगेशन देखें।

CVE IDCVE-2026-38360 (NVD)
भेद्यतापाथ ट्रैवर्सल (CWE-22)
CVSS 3.19.8 / गंभीर (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
उत्पादdash-uploader
प्रभावित संस्करण0.1.0 से 0.7.0a2 तक (सभी 18 रिलीज़)
फिक्स्ड संस्करणकोई नहीं (प्रोजेक्ट 2025-07-19 को आर्काइव किया गया)
हमला वेक्टररिमोट, अप्रमाणित
खोजकर्ताMuhammad Fitri Bin Mohd Sultan
असाइन किया गयाMITRE, 2026-05-07
संबंधितCVE-2026-38361 (उसी लाइब्रेरी में DoS)

विवरण

dash_uploader/httprequesthandler.py में request.form.get() से प्राप्त तीन उपयोगकर्ता-नियंत्रित पैरामीटर बिना किसी सैनिटाइज़ेशन या वैलिडेशन के सीधे os.path.join() और os.makedirs() में पास कर दिए जाते हैं:

  1. upload_id (line 57 → line 161, BaseHttpRequestHandler.get_temp_root): गंतव्य निर्देशिका को नियंत्रित करता है। एक हमलावर upload_id=../../../../usr/local/lib/python3.10/site-packages भेज सकता है और फ़ाइलें Python की पैकेज निर्देशिका में लिख दी जाती हैं।

  2. resumableFilename (line 51 → line 108, BaseHttpRequestHandler._post): अंतिम फ़ाइलनाम को नियंत्रित करता है। एक हमलावर वैध upload_id के साथ भी फ़ाइलनाम के माध्यम से अपलोड निर्देशिका से बाहर ट्रैवर्स कर सकता है।

  3. resumableIdentifier (line 54 → line 64, BaseHttpRequestHandler._post): टेम्प निर्देशिका बनाने के लिए os.makedirs() के साथ उपयोग किया जाता है। एक हमलावर फाइलसिस्टम पर कहीं भी मनमानी निर्देशिकाएँ बना सकता है।

अपलोड एंडपॉइंट (/API/dash-uploader डिफ़ॉल्ट रूप से) किसी प्रमाणीकरण की आवश्यकता नहीं रखता। v0.5.0 में जोड़ा गया http_request_handler हुक post_before() के माध्यम से अनुरोध-पूर्व जाँच की अनुमति देता है, लेकिन असुरक्षित _post() विधि हुक के लौटने के बाद सभी पैरामीटर सीधे request.form से पढ़ती है। हुक लाइब्रेरी द्वारा उन्हें प्रोसेस करने से पहले पैरामीटर को सैनिटाइज़ नहीं कर सकता। हुक के माध्यम से प्रमाणीकरण जोड़ने वाला डेवलपर अभी भी एक प्रमाणित उपयोगकर्ता से पाथ ट्रैवर्सल के प्रति असुरक्षित है।

असुरक्षित कोड

root@kitploit:~
# dash_uploader/httprequesthandler.py
def _post(self):
    resumableFilename = request.form.get("resumableFilename", default="error", type=str)
    resumableIdentifier = request.form.get("resumableIdentifier", default="error", type=str)
    upload_id = request.form.get("upload_id", default="", type=str)
    ...
    temp_root = self.get_temp_root(upload_id)                          # upload_id flows in here
    temp_dir = os.path.join(temp_root, resumableIdentifier)            # raw user input -> os.path.join
    if not os.path.isdir(temp_dir):
        os.makedirs(temp_dir)                                          # raw user input -> os.makedirs

def get_temp_root(self, upload_id):
    return os.path.join(self.upload_folder, upload_id)                 # no sanitization: ../../ escapes upload_folder

तीन स्वतंत्र ट्रैवर्सल सिंक का मूल कारण एक ही है: फ़ॉर्म मान बिना किसी वैलिडेशन के os.path.join और os.makedirs तक पहुँचते हैं।

हमले के वेक्टर

एक अप्रमाणित रिमोट हमलावर अपलोड एंडपॉइंट पर HTTP POST मल्टीपार्ट अनुरोध भेजता है। upload_id फ़ॉर्म पैरामीटर में पाथ ट्रैवर्सल सीक्वेंस (../) इंजेक्ट करके, हमलावर अपलोड की गई फ़ाइल के लिए गंतव्य निर्देशिका को नियंत्रित करता है। उदाहरण के लिए, upload_id=../../../../usr/local/lib/python3.10/site-packages फ़ाइलों को Python की पैकेज निर्देशिका में लिखता है, जिससे अगले इंटरप्रेटर स्टार्टअप पर .pth ऑटो-निष्पादन के माध्यम से RCE संभव हो जाता है।

कोई प्रमाणीकरण, सत्र टोकन या CSRF टोकन आवश्यक नहीं है। दो अतिरिक्त पैरामीटर (resumableFilename और resumableIdentifier) उसी एंडपॉइंट के माध्यम से स्वतंत्र ट्रैवर्सल वेक्टर प्रदान करते हैं। आधिकारिक क्विकस्टार्ट दस्तावेज़ में दिखाई गई डिफ़ॉल्ट लाइब्रेरी कॉन्फ़िगरेशन एक ही curl कमांड से शोषणीय है।

प्रभाव

सर्वर प्रोसेस द्वारा लिखने योग्य किसी भी निर्देशिका में मनमानी फ़ाइल लेखन। यह कई जानी-मानी प्रिमिटिव्स के माध्यम से रिमोट कोड निष्पादन (RCE) में परिणत होता है:

RCE प्रिमिटिव्स

  • site-packages में डाली गई Python .pth फ़ाइल। अगले इंटरप्रेटर स्टार्टअप पर हमलावर द्वारा आपूर्ति किया गया कोड निष्पादित करती है।
  • sitecustomize.py या usercustomize.py इंजेक्शन। हर Python स्टार्टअप पर निष्पादित होता है।
  • एप्लिकेशन की पैकेज निर्देशिका में एक आयात योग्य Python मॉड्यूल को ओवरराइट करना। अगले आयात या वर्कर रीसाइकल पर निष्पादित होता है।
  • WSGI/ASGI एंट्री पॉइंट (जैसे app.wsgi, wsgi.py) को ओवरराइट करना। अगले वर्कर रीलोड पर निष्पादित होता है।
  • क्रोन ड्रॉप-इन (/etc/cron.d/, /etc/cron.hourly/, यूज़र क्रॉनटैब स्पूल) जब प्रोसेस के पास आवश्यक विशेषाधिकार हों। अनुसूचित निष्पादन।
  • सिस्टमड यूनिट या यूज़र-यूनिट ड्रॉप-इन (/etc/systemd/system/, ~/.config/systemd/user/)। अगली सेवा शुरू होने या रीबूट पर निष्पादित होता है।
  • जब प्रोसेस रूट के रूप में चलता है तो /etc/ld.so.preload इंजेक्शन। हमलावर कोड को हर बाद के बाइनरी निष्पादन में प्रीलोड करता है।
  • शेल स्टार्टअप फ़ाइल ओवरराइट (~/.bashrc, ~/.profile, ~/.bash_profile)। ऐप उपयोगकर्ता के अगले इंटरैक्टिव लॉगिन पर निष्पादित होता है।
  • ~/.ssh/authorized_keys में जोड़ना। ऐप उपयोगकर्ता के रूप में होस्ट तक स्थायी SSH पहुँच प्रदान करता है।

वेब-स्तरीय प्रभाव

  • परोसे जाने वाले JavaScript (उदाहरण के लिए, site-packages में Dash फ्रेमवर्क JS) को ओवरराइट करके होस्ट डोमेन पर स्टोर्ड क्रॉस-साइट स्क्रिप्टिंग, जो एप्लिकेशन के पुनः आरंभ होने तक हर पेज लोड पर हर उपयोगकर्ता को प्रभावित करती है
  • एप्लिकेशन सोर्स कोड ओवरराइट (एक मूक, स्थायी बैकडोर जो सामान्य डिप्लॉय में बना रहता है जब डिप्लॉय तंत्र प्रभावित पाथ को पूरी तरह ओवरराइट नहीं करता)

फाइलसिस्टम-स्तरीय प्रभाव

  • असैनिटाइज़्ड resumableIdentifier पैरामीटर के साथ os.makedirs() के माध्यम से प्रोसेस की पहुँच वाली कहीं भी मनमानी निर्देशिका निर्माण (इनोड समाप्ति या गैर-मौजूद निर्देशिका ट्री में लेखन के मंचन के लिए उपयोगी)
  • साझा अपलोड निर्देशिकाओं में क्रॉस-यूज़र फ़ाइल प्रतिस्थापन, जो एक ही एप्लिकेशन के टेनेंट्स के बीच डेटा पॉइज़निंग की ओर ले जाता है

प्रभावित घटक

  • dash_uploader/httprequesthandler.py
  • BaseHttpRequestHandler.get_temp_root()
  • BaseHttpRequestHandler._post()

मिटिगेशन

⚠️ कोई पैच उपलब्ध नहीं है, और प्रोजेक्ट आर्काइव कर दिया गया है

वर्तमान में तैनात उपयोगकर्ताओं के लिए विकल्प, प्राथमिकता के क्रम में:

  1. dcc.Upload पर माइग्रेट करें, जो Plotly Dash के साथ शिप होने वाला आधिकारिक अपलोड कंपोनेंट है। फ़ाइलें कॉलबैक में base64 स्ट्रिंग के रूप में पहुँचती हैं; कोई फाइलसिस्टम-लेखन हैंडलर उजागर नहीं होता और कोई क्लाइंट-नियंत्रित गंतव्य पाथ मौजूद नहीं होता, इसलिए यहाँ की बग श्रेणी लागू नहीं होती। छोटी और मध्यम फ़ाइलों के लिए सबसे उपयुक्त। बहुत बड़े अपलोड के लिए, आइटम 2 देखें।

  2. एक छोटा Flask अपलोड हैंडलर बनाएं, जिसमें werkzeug.utils.secure_filename() और हार्डकोडेड सर्वर-साइड गंतव्य निर्देशिका का उपयोग हो। क्लाइंट-आपूर्ति upload_id, फ़ाइलनाम, या आइडेंटिफ़ायर मानों को पाथ घटकों के रूप में कभी स्वीकार न करें।

  3. यदि dash-uploader का उपयोग जारी रख रहे हैं, तो अपलोड एंडपॉइंट को प्रमाणीकरण के पीछे रखें और upload_id, resumableFilename तथा resumableIdentifier को एक सख्त अलाउलिस्ट (जैसे, केवल UUIDs) के विरुद्ध उस परत पर वैलिडेट करें जो लाइब्रेरी हैंडलर द्वारा देखे जाने से पहले अनुरोध को फिर से लिखती या अस्वीकार करती है। लाइब्रेरी का http_request_handler हुक ट्रैवर्सल को नहीं रोकता, क्योंकि पैरामीटर हुक के लौटने के बाद request.form से पढ़े जाते हैं; सैनिटाइज़ेशन लाइब्रेरी के ऊपर होना चाहिए।

  4. रिवर्स-प्रॉक्सी या WAF परत पर, अपलोड एंडपॉइंट पर किसी भी ऐसे अनुरोध को अस्वीकार करें जिसके किसी भी फ़ॉर्म फ़ील्ड में .., एन्कोडेड वेरिएंट (%2e%2e, ..%2f, %2e%2e%2f), या निरपेक्ष पाथ हों।

प्रकटीकरण समयरेखा

दिनांकघटना
2026-03-17प्रोडक्शन डिप्लॉयमेंट पर सुरक्षा अनुसंधान के दौरान भेद्यता खोजी गई।
2026-03-19MITRE को CVE अनुरोध प्रस्तुत किया गया।
2026-05-07CVE-2026-38360 को MITRE द्वारा असाइन किया गया।
2026-05-07सार्वजनिक एडवाइज़री प्रकाशित।
2026-05-09CVE रिकॉर्ड MITRE CVE डेटाबेस और NVD पर प्रकाशित।

पैकेज संदर्भ

  • PyPI पर लगभग 28,000 मासिक डाउनलोड (2026-05-07 से पूर्व 30 दिनों में 27,756, रिपॉजिटरी आर्काइव होने के बावजूद निरंतर दैनिक मात्रा के साथ)। स्रोत: pypistats.org।
  • नवीनतम प्रकाशित संस्करण: 0.6.1 (स्थिर श्रृंखला)। प्री-रिलीज़ 0.7.0a2 तक विस्तारित हैं।
  • आवश्यक निर्भरता: dash। वैकल्पिक निर्भरता: pyyaml। लाइसेंस: MIT।
  • 11 आश्रित पैकेज, 6 आश्रित रिपॉजिटरी।
  • 153 GitHub स्टार्स।
  • रिपॉजिटरी 2025-07-19 को आर्काइव की गई (Issue #153)।
  • कोई पूर्व CVE नहीं (2026-03-19 को NVD, GitHub Advisory Database, Snyk, OSV के विरुद्ध सत्यापित)।

संदर्भ

  • https://www.cve.org/CVERecord?id=CVE-2026-38360
  • https://nvd.nist.gov/vuln/detail/CVE-2026-38360
  • https://github.com/fohrloop/dash-uploader
  • https://pypi.org/project/dash-uploader/
  • https://pypistats.org/packages/dash-uploader
  • https://github.com/fohrloop/dash-uploader/blob/stable/dash_uploader/httprequesthandler.py
  • https://github.com/fohrloop/dash-uploader/blob/dev/dash_uploader/httprequesthandler.py
  • https://github.com/fohrloop/dash-uploader/issues/153
  • https://cwe.mitre.org/data/definitions/22.html

खोजकर्ता

Muhammad Fitri Bin Mohd Sultan

टूल डाउनलोड करें