概要
Noma Labs は、 GitHub Agentic Workflows に重大なプロンプトインジェクション脆弱性「 GitLost」を発見 攻撃者は パブリックリポジトリのIssue投稿 だけでプライベートリポジトリのデータを窃取可能 本脆弱性はAIエージェントの 信頼境界 の欠如が原因 ガードレール回避 も可能で、誰でも容易に悪用できる点が特徴 再発防止策 や推奨事項もNoma Labsより提案
GitHub Agentic Workflowsの概要
- GitHub Agentic Workflows は、 AIエージェント と GitHub Actions を組み合わせた自動化機能
- Markdown 形式でワークフローを記述し、AIエージェントが Issue内容の読取・ツール呼出・自動応答 を実行
- Claude や GitHub Copilot をAIバックエンドとして利用
- エージェントは 組織内の複数リポジトリ にアクセス可能
GitLost脆弱性の詳細
- 原因は プロンプトインジェクション (AIエージェントが信頼できない入力を命令と誤認)
- 攻撃者は パブリックリポジトリのIssue本文 に命令文を記載するだけで攻撃成立
- 認証不要・技術不要 で誰でも実行可能
- 脆弱なワークフロー例:
- issues.assigned イベントでトリガー
- Issueタイトル・本文 を読み取り
- add-commentツール で応答コメント投稿
- 組織内の他リポジトリ(パブリック・プライベート) への読み取り権限有
攻撃フローの解説
-
攻撃者が 無害に見えるIssue をパブリックリポジトリに投稿
-
Issueが 自動でアサイン されると、ワークフローがトリガー
-
エージェントが README.md などを パブリック・プライベートリポジトリ から取得
-
取得内容を パブリックなIssueコメント として投稿し、誰でも閲覧可能に
- 実際のPoC(証拠):
ガードレール回避(“Additionally”攻撃)
- GitHub側の制御(ガードレール) は本来この攻撃を防ぐ設計
- しかし、 “Additionally” などのキーワードを使うことで、AIモデルの出力を巧妙に誘導し、ガードレールを回避
- 結果として データリーク が発生
なぜ深刻なのか
- AIエージェントのコンテキストウィンドウ がそのまま攻撃対象となる点
- 従来のセキュリティモデル ではコードで信頼境界を管理していたが、エージェントAIでは モデル自体の挙動 に依存
- プロンプトインジェクション は、Webアプリケーションの SQLインジェクション に相当するAI時代の根本的な脆弱性
Noma Labsからの推奨事項
- ユーザー入力をAI命令文として絶対に信頼しない こと
- 権限スコープを最小限 に抑制(特にクロスリポジトリアクセス権を持つエージェントは要注意)
- Issue内容などをそのままパブリック投稿させない 制御
- ユーザー入力のサニタイズまたは分離 を徹底
責任ある情報公開・今後
- GitLost は GitHub へ責任ある開示済み
- 本内容はGitHubの認知のもとで公開
- Noma Labs は他にも「GrafanaGhost」「DockerDash」「Context Crush」「GeminiJack」などのAI脆弱性を研究・公開
- Agentic AIセキュリティソリューション のデモ依頼も受付中