AIが見逃した穴を、別のAIが突いた——人の手を介さない攻防の初期例

スポンサーリンク

コードに穴が空き、その穴を突かれた——ここまではよくある話です。ただ今回は、穴が空くきっかけにも、それを突いた側にも、AIがいました。データ分析基盤の企業Snowflakeの公開リポジトリで起きたことを、セキュリティ企業のWizが8月17日に公開しています。しかもこれは、Snowflakeが運営するバグ報奨金プログラム(見つけた脆弱性を報告してもらう正規の枠組み)の中での出来事で、実害は出ていません。攻撃と防御の両側にAIが立った、その初期の実例として記録に残る話です。

AIが書き、レビューし、そして攻める

いまのソフトウェア開発では、AIがコードを書く・直す・チェックするのが、ふつうの光景になりつつあります。GitHubには「Copilot」というAIの支援機能があり、変更されたコードを見て「問題ないか」を判定する、レビュー役のような使われ方もします。人間のレビューを補う存在として、多くの現場に入っています。

一方で、AIは守る側だけでなく、攻める側にも入り始めています。今回登場するWizの「red agent(レッドエージェント)」は、自律型の攻撃AIです。人が細かく指示を出さなくても、公開リポジトリを自分でスキャンして弱そうな箇所を探し、実際に突けるかどうかまで試す——そういう道具です。攻撃者になりきって守りの穴を探す「侵入テスト」を、AIが自分で回す、と考えるとイメージしやすいかもしれません。今回の話は、このレビューする側のAIと、攻める側のAIが、同じ一つの穴をめぐって別々に動いた、という構図で起きました。

見逃された穴を、別のAIが突いた

ことの始まりは6月18日。Snowflakeの公開リポジトリのあるコードで、外から来た入力を安全に処理していた書き方が、入力をそのまま文字列に埋め込む書き方に置き換わりました。この結果、外部の人が送り込んだ文字が、そのまま命令として動きうる穴——専門的には「コマンドインジェクション(外から命令を紛れ込ませる)」と呼ばれる弱点——が空いてしまいます。

問題は、この変更を含むコードがマージ(本流に取り込まれること)される際、CopilotがそのPR(変更提案)を共同作成者としてチェックし、「問題なし」と判定していたことです。重大な穴を、AIのレビューがそのまま通してしまった。なお、このコード変更そのものをAIが書いたのかどうかは、Wiz自身も「はっきりしない」としています。確実に言えるのは、AIのチェックがこの穴に気づかなかった、という点です。

そして5日後の6月23日。Wizのred agentが、Snowflakeの公開リポジトリを自動でスキャンする中で、この穴を見つけ出します。ここからが今回いちばん目を引くところです。red agentは穴を突こうと最初の一手を試みますが、技術的な理由でうまくいかず、エラーが返ってきました。ふつうならここで処理が止まります。ところがこのAIは止まらず、返ってきたエラーの内容を自分で分析し、やり方を変えて二度目を試み、今度は成功させました。人が横についてデバッグしたわけではなく、AIが自分で立て直したのです。

成功したred agentは、Snowflakeが社内で使っているJira(課題管理ツール)のログインに使う鍵(認証情報)を抜き出しました。この鍵で見えたのは、Snowflakeの技術・セキュリティ・バグ報奨金に関するプロジェクトです。つまり——コードに穴が空くきっかけを見逃したのもAI、その穴を自分で見つけて突いたのもAIで、その一連の間に、人間はほとんど関わっていませんでした。

同じ日のうちに塞がれた穴

ここで大事なのは、Snowflakeの動きの速さです。Wizが報告したのは6月23日。Snowflakeはその当日のうちにコードを修正し、以前の安全な書き方に戻しました。翌6月24日には、抜き出された鍵を無効化して新しいものに差し替えています。さらに、監査ログ(誰がいつアクセスしたかの記録)を精査し、穴が空いていた5日間に外部からアクセスしたのはWizだけで、それ以外の第三者による不正アクセスは無かったことを確認しました。Wiz側も、テスト中に触れたデータはすべて削除したと述べています。

Snowflakeの担当者は取材に対し、報告はただちに調査・修正され、不正アクセスの痕跡は見つからなかったとコメントしています。今回の一件は悪意ある攻撃ではなく、正規のバグ報奨金プログラムの中で行われた検証だった、という点は押さえておきたいところです。「大きな問題が放置されている」という話ではありません。

人のレビューだけでは追いつかない、という指摘

この出来事からWizが引き出している教訓は、「Copilotが危ない」でも「AIにコードを書かせるな」でもありません。芯はもっと手前にあります。AIが出したコードを、人が十分に検証しないまま流してしまうことの危うさ、です。

AIのコード生成は、確率的なパターン予測でコードを組み立てます。そのため、過去に危険だと分かって避けられていた古い書き方を、理由を知らないまま「もっともらしい」として復活させてしまうことがあります。今回まさに、以前わざわざ安全な形に直しておいた処理が、その背景を引き継がないまま元に戻されていました。だからWizは、AIが書いたコードにも、人が書いたコードと同じ厳しさの検査を通すべきだ、と指摘しています。

もう一つ、見過ごせないのが時間の話です。穴が空いていたのは、わずか5日間。それでも自動化された攻撃側のAIは、その短い窓の中でしっかり見つけて突いてきました。攻める側が自律的なAIになると、脆弱性が発見されるまでの時間はこれまでより大きく縮みます。修正のサイクルを速く回すこと、そして万一漏れても被害が広がりにくいよう、鍵の有効期間を短くしておくこと——そうした備えが、これまで以上に効いてくる、という現実が見えてきます。

攻撃も防御もAIが担い始めた開発現場で、その両側から同時に起きた事故。今回はバグ報奨金の枠内で、被害の出ないうちに塞がれました。ただ、AIが書き、AIがレビューし、AIが攻める——この流れ自体は、もう戻らないところまで来ています。

出典

Wiz「Wiz Red Agent Finds Its Way Into Snowflake’s Internal Jira Through a Flaw in a GitHub Copilot–Assisted PR」(2026年8月17日)

The Register「An AI broke Snowflake’s code. Then another AI agent exploited it」(Jessica Lyons、2026年8月17日)

コメント

タイトルとURLをコピーしました