Noma Labsにより、GitHubが新たに導入したAgentic Workflowsに「GitLost」と呼ばれる重大な脆弱性が発見されました。この脆弱性を悪用すると、認証を受けていない攻撃者でもプライベートリポジトリから機密データを窃取できてしまいます。
この事例は、開発パイプライン内でAI駆動の自動化が操作され、従来のアクセス制御を回避してリポジトリの境界を越えて機密情報が漏洩する可能性があることを示しています。
GitLostの脆弱性
GitHub Agentic Workflowsは、GitHub ActionsとClaudeやGitHub Copilotのようなモデルを搭載したAIエージェントを組み合わせたものです。この仕組みにより、自然言語をMarkdownで記述してワークフローを作成できます。これらのAIエージェントは、Issueの読み取り、タスクの実行、リポジトリとのやり取り、そして自動応答の投稿まで行うことができます。
この設計は開発者の生産性向上を狙ったものですが、その一方で信頼できない入力がエージェントの動作を操作できるという新たな攻撃対象領域を生み出しています。
Noma Labsの調査によると、GitLost脆弱性の根本原因は、典型的な間接プロンプトインジェクションのシナリオにあります。GitHubのエージェントは、システムレベルの指示とユーザーが制御できる入力との間に厳密な信頼境界を設けていないのです。
攻撃者はこの欠陥を突き、GitHub Issueの本文に悪意のある指示を埋め込むことでこれを悪用できます。エージェントがそのIssueを処理する際、これらの隠された指示が本来のワークフローロジックを上書きし、権限のない操作を引き起こす可能性があります。
研究者らが発見した脆弱性は、Issueの割り当てイベントによってトリガーされるワークフローに関わるものでした。このエージェントはIssueの内容を読み取り、「add-comment」などのツールを利用し、同一組織内のパブリックリポジトリとプライベートリポジトリの両方に対する読み取りアクセス権限を持つよう設定されていました。この構成は危険であることが判明しています。外部の攻撃者が認証なしに、間接的に機密性の高い内部データを問い合わせることができてしまうためです。
この攻撃の手順は非常に単純で、高度な技術的専門知識を必要としません。攻撃者は、標的となる組織のパブリックリポジトリに一見正当に見えるIssueを作成します。そのIssueが手動またはオートメーションによって割り当てられると、ワークフローが起動します。
その後エージェントはIssueの内容を処理し、注入された指示を実行してアクセス可能なリポジトリからデータを取得し、抽出した情報を公開コメントとして投稿します。Nomaの概念実証(PoC)では、この中にREADME.mdなどプライベートリポジトリのファイルの内容が含まれており、内部プロジェクトのデータが事実上外部に露出する結果となりました。
研究者らはまた、巧妙なプロンプトの言い回しによってガードレールを回避する手法も確認しています。「Additionally(さらに)」といったキーワードを挿入することで、モデルの安全機構を回避でき、モデルが悪意ある指示を拒否せず従ってしまう状態を引き起こせました。これは、敵対的な入力にさらされた際の、現行のAIアライメントおよびフィルタリング手法の脆弱性を示しています。
GitLostの脆弱性は、エージェント型AIシステムに存在するより広範な構造的リスクを浮き彫りにしています。決定論的なロジックによって信頼境界を強制する従来のソフトウェアとは異なり、AIエージェントは指示の確率的な解釈に依存しています。
そのため、AIエージェントは巧妙に作り込まれた入力による操作に対して本質的に脆弱です。組織によるAI駆動の自動化の採用が進むにつれ、プロンプトインジェクションは、Webアプリケーションにおけるsqlインジェクションに匹敵する脆弱性のカテゴリとして台頭しつつあります。
Noma Labsは、信頼できる指示とユーザー入力との厳密な分離の徹底、エージェントの権限の最小化、公開出力の制限、そして堅牢な入力のサニタイズの実装を推奨しています。
GitHubには責任ある開示を通じて既に通知が行われており、今回の調査結果は、AIを統合した開発ワークフローにおいて安全な設計パターンを導入することの緊急性を改めて浮き彫りにしています。
Interact with Cyber Threats in Windows, Linux, macOS VMs to Trigger Full Attack Chain - Analyse Malware & Phishing with ANY RUN
翻訳元: https://gbhackers.com/critical-github-agentic-workflows-prompt-injection-flaw/