Artificial Intelligence (AI)
密かな破壊工作:露出したコンテナのAIモデルを標的とした攻撃
システムの設定ミスを突いて、サイバー攻撃者たちはAIを悪用し、検知が困難な大規模な攻撃を仕掛けることが可能になっています。本稿では、公開状態にあるコンテナレジストリに格納されたAIモデルが改ざんされるリスクと、企業や組織がとるべき対策について解説します。
- 攻撃者は、保護されていないコンテナレジストリを悪用してAIシステムに不正にアクセスし、改変することができます。これにより、私たちの日常生活に大きな影響を及ぼす問題が引き起こされる可能性があります。
- 調査により、8,000以上の無防備なコンテナレジストリが発見され、そのうち70%が過度に緩いアクセス権限(書き込み権限など)を持っており、攻撃者が改ざんしたイメージを自由にアップロードできる状態でした。
- これらのレジストリから1,453個のAIモデルが見つかり、その約半数がONNX(Open Neural Network Exchange)形式でした。これらの構造と脆弱性がどのように悪用される可能性があるかを詳細に分析しています。
- 企業や組織が不正侵入の兆候を見つけられるよう、攻撃者が侵入した際に取り得る行動を示すための模擬攻撃を実施しました。
仕事を終えて車で帰宅する場面を想像してみてください。自宅の駐車場に入ろうとした瞬間、スマートフォンが振動して通知が届きます。スマートシティのAIシステムからの交通違反通知です。運転中にスマートフォンを使用していたとして検挙され、重い罰金が科されるという内容だとしたらどうでしょうか。
しかし、運転中、スマートフォンはずっとカバンの中にしまってあり、一度も手にしていません。
さらに深刻なことに、市内の多くのドライバーが同じような通知を受け取っていたとしたらどうでしょうか。SNSでは苦情が殺到し、メディアは前代未聞の交通違反の急増を報じています。市の違反切符システムは機能を停止し、裁判所は大量の不服申し立てに備える事態となるでしょう。
その背後では、無防備なコンテナレジストリに侵入してAIモデルを改ざんした攻撃者が潜んでいたのです。改ざんされたシステムは、現実を誤って解釈するようになっていたのです。青信号を赤信号と判断し、有効なナンバープレートを期限切れと認識し、ハンドルを握っているドライバーを携帯電話で通話していると誤認識します。このように「違反」が自動的に検出され、誤った切符が次々と発行され、大混乱を引き起こしていたのです。
このような事態は決して空想ではありません。実際に起これば、その影響は軽微な混乱から重大な災害まで、様々な形で私たちの生活を脅かす可能性があります。
企業や組織はこうした脅威から身を守るための対策を強化する必要があります。今回の調査では、セキュリティの専門家、AI開発者、そしてコンテナレジストリとAIシステムの安全性向上に取り組む企業や組織に向けて、実践的な知見を提供することを目指しています。
スマートシティ事案:見過ごせない警告
トレンドマイクロでは、AIを活用したスマートシティソリューションを提供する複数の企業や組織について調査を実施しました。これらの企業や組織は、交通違反の監視、顔認識、群衆の行動分析など、都市生活の様々な側面を監視するAIシステムを展開しています(プライバシー保護のため、実際の企業名は開示せず、以下ではまとめて「スマートシティ」と表記します)。
今回の調査ではAIモデルを改ざんできる複数の脆弱性を発見しました。その共通の問題点は、無防備な状態で放置されたコンテナレジストリでした。
インターネット上で8,817個のコンテナレジストリが見つかりました。これらは本来非公開であるべきものでしたが、認証機能が設定されていないため、誰でもアクセスできる状態になっていました。そのうち6,259個(約70%)では、攻撃者が改ざんしたイメージをレジストリに自由にアップロードできる書き込み権限が許可されていました。
この事実を確認するため、私たちは複数の方法でHTTPレスポンスの挙動を分析しました。また、ある個人リサーチャーによる関連調査でも、4,000以上の無防備なレジストリが発見され、本稿執筆時点で、その大半に対して(無害な)イメージの書き込みテストに成功したと報告されています。
私たちが発見した保護されていないレジストリの中には、スマートシティ企業が所有するものも含まれており、それらにはAIモデルやサービスを含むDockerイメージが保存されていました。
幸い、これらの脆弱性は攻撃者に悪用される前に発見されました。しかし、この事案は、AIシステムが抱える深刻な脆弱性を明らかにする重要な警鐘となっています。
コンテナからAIへ:ONNXモデルの構造が抱える脆弱性
トレンドマイクロの以前の調査では、保護されていないコンテナレジストリの危険性を指摘しましたが、その調査範囲はクラウドサービスプロバイダー(CSP)上の非公開レジストリに限定されていました。
今回、調査範囲を拡大し、3,579のコンテナレジストリを詳細に分析しました。無防備なレジストリの増加に加え、もう一つ顕著な傾向が浮かび上がりました。それはAI関連イメージの急増です。2023年には見られなかったAIイメージが、今年は480個も発見されました。
これらのイメージから、1,453個の異なるAIモデルが見つかりました。その約半数をOpen Neural Network Exchange(ONNX)形式が占めており、この高い採用率を受けて、その構造について詳しい調査を実施することにしました。
ONNXモデルは、異なるフレームワーク間でAIモデルを相互利用できる標準フォーマットとして、高い汎用性を持っています。しかし、その複雑な構造はセキュリティ上の課題も抱えています。AIモデルの構造を理解することで、攻撃の糸口となりうる部分を特定できます。
ONNXモデルは以下の要素で構成されています:
- モデルのメタデータ:モデルの名前、バージョン、概要などの基本情報
- グラフ定義:ノード、エッジ、それらの関係性を含むニューラルネットワークの設計図
- 初期化データ:攻撃者が狙う可能性が高い、事前学習で得られた重みとバイアスの値
- 入出力仕様:モデルが受け取るデータと出力するデータの定義
ONNXモデルは、protobuf(プロトコルバッファ)というメッセージ形式を採用しています。これは元々AIモデル用ではなく、効率的なデータ転送のために設計されたものであり、モデルの改ざんを防ぐセキュリティ機能は備えていません。
ONNXモデルの最大の脆弱性は、信頼できる発行元による完全性と真正性の確認(デジタル署名に相当)が欠如している点です。この検証機能の不在により、攻撃者は暗号化されていない重みの値や編集可能なニューラルネットワークの構造を含むONNXファイルを改変し、検知を逃れながらモデルの動作を変えることができてしまいます。
モデル改ざんの手法
攻撃者はAIモデルを改ざんするために様々な手法を用いることができます。ここでは、重み、バイアス、層構造、入出力設定など、主要な構成要素に関連する手法を説明します。
重みの改ざん
重みは、ニューラルネットワークの中核をなすパラメータで、入力データがモデルの層を通過する際の処理方法を決定します。データの各特徴がどの程度重要かを定義し、学習過程でその値が調整されて精度が高められていきます。
攻撃者はONNXモデルファイル内のこれらの重みを巧妙に操作し、モデルのデータ解釈方法を変えることができます。これにより、誤った分類や偏った判断など、意図しない動作が引き起こされる可能性があります。重みの変更はわずかな値でも影響があり、厳密なテストを行わなければ発見が困難です。
例えば、顔認識モデルでは、わずかな重みの操作だけで、特定の条件下で人物の認識に失敗するようになってしまう可能性があります。
構造の改変
ニューラルネットワークの構造は、データが流れる経路を定義します。データは複数の層のニューロンを通過し、各層で計算処理が行われて次の層へと伝わっていきます。
攻撃者はネットワーク内の層を追加、削除、または並べ替えることで、モデルの機能を根本から変更できます。層を追加するとモデルが複雑になったり悪意のある動作が仕込まれたりする可能性があり、層を削除すると性能が低下する可能性があります。例えば、攻撃者は特定の入力を検知したときに意図的な誤動作を引き起こす隠れ層を追加し、モデルにバックドアを仕掛けることができます。
ONNXモデルでは、層(ノードとも呼ばれる)はグラフ定義セクションで表現され、入力から出力までの各ノード間のデータの流れが定義されています。このセクションのノードを改変することで、モデルの情報処理の仕方を変えることができます。
入出力の改ざん
モデルの入出力仕様は、モデルが処理できるデータの種類と、出力する予測や分類の形式を定義します。攻撃者はこれらの仕様を変更し、モデルにデータを誤って解釈させたり、不正な出力を生成させたりすることができます。
攻撃者は入力データの正規化プロセスを改変して不正確な処理を行わせ、誤った結果を出力させることができます。同様に、出力設定を改ざんすることで、一見正しく見えるものの実際には誤った結果を生成するよう仕向けることができます。
プルーニングの悪用
プルーニングは、モデルの予測にほとんど影響を与えないニューロンや重みを取り除いてニューラルネットワークを簡素化する技術です。これによりモデルの容量と処理負荷を軽減できます。
しかし、この技術が悪用されると、特に高い精度が求められる領域で意図的に性能を低下させることができます。例えば、攻撃者は不正検知システムにおいて特定の特徴を検出するニューロンを除去し、そのような特徴が現れたときにモデルが適切に機能しなくなるよう仕向けることができます。
ONNXでは、プルーニングは通常、初期化データセクションに保存された重みとともにノードを削除するようにグラフ定義を変更することで実現されます。
改ざんされたモデルがシステムに及ぼす影響
AIモデルが改ざんされた場合、その影響は深刻になる可能性があります。主な影響として以下が挙げられます:
- 選択的な誤認識:特定の対象を別のものとして認識するよう改変されたモデル(例:一般の赤い車を消防車と誤認識)により、広範な混乱が引き起こされる可能性があります。
- 情報漏えい:改変されたモデルは、出力に機密性の高い学習データを埋め込み、情報漏えいを引き起こす可能性があります。
- 信頼度の操作:攻撃者は誤った予測に対するモデルの確信度を意図的に高め、重要なシステムで致命的な判断ミスを引き起こす可能性があります。
これらの改ざんは発見が非常に困難です。通常の精度テストでは問題が検出されず、悪意のある改変は特定の条件が揃うまで潜在的な脅威として残り続けます。
コンテナレジストリにおけるセキュリティの課題
AIモデル自体の脆弱性に加えて、イメージの保管場所となるコンテナレジストリについても検証が必要です。システム全体を危険にさらす可能性のある主な設定の問題点として、以下が挙げられます:
- 認証の不備
- 初期設定のままのパスワードや推測しやすい認証情報の使用
- 多要素認証(MFA)が導入されていない
- アクセスキーを定期的に更新する仕組みがない
- アクセス制御が緩すぎる
- 全ユーザに対して広範な読み取りと書き込みの権限を付与
- 役割に基づくアクセス制御(RBAC)の仕組みがない
- 開発環境と本番環境が適切に分離されていない
- ネットワーク制限が不十分
- レジストリが不必要にインターネットに公開されている
- IPアドレスによるアクセス制限やVPN接続の要求がない
- クラウド環境でプライベートエンドポイントが使用されていない
- ログ記録と監視が不十分
- レジストリへのアクセスログが取得されていない
- 不審な活動パターンの監視が行われていない
- 不正アクセスの試みを検知するアラートが設定されていない
攻撃の実証実験:全容解明
攻撃者が実際にどのような手順で攻撃を仕掛けるかを明らかにするため、管理された環境でシミュレーションを実施しました。以下にその詳細を説明します:
フェーズ1:パイプラインへの侵入
ステップ1:無防備なレジストリの発見
最初のステップは、保護されていないコンテナレジストリを見つけ出すことです。適切なセキュリティ対策が施されていないレジストリは、鍵が差したまま放置された車のように、認証なしで誰でもアクセスできる状態にあります。
実際の攻撃では入念な下調べが必要ですが、この実証実験では、レジストリはすでに特定済みという想定で進めました。
ステップ2:目的のイメージの入手
次に、攻撃者は標的とするDockerイメージを入手します。このステップでは、コンテナレジストリから攻撃者の環境にイメージをダウンロードします。
フェーズ2:AIモデルの改ざん
ステップ1:ONNXモデルの取り出し
次のステップは、入手したイメージからONNXモデルを取り出すことです。イメージの構造によっては、この作業が技術的な課題となる場合があります。
ステップ2:モデル構造の解析
ONNXモデルを取り出したら、攻撃者はその構造を詳しく調べ、主要な部分を特定して改変可能な箇所を探ります。
ステップ3:改ざんの標的を決定
解析した構成要素の中から、攻撃者はモデルの動作を変更するために操作する特定の層や重みの組み合わせを決定します。
ステップ4:モデルの改変
攻撃者は、モデルの予測や出力を操作するためにパラメータを変更します。この作業は、料理に少しずつ調味料を加えて味を変えるように、細かな調整を重ねていきます。この段階では、モデルは正常に動作しているように見えますが、特定の状況で意図的に異なる動作をするよう仕組まれています。
フェーズ3:サプライチェーンの破壊
ステップ1:改ざんモデルの再構築
モデルの改変が完了したら、最後のステップとして改ざんしたイメージを再構築し、レジストリに戻す準備をします。
ステップ2:改ざんイメージの密かな返却
攻撃者は改変したコンテナイメージを元のレジストリにアップロードします。このイメージは、システム管理者が気付かずに取得して使用するのを待つ、静かな時限爆弾となるのです。
実態調査の結果
インターネットに接続された公開IPv4アドレスの全域を調査したところ、認証が全く設定されていない非公開コンテナレジストリが8,817個見つかりました。さらに深刻なことに、そのうちの約70%(6,259個)では、改ざんしたイメージを自由にアップロードできる権限が付与されていました。
これらのレジストリへの「プッシュ」権限の有無を確認するため、私たちは様々なHTTPメソッドに対する応答パターンを分析しました。
この調査結果の信頼性は、別の独立研究者による検証でも裏付けられています。その研究者は実際に無害なコンテナイメージをアップロードしてレジストリの状態を確認しており、4,569個の公開レジストリを発見し、そのうち3,719個へのアップロードに成功したと報告しています(この数字は本記事執筆時点のものです)。
検知と予防策
今回実証実験で示したような攻撃は、実環境では長期間にわたって気付かれない恐れがあります。改ざんされたモデルは普段は正常に動作し、特定の条件が揃った時にのみ不正な動作をするよう仕組まれているため、一般的なテストやセキュリティ検査では発見が困難です。
より深刻な問題は、この一連の攻撃プロセスを完全に自動化できることです。無防備なレジストリの探索、イメージの取得、モデルの改ざん、再アップロードまで、すべてを人の手を介さずに実行できるツールの開発が可能です。
AIモデルの脆弱性が攻撃者にどのように悪用されうるかを理解した今、これらのシステムを確実に守る方法を把握することが極めて重要です。以下に、具体的な対策を説明します:
コンテナレジストリのセキュリティ設定
コンテナレジストリの適切な設定は、システムを保護する上で最も基本的かつ重要な対策です。以下に、具体的な設定のポイントをまとめます:
- 開発やテスト環境であっても、レジストリには必ず認証を設定する。
- コンテナイメージ内のファイルにパスワードなどの機密情報を直接書き込まない。
- DockerfileやDocker Compose設定ファイルをイメージ内に含めない。これらのファイルは環境の内部構造を攻撃者に知られる手がかりとなりうる。
- 機密情報は専用の保管システム(vault)で管理し、その参照方法も適切に保護する。
- 機密情報を環境変数として扱う場合は、DockerfileやENVファイルには記載せず、コンテナ起動時に設定する。
- プライベートコンテナレジストリには適切なネットワーク制限を設け、インターネットからのアクセスを遮断する。
- 保存されているコンテナイメージは必ず暗号化する。
- すべての操作を記録する監査ログを必ず有効にする。
モデルの整合性チェックの導入
AIモデルが改ざんされていないことを確実に確認することは、システムの安全性を確保するために不可欠です。以下のような整合性チェックを実施することで、AIモデルを確実に保護できます:
- デジタル署名:AIモデルにデジタル署名を付与し、その正当性を確実に検証できる仕組みを整える。
- チェックサム確認:モデルの現在の状態と初期状態をチェックサムで照合し、不正な改変が加えられていないことを確認する。
- 安全な保管:AIモデルはコンテナイメージとは別に、暗号化された安全な環境で管理し、不正アクセスの可能性を最小限に抑える。
- バージョン管理:AIモデルの変更履歴を厳密に管理し、問題が見つかった際には以前の安全なバージョンに迅速に戻せるようにする。
AIモデルの動作監視
デプロイ後のAIモデルは、改ざんや不具合の兆候を見逃さないよう、継続的な監視が欠かせません。以下に、主な監視方法を説明します:
- 入出力パターンの監視:入力データと出力結果のパターンを常に追跡し、通常とは異なる挙動を検出する。予期された動作から外れる出力が見られる場合、改ざんの可能性を疑う必要がある。
- 性能指標の追跡:精度、処理速度、計算リソースの使用量など、重要な性能指標を監視する。これらの値が想定外に変化した場合、不正な改変が行われた可能性がある。
- 予測の信頼度分析:モデルが出力する予測の信頼度を定期的にチェックする。誤った出力に対して不自然に高い信頼度が示される場合、改ざんの痕跡かもしれない。
- 定期的な検証:信頼できるデータを使ってモデルを定期的に再学習し、現在運用中のモデルと性能を比較する。これにより、問題を早期に発見できる。
- 脆弱性は見過ごされがちだが、決して軽視してはならない:今回のスマートシティ事案は、単純な設定ミスが重大な結果を招きかねないことを如実に示しました。
- 攻撃の対象範囲は広がり続けている:AIシステムは、データの汚染、モデルの窃取、敵対的攻撃、開発過程への侵入など、様々な脅威にさらされています。これらのシステムを守るには、AI開発から運用までの全過程における脆弱性に対処しなければなりません。
- セキュリティと技術革新を両立させる必要がある:AI技術の進化に伴い、セキュリティ対策も進化させなければなりません。技術革新を追求するあまり、安全性が損なわれることがあってはなりません。
- 異分野間の連携が鍵となる:AIシステムを守るには、AIやサイバーセキュリティに加えて、暗号技術、個人情報保護、倫理など、幅広い分野の専門知識が必要です。これらの分野を横断した協力なくしては、有効な解決策は生まれません。
スマートシティ事案から学んだ教訓は、私たちへの警告であると同時に、行動を促す呼びかけでもあります。この事案は、AIセキュリティの重要性と、それを軽視した場合の深刻な結果を示しています。その一方で、私たちの生活を豊かにしながら、プライバシーとセキュリティも確実に守れるAIシステムを構築できる可能性も示唆しています。
AIが主役となる社会へと向かう中で、今日私たちが下す判断が、明日のセキュリティ環境を形作ることになります。リスクを正しく理解し、強固な防御を築き、セキュリティを重視する革新の文化を育てることで、高い性能と信頼性、安全性を兼ね備えたAIシステムを実現できるはずです。
参考記事:
Silent Sabotage: Weaponizing AI Models in Exposed Containers
By Alfredo Oliveira and David Fiser
翻訳:与那城 務(Core Technology Marketing, Trend Micro™ Research)