悪意Skill、Genieの4対策回避し情報窃取

AIセキュリティ企業PromptArmorが、Databricks Genie Codeを狙った攻撃チェーンを公開した。悪意のあるコードを仕込んだSkillを使えば、ユーザーに気づかれることなくテナント内のデータを攻撃者のサーバーに送信し、同時にチャット画面にフィッシングのログイン画面を表示させることができる。PromptArmorが挙げた4種類の公式セキュリティ対策は、このチェーンのどの段階でも機能しなかった。

Genie CodeはDatabricksに組み込まれたエージェント型アシスタントで、ユーザーが自然言語でテーブル照会や分析実行、グラフ作成を指示すると、結果はそのままWebのチャット画面に表示される。Skillはエージェントにアップロードできる機能パッケージで、説明文に加えて実行可能なコードを含めることもできる。

攻撃の流れ

PromptArmorが示したデモはわずか4段階だ。ユーザーが一見普通に見えるデータ分析用Skillをアップロードし、Genieにあるデータセットの分析を指示する。Genieはそのコードを実行するが、安全性を監視するガードレール・エージェントは悪意のある機能を検知できない。続いてGenieはユーザーに「完全な分析結果を開く」よう促し、結果が表示された瞬間にフィッシング画面が現れ、同時にデータが送信される。

データを外部に送る手口自体は単純だ。Skillのコードはまず被害者のテナント内の機密データを読み取り、チャットに表示されるHTMLの中に埋め込む。そのHTML内のJavaScriptがユーザーのブラウザ上でネットワークリクエストを発行し、攻撃者のサーバーにデータを送る。フィッシング画面も同じHTMLから生成され、Genieの画面に重ねて表示されることで、ユーザーにIDとパスワードの入力を誘導する。この一連の流れに人間による承認は一度も挟まらない。

4つの対策がすべて効かなかった理由

  • 組織レベルのSkillガバナンス:Genieは組織が一元管理するカタログだけでなく、ユーザー個人のワークスペースからもSkillを読み込む。そのためユーザーが自分でアップロードしたSkillには管理者の統制が及ばない。
  • ガードレール・エージェント:Databricks自身がこれを「ベストエフォートの効率化機能」と位置付けており、セキュリティ境界として機能することは保証していない。
  • コード実行環境の出口制御:制限しているのはコード実行環境からのアウトバウンド通信であり、データはユーザーのブラウザから送信されるため、この層ではデータの流出を検知できない。
  • チャット表示のサンドボックス:Skillは既に取得済みのデータを使って表示内容を組み立てるだけなので、表示の段階でテナントデータを再確認する仕組みがない。

4つの対策はそれぞれ理にかなっているが、組み合わせると一本の抜け道が残る。PromptArmorは8月16日にDatabricksへ問題を報告し、約1カ月の調整を経て、9月16日に公開の方針を通知した。

Databricksの回答は明確だった。

"it is ultimately the user's responsibility to ensure that uploaded skills do not contain malicious content"

(アップロードされたSkillに悪意のあるコードが含まれていないことを保証するのは、最終的にはユーザーの責任である。)

確認を省略できる自動承認機能についても、Databricksは「セキュリティ境界として設計したものではない」としており、公式ドキュメントでも本番環境での利用は推奨していない。

同じ種類の隙は他社にも

PromptArmorが過去1年に公開してきた報告を並べると、攻撃対象領域は毎回驚くほど似ている。同社はこれまでにClaude Coworkからのファイル流出、Google Antigravityからのデータ流出も指摘しており、やり方は共通して「エージェントに機密情報を読ませ、表示・リンク・ネットワーク通信を使って外に持ち出す」というものだ。異なるのは侵入口で、これまでは主にプロンプトインジェクションだったのに対し、今回は「インストールするだけでコードが実行される」Skillというプラグイン形式に変わった。

企業にとって、Skillは注入テキストよりも防ぎにくい。注入テキストは少なくともWebページや文書のどこかに隠れ、エージェントに読まれるのを待つ必要があるが、Skillはユーザー自身が進んでインストールするものであり、最初から信頼されている。学術界でも今年この問題が盛んに議論されており、arXivには悪意のあるSkillを評価する専用ベンチマークが既に登場し、検知ツールの見逃し率は総じて低くない。

中国国内でもデータプラットフォームにエージェントを組み込み、プラグイン市場を開放する動きが相次いでいるが、今回の事件は具体的なチェックリストを示している。Skillを管理者が審査済みのカタログからしか読み込めないようにしているか、エージェントが出力するHTMLがスクリプトを実行したり外部ドメインにリクエストを送ったりできないか、本番環境で自動承認がデフォルトで無効になっているか。この3点のうち一つでも押さえられていなければ、PromptArmorが示した攻撃チェーンは再現し得る。

PromptArmorの提言も同じ点に集約される。本番データを扱う場では自動承認を有効にしないこと、Skillマーケットプレイスに不正なパッケージが紛れ込んでいないか注意すること。Databricksが製品レベルで出口フィルタリングを追加するかどうかは、現時点で公表されていない。

参考資料:PromptArmorのセキュリティ調査レポート、Databricks Genie Codeの製品ドキュメント、CocoLoop、悪意のあるSkillに関するarXiv論文;公開までの経緯とDatabricksの回答原文はPromptArmorのレポートに基づく。