pyLoad: parse_urls API एंडपॉइंट में SSRF, बिना मान्य किए गए URL पैरामीटर के माध्यम से
प्लेटफ़ॉर्म
python
कॉम्पोनेन्ट
pyload-ng
## भेद्यता विवरण **CWE-918**: सर्वर-साइड रिक्वेस्ट फोर्जरी (SSRF) `src/pyload/core/api/__init__.py` में `parse_urls` API फ़ंक्शन (लाइन 556) `get_url(url)` (pycurl) के माध्यम से सर्वर-साइड पर मनमाने URL प्राप्त करता है, बिना किसी URL सत्यापन, प्रोटोकॉल प्रतिबंध, या IP ब्लैकलिस्ट के। एक प्रमाणित उपयोगकर्ता जिसके पास ADD अनुमति है, वह कर सकता है: - आंतरिक नेटवर्क संसाधनों और क्लाउड मेटाडेटा एंडपॉइंट्स को HTTP/HTTPS अनुरोध भेजें - **स्थानीय फ़ाइलें पढ़ें** `file://` प्रोटोकॉल के माध्यम से (pycurl सर्वर-साइड पर फ़ाइल पढ़ता है) - **आंतरिक सेवाओं के साथ इंटरैक्ट करें** `gopher://` और `dict://` प्रोटोकॉल के माध्यम से - त्रुटि-आधारित ओरेकल के माध्यम से **फ़ाइल अस्तित्व को सूचीबद्ध करें** (त्रुटि 37 बनाम खाली प्रतिक्रिया) ### भेद्य कोड **`src/pyload/core/api/__init__.py` (लाइन 556)**: ```python def parse_urls(self, html=None, url=None): if url: page = get_url(url) # कोई प्रोटोकॉल प्रतिबंध नहीं, कोई URL सत्यापन नहीं, कोई IP ब्लैकलिस्ट नहीं urls.update(RE_URLMATCH.findall(page)) ``` `url` पैरामीटर पर कोई सत्यापन लागू नहीं किया जाता है। अंतर्निहित pycurl डिफ़ॉल्ट रूप से `file://`, `gopher://`, `dict://`, और अन्य खतरनाक प्रोटोकॉल का समर्थन करता है। ## पुनरुत्पादन के चरण ### सेटअप ```bash docker run -d --name pyload -p 8084:8000 linuxserver/pyload
कैसे ठीक करें
कोई आधिकारिक पैच उपलब्ध नहीं है। वैकल्पिक समाधान खोजें या अपडेट की निगरानी करें।
अपनी निर्भरताओं की स्वचालित निगरानी करें
जब नई कमज़ोरियाँ आपके प्रोजेक्ट को प्रभावित करें तो अलर्ट पाएं।
मुफ़्त शुरू करें