NVIDIA Merlin の脆弱性 CVE-2025-23298 が FIX:ルート権限でのリモート・コード実行の可能性

NVIDIA Merlin Flaw Enables Remote Code Execution with Root Access

2025/09/25 gbhackers — NVIDIA の Merlin Transformers4Rec ライブラリに存在する、深刻な脆弱性を悪用する攻撃者は、ルート権限でリモート・コード実行を可能にすることが、Trend Micro の Zero Day Initiative (ZDI) 脅威ハンティングチームにより明らかにされた。この脆弱性 CVE-2025-23298 は、モデルのチェックポイント読み込み機能における安全ではないデシリアライズ処理に起因するものであり、Python の pickle シリアライゼーションに依存する機械学習フレームワークにおける、持続的なセキュリティ課題を浮き彫りにしている。

安全ではないデシリアライゼーションの発見

ZDI の研究者たちが注目したのは、ML/AI フレームワークのサプライチェーン・リスクの監査における、モデルの永続化とロードの方法である。

Transformers4Rec の load_model_trainer_states_from_checkpoint 関数では、サンドボックス化やクラス制限に依存することなく、PyTorch の torch.load() が使用されている。この torch.load() は、Python の pickle プロトコルを利用するため、デシリアライズ中に任意のコード実行が可能になってしまう。

CVEAffected ProductImpactCVSS 3.1 Score
CVE-2025-23298NVIDIA Merlin Transformers4RecRemote Code Execution as root9.8

ZDI が確認したのは、細工されたチェックポイント・ファイルを読み込むと、モデル状態の復元時にルート権限でコマンドが実行される可能性があることだ。

このリスクを実証するために、研究チームは reduce メソッドでシステム・コマンドを呼び出す、悪意のチェックポイント・オブジェクトを作成した。このオブジェクトを、torch.save() がチェックポイントに書き込み、その後に torch.load() が読み込むと、モデルの重みが処理される前に、攻撃者のペイロードが実行された。したがって、権限昇格した状態で動作することが多い本番環境の ML サービスでは、システム全体が侵害される可能性がある。

この脆弱性が悪用されると、データの窃取/バックドアの設置/ネットワーク内の他のシステムへの侵入などが可能になる。

すでに NVIDIA は、Transformers4Rec のコミット b7eaea5 (PR #802) で、この脆弱性を修正している。その内容は、直接的な pickle 呼び出しをカスタム・ローダーに置き換え、デシリアライズを承認済みクラスに制限するものだ。それにより新しい実装では、serialization.py の secure_load() 関数が使用され、復元前にオブジェクト・タイプを検証するようになった。

The patch adding a custom load function in transformers4rec/torch/trainer.trainer.load_model_trainer_states_from_checkpoint

同様の問題を防ぐために、開発者にとって必要なことは、信頼できない pickle データの使用を避け、PyTorch の “weights_only=True” オプションを利用し、safetensor や ONNX などの安全なフォーマットを採用することだ。さらにユーザー組織としては、モデルの由来検証/チェックポイントの暗号署名/モデル読み込みのサンドボックス化を徹底すべきである。

この脆弱性が浮き彫りにするのは、ML/AI エコシステムにおける安全なシリアライゼーション標準の緊急性である。長年にわたりコミュニティが警告しているが、依然として pickle ベースのワークフローが深刻な攻撃ベクターであることを、いまの状況が示している。