公開日:2024/04/19 最終更新日:2024/04/24
JVNTA#95942420
TensorFlowベースのKerasモデルに含まれるLambdaレイヤにコードインジェクションが発生する問題
Keras 2.13より前のバージョンで作成されたTensorFlowベースのKerasモデルにおいて、モデルに含まれるLambdaレイヤの安全性を確認できない問題が指摘されています。
- Keras 2.13より前のバージョン(TensorFlowをバックエンドとする)
TensorFlowベースのKerasモデルをロードして利用する際、load_model
メソッドの引数であるsafe_mode
をTrue
に設定することにより、Keras v3保存形式のモデルにLambdaレイヤが含まれる場合に例外が発生し、レイヤ内でコードがデシリアライズされることを防ぐことができます。しかし、Keras 2.13より前のバージョンにおいてはこのチェック機構が存在しません。そのため、悪意のあるコードがデシリアライズされるLambdaレイヤがモデルに含まれる場合、そのモデルをロードすることによりシステム上で任意のコードが実行される可能性があります。
悪意のあるコードを含むモデルをロードすることによりシステム上で任意のコードが実行される。
バージョン 2.13以上のKeras 2またはKeras 3を利用し、モデルをロードする際はsafe_mode
をTrue
に設定してください(デフォルト値はTrue
)。
また、一般的に第三者が作成したモデルを再利用する際は、配布元の信頼性を確認することが必要です。
-
CERT/CC Vulnerability Note VU#253266
Keras 2 Lambda Layers Allow Arbitrary Code Injection in TensorFlow Models
- 2024/04/24
- [詳細情報]の誤字を修正しました