
- WizのAIエージェントがSnowflakeのGitHub Actionsに脆弱性を発見
- GitHub Advanced Securityのスキャンは脆弱性を検出できず
- Snowflakeは同日中に修正し、Jiraトークンを失効させた
何が起きたのか
Wiz Researchは2026年8月17日、Snowflakeの公開リポジトリ「snowflakedb/snowflake-connector-net」に存在したGitHub Actionsワークフローの脆弱性を公開した。この脆弱性を発見したのは、Wizが開発した自律型AIセキュリティエージェント「Red Agent」である。Red Agentは、GitHubのIssueを開くだけで任意のコマンドを実行できるスクリプトインジェクションを悪用し、SnowflakeのJira認証情報を奪取することに成功した。
脆弱性が実際に悪用可能な状態になったのは2026年6月18日で、PR #1218がマージされた時点だとされる。6月23日にWizがHackerOneを通じて報告し、Snowflakeは同日中に修正した。さらに、Jiraトークンは6月24日に失効され、監査ログの検証によりWiz以外の第三者がアクセスした形跡はないと確認されている。
脆弱性の仕組み
問題の脆弱性は、jira_issue.ymlというワークフローにあった。GitHubのIssueタイトルをシェルスクリプトに直接展開するコードが含まれており、タイトルにシングルクォートなどが含まれると、任意のコマンドを実行できる。修正前は環境変数とjqの--argを使う安全なパターンだったが、PR #1218で直接展開する方式に置き換えられた。
さらに、このワークフローにはif条件があり、一見保護されているように見えた。しかし、この条件はGitHubのIssueイベントでは常に真と評価されるため、全てのユーザーが通過できた。GitHub Advanced Securityのスキャンも、この脆弱性を検出できなかった。
AI攻撃とAI防御
今回の事例では、AIが攻撃側と防御側の両方に関与している点が注目される。Red Agentは最初の攻撃でシェルエラーに直面した際、自律的にエラーを解析してペイロードを修正し、認証情報の奪取に成功した。一方、PR #1218にはGitHub Copilot Autofixが関与しており、マージ前にコードをチェックして「問題なし」と判断していた可能性が指摘されている。
ただし、Wizは後にブログを更新し、Copilot Autofixの貢献は別のファイルの修正であり、脆弱性を含むコード変更がAI支援によるものかは不明だと説明している。つまり、AIが直接脆弱性を入れたと断言できるわけではない。それでも、AIコーディングツールが確率的なパターンに基づいてコードを生成するため、非推奨の安全でないパターンを意図せず再導入するリスクがあるとWizは警告している。
対応と残る課題
Snowflakeは報告を受けた当日にワークフローを修正し、安全な環境変数とjqを使うパターンに戻した。Jiraトークンも失効させ、実証実験のためにWizがアクセスしたデータは削除されたとしている。Snowflakeは、外部からの不正アクセスはなかったと声明で述べている。
しかし、この事例が示す課題は大きい。AIコーディングツールが生成したコードが既存のセキュリティ対策をすり抜ける可能性があり、さらにAIセキュリティエージェントがそれを数日で発見するため、セキュリティ運用はより短いサイクルでの対応を求められる。特に、CI/CDパイプラインの安全なパターンを明示的に強制しない限り、似たような問題が再発する恐れがある。
| 項目 | 修正前(脆弱) | 修正後(安全) |
|---|---|---|
| 入力の扱い | GitHubの式を直接シェルに展開 | 環境変数に格納し、jqの--argで受け渡し |
| エスケープの仕組み | sedによる置換(不十分) | jqによるJSONエスケープ |
| セキュリティ上のリスク | 任意のコマンド実行が可能 | インジェクションの余地なし |
AI coding tools predict code based on probabilistic patterns, which can inadvertently reintroduce deprecated or insecure shell patterns.
AIコーディングツールは確率的なパターンに基づいてコードを予測するため、意図せず非推奨または安全でないシェルパターンを再導入しうる。
今後の見通し
今後は、AIコーディングツールが生成したコードをレビューする体制や、CI/CDワークフローに対するセキュリティ検証の強化が焦点になるとみられる。また、GitHub Advanced Securityなど既存のスキャンが今回の脆弱性を見逃した点を踏まえ、検出ルールの改善やAIセキュリティエージェントの活用が広がる可能性がある。さらに、他の企業でも同様の事例が報告されるかどうか、および認証情報の短命化がどの程度進むかが、次の判断材料になるだろう。
日本の開発者・IT企業にとっての意味
日本のIT企業にとって、GitHub Actionsは標準的なCI/CD基盤であり、今回のようなスクリプトインジェクションは他人事ではない。IssueやPRのタイトルなど外部入力がそのままシェルで使われるケースは少なくないため、コードレビューでの確認が欠かせない。AIコーディング支援ツールの導入が進む一方で、AIが生成したコードが従来の安全対策を後退させる可能性もあり、既存の静的解析に加え、実際の実行環境でセキュリティを検証する仕組みが求められる。また、この事例は、AIを使ったセキュリティテストの有効性も示しており、日本のセキュリティチームも同様のツールを評価する余地がある。
気になる点
- この脆弱性は実際に悪用されたのか?
- Wizの調査では、脆弱性が存在した2026年6月18日から6月23日までの間、Snowflakeの監査ログでWiz以外のアクセスは確認されなかった。Snowflakeも不正アクセスの証拠はないと発表しており、実害はなかったとみられる。
- GitHub Copilot Autofixが脆弱性の原因なのか?
- Wizの当初の説明では、Copilot AutofixがPRをチェックし「問題なし」と判断していたとされる。ただし、後にブログが更新され、脆弱性を含むコード変更がAI支援によるものかは不明とされている。現時点では判断できない。
- 同様の脆弱性を防ぐにはどうすればよいか?
- 外部からの入力をシェルに直接展開せず、環境変数とjqなどの安全なパーサーを経由するのが基本だ。また、GitHub Advanced Securityなどのスキャンだけに頼らず、AIを使ったセキュリティテストを導入するのも選択肢になる。
用語解説
- GitHub Actions
- GitHubが提供するCI/CDサービス。リポジトリへのプッシュやIssue作成などのイベントをトリガーに、ビルドやテストを自動実行できる。
- スクリプトインジェクション
- 外部からの入力をシェルスクリプトに直接展開することで、攻撃者が任意のコマンドを実行できる脆弱性。
- CI/CD
- コードの変更を自動でビルド・テスト・デプロイする仕組み。継続的インテグレーションと継続的デリバリーの略。
- GitHub Advanced Security
- GitHubが提供するセキュリティ機能のセット。コードスキャンやシークレットスキャンなどを含む。
- jq
- JSONデータを処理するコマンドラインツール。--argを使うと安全に値を渡せる。
- Red Agent
- Wiz Researchが開発した自律型AIセキュリティエージェント。CI/CDの脆弱性を自動で発見・実証する。
出典
AI-Generated GitHub Copilot “Autofix” Allowed Compromise of Snowflake's Jira
AI導入も顧問も、お任せください
何から手をつけるか、どこまでAIに任せるか。自社の業務に合わせて整理し、導入から運用まで伴走します。相談だけでも構いません。
AI導入について相談する