WizのRed Agent AIがCopilot Autofixによって導入されたSnowflakeの脆弱性を発見、GitHubはAIの関与を否定

2026年6月18日、Snowflakeの snowflakedb/snowflake-connector-net リポジトリにおいて、あるPRのマージによりスクリプトインジェクションのリスクを持つGitHub Actionsワークフローが本番環境に導入された。PR #1218はjira_issue.ymlファイルを変更し、issueのタイトルをshellコマンドのecho文に直接埋め込む構造にした。sedによるエスケープ処理がGitHubテンプレートの展開後に行われるため、任意のユーザーがシングルクォートを含むissueタイトルを投稿するだけで、クォートの制限を突破して任意コマンドを実行できる状態となっていた。

脆弱性の発生メカニズム

従来の安全な実装では、issueタイトルを環境変数に格納してからjqでJSONを構築していた。変更後はテンプレート補間を直接使用する形になったため、攻撃者はpayloadを組み立ててrunner上でコマンドを実行できる状態となった。WizのRed Agentは6月23日にHackerOneプログラムを通じてこの問題をスキャンにより発見し、Jiraトークンの抽出に成功して、エンジニアリングおよびコンプライアンス関連プロジェクトへのアクセスを確認した。Snowflakeはその日のうちに修正を完了し認証情報をローテーションした。監査ログによれば、露出期間中にアクセスしたのはWizのみであった。

GitHub Advanced Securityは最終的なPRバージョンをスキャンしたが、当該インジェクションリスクをフラグとして検出しなかった。

AIツールチェーンにおける検証の断絶

Copilot AutofixはそのPRにおいて共同作成者として記録されており、jira_close.ymlの変更をレビューしていたが、jira_issue.ymlのインジェクションパターンは識別しなかった。GitHubはその後の内部調査において、脆弱性を導入したコード変更は人間が行ったものであり、Copilotによるレビューも貢献もなかったと述べた。この主張は、Wizのレポートに記載された「Copilot Autofixが共同署名」という説明と齟齬をきたしている。

本インシデントの核心は、既存のセキュリティスキャンツールがAI支援によって生成されたコードに対して十分な検査を行えていない点にある。テンプレート補間とshellエスケープの順序の問題は古典的なインジェクションパターンであるにもかかわらず、自動ツールには検出されなかった。一方、Red Agentは脆弱性が本番公開された後、構文エラーの分析から有効なpayloadの調整までの全プロセスを迅速に完了した。

業界レベルへの波及的影響

AIコーディングツールはすでに実際の開発フローに組み込まれており、Copilot Autofixはスキャンで検出された問題を自動修正することを目的としている。しかし、その修正自体が新たな脆弱性を導入し、後続のスキャンでも検出されない場合、信頼の連鎖に断絶が生じる。開発者はAIの提案が検証済みであると暗黙に仮定しがちだが、実際には人間による二次レビューに依存している。

  • CI/CDパイプラインは高価値の攻撃対象領域となっており、任意のユーザーが公開issueを通じてコード実行を引き起こせる状態にある。
  • 自律型セキュリティエージェントは、従来の人手によるプロセスよりはるかに速く、数日以内に発見から悪用までを完了できる。
  • GitHubとサードパーティのAIセキュリティツールが同一のコード変更に対して異なる判断を下しており、評価基準の不一致が露呈している。

類似事例が示すように、AIが生成したコードの実行経路については、人間が記述したコードと同等またはそれ以上の基準でセキュリティレビューを実施すべきである。現在のツールチェーンは、テンプレート補間・環境変数・コマンド構築の組み合わせを処理する際に盲点を抱えている。

今後の見通し

この脆弱性の導入と発見のプロセスは、AI支援開発における実質的なセキュリティの境界が、スキャンツールによる新たなコードパターンへのカバレッジに依存していることを示している。GitHubはAIの具体的な関与を否定しているが、ワークフローが変更されて本番環境に展開されたという事実は変わらない。今後は、既存の静的解析ルールのみに依存するのではなく、AIが生成したコード断片に対して独立した検証プロセスを確立することが求められる。