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 プロトコルを利用するため、デシリアライズ中に任意のコード実行が可能になってしまう。
| CVE | Affected Product | Impact | CVSS 3.1 Score |
| CVE-2025-23298 | NVIDIA Merlin Transformers4Rec | Remote Code Execution as root | 9.8 |
ZDI が確認したのは、細工されたチェックポイント・ファイルを読み込むと、モデル状態の復元時にルート権限でコマンドが実行される可能性があることだ。
このリスクを実証するために、研究チームは reduce メソッドでシステム・コマンドを呼び出す、悪意のチェックポイント・オブジェクトを作成した。このオブジェクトを、torch.save() がチェックポイントに書き込み、その後に torch.load() が読み込むと、モデルの重みが処理される前に、攻撃者のペイロードが実行された。したがって、権限昇格した状態で動作することが多い本番環境の ML サービスでは、システム全体が侵害される可能性がある。
この脆弱性が悪用されると、データの窃取/バックドアの設置/ネットワーク内の他のシステムへの侵入などが可能になる。
すでに NVIDIA は、Transformers4Rec のコミット b7eaea5 (PR #802) で、この脆弱性を修正している。その内容は、直接的な pickle 呼び出しをカスタム・ローダーに置き換え、デシリアライズを承認済みクラスに制限するものだ。それにより新しい実装では、serialization.py の secure_load() 関数が使用され、復元前にオブジェクト・タイプを検証するようになった。

同様の問題を防ぐために、開発者にとって必要なことは、信頼できない pickle データの使用を避け、PyTorch の “weights_only=True” オプションを利用し、safetensor や ONNX などの安全なフォーマットを採用することだ。さらにユーザー組織としては、モデルの由来検証/チェックポイントの暗号署名/モデル読み込みのサンドボックス化を徹底すべきである。
この脆弱性が浮き彫りにするのは、ML/AI エコシステムにおける安全なシリアライゼーション標準の緊急性である。長年にわたりコミュニティが警告しているが、依然として pickle ベースのワークフローが深刻な攻撃ベクターであることを、いまの状況が示している。
NVIDIA の Merlin Transformers4Rec に、新たな脆弱性が発見されました。モデルのチェックポイントを読み込む際に、Python の pickle を利用している点に問題があります。pickle は柔軟ですが、安全ではないデシリアライズ処理を許してしまうため、細工されたファイルを読み込むと、任意のコード実行にいたる可能性があります。特に ML 環境では、管理者権限で動作することが多く、被害が拡大しやすいのが特徴だと、この記事は指摘しています。ご利用のチームは、ご注意ください。よろしければ、NVIDIA で検索も、ご参照ください。
You must be logged in to post a comment.