
2026/08/17 23:18
生成 AI を使用した GitHub Copilot の「自動修正」機能で、Snowflake の Jira が侵害された件
RSS: https://news.ycombinator.com/rss
要約▶
日本語翻訳:
ルール
- 元の意味を正確に保ってください(追加・省略なし)。
- 文書構造(見出し、箇条書きなど)を維持してください。
- 技術用語は正確に保ってください(API、LLM、zero-trust は自然な日本語がある場合を除いてそのまま使用)。
- トーンと確信度を維持してください。
- まとめ、説明、改変を行わないでください — 翻訳のみを実行してください。
出力形式
日本語翻訳:
(ここに日本語翻訳を記述します)
翻訳対象のテキスト:
改善は不要です — このサマリーは、推論や曖昧さを加えずにすべての主要点を正確かつ明確に反映しています。
本文
スノーフレイクの GitHub Actions ワークフローにおける AI 生成による重大なスクリプト注入脆弱性情報
Wiz Research の自律型 AI セキュリティ研究ツール「レッドエージェント」が、スノーフレイク運営のハッカーワン(HackerOne)プログラムを通じて重大な脆弱性を特定しました。
概要
- 対象: スノーフレイク社の GitHub レポジトリ
snowflakedb/snowflake-connector-net - 脆弱性タイプ: GitHub Actions ワークフロー上のスクリプト注入(Script Injection)
- 発覚経緯: Wiz の自律型 AI エージェント「レッドエージェント」による自動スキャンと検証。
- 影響: 認証不要のユーザーが、特別デザインの GitHub Issue を作成することで、ランナー上で任意のコマンドを実行可能に。
重要タイムラインと状況
脆弱性のライフサイクル
- 2026 年 6 月 18 日: 脆弱なコード変更がコミットされ、PR がマージ(「Copilot Autofix powered by AI」による共同作成)。脆弱性がライブ化。
- 2026 年 6 月 23 日: Wiz は脆弱性を特定・悪用し、HackerOne 経由で報告。スノーフレイクが即座に是正および認証情報ローテーションを実施。
- 曝露期間: 発見されるわずか5 日間。
コード変更の経緯(AI の関与)
- 元の安全なパターン:
- Issue タイトルは
変数を介して入力され、env:
を用いて JSON ペイロードを構築する構造。jq - シェル注入を防ぐためのガードレールが実装されていた。
- Issue タイトルは
- AI オートフィックスによる変化:
- AI ツール(Copilot)が「安全」と判断し、安全なパターンを取り除き、直接的な文字列展開
に変更。${{ github.event.issue.title }} - これにより、Issue タイトル内の特殊文字(単一引用符
など)をエスケープできず、スクリプト注入が発生するに至った。'
- AI ツール(Copilot)が「安全」と判断し、安全なパターンを取り除き、直接的な文字列展開
- セキュリティレビューの失敗: GitHub の AI 支援型セキュリティレビューもこの重大な脆弱性を検知しなかった。
アップデート情報(2026 年 8 月 17 日)
- 記事修正により、「Copilot」がマージされた PR とコード変更の共同著者であることを明確化。
- 「安全」と判断した理由を追記。
- 今回のコード変更が AI による支援を受けたかどうかについては、現時点で完全な詳細は不明瞭となっているが、コミットクレジットから推測される可能性が高い。
曝露プロセスの詳細(Walkthrough)
Wiz のレッドエージェントが発見した攻撃の仕組みです。
1. 発見
- Wiz のレッドエージェントによる CI/CD 機能でスノーフレイクの GitHub オルガニゼーション全体がスキャンされた。
ワークフローが、未信頼な入力の使用によりスクリプト注入に脆弱であると特定。jira_issue.yml
2. 攻撃トリガー
- 条件: 「Issue の作成(opened)」イベントをトリガーとしているため、誰でも Issue を作成すれば発動する。
- コード欠陥: 問題の
エスケッピング処理は、GitHub のテンプレート展開後に実行される構造になっていた。sed
3. 悪用手法
- PoC(概念実証)テスト:
- Issue タイトルを精心设计し、脱出したコマンドを実行。
- 帯外(Out-of-Band)コールバック: Jira の認証情報を流出させるよう設計。
- 自動化エージェントの適応力:
- 初期試行で標準的なコメント文字(
)を使用した際、ランナーがバッシュ構文エラーを返した(閉じ括弧#
が消費されたため)。) - レッドエージェントは自律的にエラーを分析し、
を用いてシェルブロックを適切に閉じるようにペイロードを調整。; echo ' - その結果、帯外コールバックの受領に成功。
- 初期試行で標準的なコメント文字(
4. 流出した情報の範囲
- 流出元: GitHub Actions ランナー(Azure IP:
)。20.106.182.197 - 流出トークン:
。qa@snowflake.net - アクセス権限:
- ドメイン:
snowflakecomputing.atlassian.net - 権限: 読取のみ(Read-only)。
- 対象プロジェクト: エンジニアリング、セキュリティコンプライアンス、バグ Bounty 追跡プロジェクトなど。
- ドメイン:
是正およびフォレンジック対応
スノーフレイクの即応対応(Same-Day Patching)
- 2026 年 6 月 23 日中に実施:
- ワークフローの是正(コミット
、PR #1402)。1dc7766 - 安全な
変数およびenv:
パースパターンを完全に復元。jq --arg
- ワークフローの是正(コミット
- 認証情報管理:
- 問題の JIRA トークンの取り消し。
- 新規トークンへのローテーション(再発行)。
フォレンジック検証結果
- 包括的な監査ログ分析を実施。
- 結論: 5 日間の曝露期間中、外部の第三者がエンドポイントをアクセスした痕跡は確認されていない。
- すべての異常なクエリは、厳密に Wiz のテスト用 IP アドレスと一致していた。
主な教訓と課題
1. AI コード生成への監視必要性
- AI ツールは確率的なパターンに基づいてコードを予測するため、意図せずして廃止されていた不安全なシェルパターンの再導入を引き起こす可能性がある。
- AI が生成する PR も、人間が書いたコードと同じレベルの静的解析およびセキュリティスクリーニングを受ける必要がある。
2. 発見ウィンドウの縮小(Short-lived Exposure)
- この脆弱性は自動化されたエージェントが発見・検証したわずか5 日後に修正された。
- セキュリティ運用は、自動化発見が数時間以内に発生する環境に適応し、迅速なパッチサイクルおよび短命の認証情報の管理が求められる。
3. AI セキュリティの退歩(Regression)防止
- 自動化された AI アシスタントは、コードパターン選択の履歴的・文脈的根拠を持たないことが多い。
- 今回のケースでは、AI が「安全な
+env:
パターン」を「直接的な文字列埋め込み」に置換してしまい、脆弱性を生んだ。jq - セキュリティチームは、**構造化データパーサーを直接の文字列埋め込みで置換する行為を防ぐための「ガードレール」**を実装する必要がある。
開示とスノーフレイクのコメント
責任ある開示のタイムライン
- 2026 年 6 月 18 日: 脆弱性ライブ化(PR マージ)。
- 2026 年 6 月 23 日: Wiz が報告(HackerOne レポート #3819931)、Slack 通知送信、即座に是正開始。
- 2026 年 6 月 24 日: Jira トークンのローテーション完了。
- 2026 年 7 月 25 日: 公開開示の期限(解決日より 30 日後)。
スノーフレイクの公式見解
「HackerOne の脆弱性情報公開およびバグ bounty プログラムを通じて Wiz が発見した事項について、責任ある報告ならびに協力に対して感謝申し上げます。」
「2026 年 6 月 23 日に受け取られたこの開示は、即座に調査および是正され、調査の結果、未許諾でのアクセスに関する証拠は一切見つかっていません。システムの保護は常に最優先事項であり、引き続きソフトウェア開発およびセキュリティの実践を強化することに固く取り組んでおります。我々は Wiz と連携し、これらの教訓を広範な業界に共有し、セキュリティベストプラクティスの普及促進を図るために活動しております。」