GitHub Agentic Workflowsに存在する重大なプロンプトインジェクションの脆弱性により、攻撃者はAIによる自動化処理を騙して、組織の非公開コードリポジトリからデータを漏洩させることが可能です。しかも、アカウントを侵害したり、ソフトウェアの脆弱性を悪用したりする必要は一切ありません。
この脆弱性を発見したNoma Securityの研究者らは、これを「GitLost」と名付けました。火曜日に公開された報告書によると、認証を経ていない攻撃者でも、組織が所有する公開リポジトリ内にGitHub Issueを作成するだけで、その組織の非公開リポジトリからも密かにデータを引き出せるとのことです。
GitHub Agentic Workflowsは、リポジトリのイベントに応じてタスクを実行する同プラットフォームの自動化システムであるGitHub Actionsと、ClaudeまたはGitHub Copilotを基盤とするAIエージェントを組み合わせ、開発チームのGitHubワークフロー管理を支援するツールです。このツールを使えば、チームは自然言語でコードリポジトリとのやり取りを自動化でき、GitHubエージェントはIssueの読み取り、ツールの呼び出し、さらには組織内の他のリポジトリへのアクセスまで行えます。
Nomaのセキュリティ研究リード、Sasi Levi氏は報告書の中で次のように記しています。「GitLostは、あらゆる組織がエージェント型AIシステムで直面する根本的なセキュリティ課題の一つを見事に示しています。エージェントのコンテキストウィンドウは、そのまま攻撃対象領域にもなり得るのです。エージェントが読み込む内容――Issue、プルリクエスト、コメント、ファイルなど何であれ――は、エージェントがそれを指示として扱ってしまえば武器化される恐れがあります」
この状況は、エージェント型AIシステムにおいて今や一般的な攻撃手法となっている、いわゆるプロンプトインジェクションへの道を開きました。これこそが、Nomaが概念実証(PoC)エクスプロイトによって発見・悪用した脆弱性の本質です。
GitLostの脆弱性を悪用する手口
脆弱性のあるGitHub Agentic Workflowは、以下のように設定されていました。GitHub上の「issues.assigned」イベントでワークフローをトリガーし、Issueのタイトルと本文を読み取り、add-commentツールを使ってコメントを投稿し、組織内の他のリポジトリ(公開・非公開を問わず)への読み取りアクセス権を持って実行する、というものです。Nomaが開発し、このワークフローを悪用したPoCでは、ある組織の従業員が行った会議に関する非公開データが露呈する結果となりました。
報告書によると、このPoCは、脅威アクターがGitHub Issueを作成し、そのIssue本文に平易な英語でコマンドを隠しておくことで、GitHubのエージェントにそれを実行させられることを示しています。攻撃者はこの脆弱性を悪用するのに、コーディングスキルもアクセス権も認証情報も一切必要ありません。GitHubのAgentic Workflow設定を利用している組織が所有する公開リポジトリにIssueを立てて、あとは待つだけです。
Levi氏は次のように記しています。「ほとんどのエージェント型プロンプトインジェクション攻撃では、エージェントが誤った内容を信頼できる指示元として扱ってしまい、自ら誤誘導や悪用を許してしまいます。これは、システムレベルの指示と信頼できないユーザーデータとの間に、厳格な信頼境界を維持できていないために起こります」
実際、この脆弱性は、脅威アクターが「コンテンツの中に平易な英語のコマンドを隠すだけで、高い権限を持つAIを騙して自らのガードレールを回避させ、密かに非公開の知的財産を渡させることができる」ことを示していると、証明書ライフサイクル管理プロバイダーSectigoのシニアフェロー、Jason Soroko氏はDark Reading の取材に語っています。
Nomaはこの脆弱性をGitHubに責任ある形で開示したとしています。GitHubは、この脆弱性が対処済みかどうかについてのDark Readingの取材依頼にすぐには応じませんでした。Nomaによれば、GitHubは同社に対し、脆弱性の原因となっていたドキュメントを更新したと伝えたものの、研究者らが最後に確認した時点では、その更新は反映されていなかったとのことです。
自然言語がもたらすリスク
Soroko氏によれば、エージェント型開発ツールの登場は、開発チームの業務を前例のないスピードで加速させた一方、これらのツールで自然言語が使われることで、セキュリティ上の「サイバーセキュリティにおける重大なパラダイムシフト」とも言えるギャップが生まれています。
「開発チームがエージェント型AIワークフローを急速に採用する中で、信頼の基本的な構造そのものが変化しています」と同氏は述べています。従来の自動化は、厳格でコードにより強制された境界線に依拠していましたが、自然言語を用いる場合には、システムの指示と信頼できないユーザーデータが同じコンテキストウィンドウの中でシームレスに混ざり合ってしまう、とSoroko氏は指摘します。
実際、GitLostはセキュリティ研究者たちが繰り返し警鐘を鳴らしてきた脆弱性の一群を象徴する好例だと、Levi氏はDark Readingに語っています。「これは、単一の機能における一度限りの実装ミスではないという強いシグナルです。むしろ、AIエージェントに常駐する認証情報を与えながら、同時に攻撃者が到達可能なテキストを処理させることの、構造的な帰結なのです」と同氏は続けています。
GitLostへの防御策
このセキュリティ問題に対処するには、防御側が新たに浮上する脅威の状況に対応する必要があります。そのためにSoroko氏は、AIエージェントが取り込むデータに対してゼロトラストの姿勢で臨むことを提案しています。
「組織は今すぐ、既存のAIワークフロー設定を監査し、最小権限の原則を厳格に適用すべきです。エージェントから不必要なリポジトリ横断アクセス権を取り除き、内部データを公に投稿する能力を大幅に制限する必要があります」と同氏は述べています。
Soroko氏は、開発者もまた、信頼できないユーザー入力を中核のシステムプロンプトから論理的に分離する形にシステムの構築方法を根本的に変え、ユーザーが生成したテキストを信頼できる指示として扱うことをやめるべきだと述べています。
Nomaもまた、ユーザーが制御可能なコンテンツをAIエージェントへの信頼できる指示入力として決して扱わないこと、そして権限を必要最小限に保つことを、防御側に注意喚起しています。「リポジトリ横断アクセス権を持つエージェントは、とりわけ攻撃者にとって価値の高い標的となる」ためです。
翻訳元: https://www.darkreading.com/cyber-risk/gitlost-leaks-private-data-github-agentic-workflows