公開日: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_modeTrue設定することにより、Keras v3保存形式のモデルにLambdaレイヤが含まれる場合に例外が発生し、レイヤ内でコードがデシリアライズされることを防ぐことができます。しかし、Keras 2.13より前のバージョンにおいてはこのチェック機構が存在しません。そのため、悪意のあるコードがデシリアライズされるLambdaレイヤがモデルに含まれる場合、そのモデルをロードすることによりシステム上で任意のコードが実行される可能性があります。

想定される影響

悪意のあるコードを含むモデルをロードすることによりシステム上で任意のコードが実行される。

対策方法

バージョン 2.13以上のKeras 2またはKeras 3を利用し、モデルをロードする際はsafe_modeTrueに設定してください(デフォルト値はTrue)。

また、一般的に第三者が作成したモデルを再利用する際は、配布元の信頼性を確認することが必要です。

ベンダ情報

参考情報

  1. CERT/CC Vulnerability Note VU#253266
    Keras 2 Lambda Layers Allow Arbitrary Code Injection in TensorFlow Models

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

謝辞

関連文書

JPCERT 緊急報告
JPCERT REPORT
CERT Advisory
CPNI Advisory
TRnotes
CVE
JVN iPedia

更新履歴

2024/04/24
[詳細情報]の誤字を修正しました