JFrogは2月27日(米国時間)、「Examining Malicious Hugging Face ML Models with Silent Backdoor」において、AI(Artificial Intelligence)の機械学習モデルに潜むセキュリティ上のリスクについて解説した。近年、インターネット上にはさまざまな機械学習モデルが公開され利用が広がっている。しかしながら、そのような機械学習モデルには悪意のある動作をするものがあり、侵害につながる可能性があるとして注意を呼びかけている。

  • Examining Malicious Hugging Face ML Models with Silent Backdoor

    Examining Malicious Hugging Face ML Models with Silent Backdoor

モデルロード時にコード実行

JFrogは具体的な事例として、人工知能コミュニティーサイト「Hugging Face – The AI community building the future.」に「baller423」というユーザーからアップロードされたPyTorchモデル「baller423/goober2」について解説している。なお、このリポジトリはすでに削除されている。

PyTorchモデルをロードする場合、一般的にファイルからモデルを逆シリアル化する「torch.load()」関数が使用される。特にHugging FaceのTransformersライブラリーでトレーニングされたPyTorchモデルでは、この関数を利用することが多い。torch.load()はPythonオブジェクトをシリアル化/逆シリアル化するpickleモジュールに依存した実装となっている。

JFrogの分析によると、「baller423/goober2」ではpickleモジュールの「__reduce__」関数を使用して悪意のあるペイロードをモデルファイルに挿入したとみられている。この手法を使用すると、攻撃者は任意のPythonコードをtorch.load()の逆シリアル化プロセスに挿入することが可能となり、モデルのロード時に悪意のあるコードを実行させることができる。

「baller423/goober2」に埋め込まれていた悪意のあるペイロードは、脅威アクターのコマンド&コントロール(C2: Command and Control)サーバに接続し、リバースシェルを提供する機能を持つとされる。JFrogが公開したペイロードを分析すると、Windows環境では「PowerShell」を提供し、それ以外の環境では「/bin/sh」を起動して提供する処理が確認できる。

JFrogは脅威アクターがこのリバースシェルを使用してどのような活動を実施するのか観察を試みている。観察には削除されていないリポジトリーのモデルをロードする必要があるため、baller423/goober2とほぼ同じペイロードが埋め込まれている「star23/baller13」を使用している。実験では脅威アクターのサーバーへの接続には成功したが、何もコマンドを受信することなく約1日後に切断されたという。

対策

このような脅威はPyTorchだけではなくTensorFlowやKeras、その他の機械学習モデルにも存在するとされる。JFrogセキュリティ分析チームはHugging Faceから悪意のあるモデルを約100件特定している。

  • 悪意のある機械学習モデルの脅威種別の割合 - 提供:JFrog

    悪意のある機械学習モデルの脅威種別の割合  引用:JFrog

JFrogはこのような攻撃からシステムを保護するために、機械学習モデルに含まれる脅威を検出できる高度なセキュリティソリューションの導入を推奨している。このようなセキュリティソリューションを導入することで、悪意のあるモデルのダウンロードをブロックし、AIシステムの整合性を確保できるとしている。