2026年4月24日、GoogleはGemini CLI(npmパッケージ@google/gemini-cli)およびGitHub Actionsワークフローgoogle-github-actions/run-gemini-cliに存在した最高深刻度の脆弱性を修正しました。セキュリティアドバイザリGHSA-wpqr-6v78-jr5gとして公開されたこの脆弱性はCVSSスコア10.0(最大値)を付与されており、権限のない外部の攻撃者がGitHubにIssueを1件投稿するだけで、CI/CDサーバー上で任意のコードをリモートから実行できる状態でした。
発見者はNovee SecurityのElad Meged氏とPillar SecurityのDan Lisichkin氏で、GoogleのVulnerability Rewards Program(脆弱性報奨金プログラム)を通じて報告されました。
この記事のサマリー
GHSA-wpqr-6v78-jr5g(CVSS 10.0):Gemini CLIのヘッドレスモード(CI/CD環境での非対話型実行)において、ワークスペースフォルダを自動的に信頼フォルダとして扱う設定が原因で、攻撃者が悪意ある設定ファイルをGeminiの構成として読み込ませることができました。
AIサンドボックスが初期化される前にホストシステムで任意コマンドが実行されます。プロンプトインジェクションやモデルへの直接攻撃は不要であり、純粋にインフラレベルの実行です。
「TrustIssues」攻撃(Pillar Security命名):–yoloモードで動作するGemini CLIがGitHubのIssueを自動的に読み込む際、Issue本文に隠したシェルコマンドをAIが実行してしまうプロンプトインジェクション攻撃が実証されました。
「致死的なトリフェクタ(Lethal Trifecta)」:AIエージェントが①非公開データ(GitHubトークン)へのアクセス②公開の信頼できないコンテンツの読み込み③外部サーバーへのデータ送信、の3要素を同時に持つ構造が悪用を可能にしました。
修正済みバージョン:@google/gemini-cli v0.39.1・v0.40.0-preview.3以降、run-gemini-cli v0.1.22以降。
GEMINI_TRUST_WORKSPACE=falseの設定と、外部PRを処理するワークフローでの–yoloモード使用の見直しが必要です。
タイムライン
日付
内容
2026年4月16日
Pillar SecurityがGoogle/dracoリポジトリの脆弱性を最初に報告
2026年4月20日
Pillar Securityがgemini-cliに対するフルアタックをデモ
2026年4月24日
Googleがセキュリティアドバイザリ(GHSA-wpqr-6v78-jr5g)を公開・パッチをリリース
2026年4月30日
Novee Securityが詳細なブログ記事を公開。メディアが広く報道
脆弱性の根本原因——「ヘッドレスモードのワークスペース信頼問題」
Googleのアドバイザリが示す根本原因
Googleが公開したGitHub Security Advisoryによれば、問題はGemini CLIのヘッドレスモード(CI/CD環境や非対話型のAIエージェントとして頻繁に使用される)がワークスペースフォルダを自動的に信頼フォルダとして扱う設計にありました。
通常の対話型利用(ユーザーが直接操作する場合)では、Gemini CLIは設定ファイルを読み込む前にフォルダが信頼されているかどうかをユーザーに確認します。しかしヘッドレスモードでは、そのチェックが省略され実行中のワークスペースフォルダを無条件に信頼していました。
これが意味するのは、攻撃者がCI/CDが処理するフォルダ(たとえばプルリクエストで変更されたファイルを含むフォルダ)に悪意ある.gemini/設定ファイルを配置するだけで、Geminiがそれを正規の設定として読み込み、ホストシステムでコマンドを実行するという結果になります。
Novee Securityは「攻撃者は無権限でも、自分の悪意あるコンテンツをGeminiの設定として強制的に読み込ませることができた。これはAIエージェントのサンドボックスが初期化される前の段階でホストシステム上のコマンド実行を引き起こした」と説明しています。
Pillar Securityの「TrustIssues」攻撃
Pillar Securityは別の攻撃経路として「TrustIssues」攻撃を実証しました。これはGitHubのIssue機能を悪用するものです。
多くのリポジトリではGemini CLIが–yoloモード(全てのツール呼び出しを自動承認する自動化向けモード)でGitHubのIssueを自動的に読み込み・ラベリングするCI/CDワークフローを設定しています。攻撃者はIssueのテキストに隠したシェルコマンドを埋め込むだけです。GeminiがそのIssueを読んだとき、隠しコマンドをAIへの指示として解釈し、確認なく実行してしまいます。
この攻撃を可能にしたのは「致死的なトリフェクタ」と呼ばれる3要素の組み合わせです。AIエージェントが非公開データ(GitHubトークン等)へのアクセス権を持っていること、公開の信頼できないコンテンツ(GitHubのIssue・PR等)を読み込めること、そして外部サーバーにデータを送信できることです。
影響を受けるバージョンと修正内容
パッケージ
影響を受けるバージョン
修正済みバージョン
@google/gemini-cli(npm)
0.39.1未満、0.40.0-preview.3未満
0.39.1・0.40.0-preview.3以降
google-github-actions/run-gemini-cli(GitHub Actions)
0.1.22未満
0.1.22以降
修正内容の詳細
修正版(v0.39.1)では主に以下の2点が変更されました。
1. ヘッドレスモードでのワークスペース信頼の無効化:ヘッドレスモードでは自動的にワークスペースを信頼する挙動がデフォルトで無効化されました。GEMINI_TRUST_WORKSPACE環境変数を明示的にtrueに設定した場合のみ信頼フォルダとして扱われます。
2. –yoloモードでのツールアローリスト適用:これまで–yoloモードでは~/.gemini/settings.jsonのツールアローリストが無視され、run_shell_commandを含む全てのツール呼び出しが自動承認されていました。v0.39.1以降ではアローリストが–yoloモードでも評価されます。これにより一部のワークフローの動作が変わる可能性があります。
なお、CWE分類はCWE-20(不適切な入力検証)・CWE-77(コマンドインジェクション)・CWE-78(OSコマンドインジェクション)・CWE-200(情報漏洩)が適用されています。
今すぐ取るべき対応
パッケージの更新として、npm update @google/gemini-cliを実行し0.39.1以降に更新してください。GitHub Actionsワークフローではrun-gemini-cliをv0.1.22以降に更新してください。
GEMINI_TRUST_WORKSPACE=falseの設定として、外部PRやIssueを処理するワークフローではGEMINI_TRUST_WORKSPACE環境変数をfalseに明示的に設定してください。
GitHubトークンのディスク保存を避けるとして、GitHubでpersist-credentials: falseを設定し、GitHubトークンがディスク上に残らないようにしてください。これによりトークンが窃取されるリスクが軽減されます。
ワークフローイベントの見直しとして、外部PRをトリガーとするワークフローではpull_requestの代わりにpull_request_targetイベントを使用することが推奨されます。
GitHubActionsログの監査として、過去30日分のrun-gemini-cliジョブのログを確認し、run_shell_commandツールでcurl・wget・nc・base64等の外部通信コマンドや、作業フォルダ外へのファイルアクセスが行われていないかを確認してください。不審な活動が確認された場合はワークフローに公開されていた全シークレットを速やかにローテーションしてください。
「AIエージェントはアシスタントではなく特権コード実行として扱え」
Novee SecurityのElad Meged氏は「この種の攻撃を防ぐには、AIエージェントをアシスタントではなく特権コード実行として扱う必要がある」と述べています。Pillar SecurityもPillar Securityも「開発者はpersist-credentials: falseを設定してGitHubトークンがディスクから離れた状態を保つべき」と提言しています。
本件はCI/CDパイプラインへのAIエージェント組み込みが当たり前になっていく中で、「AIエージェントが持つ信頼とアクセス権が攻撃者にとって新たな侵害チャネルになる」という本質的なリスクを示した事例です。
よくある質問(FAQ)
Q. CVE番号は付与されていますか? 2026年4月30日時点でCVE番号は付与されていません。GoogleはGitHub Security Advisory(GHSA-wpqr-6v78-jr5g)として追跡しており、CVSSスコア10.0を内部で評価しています。
Q. Gemini CLIをローカルで対話型に使用している場合も影響がありますか? 対話型(インタラクティブ)モードでの使用は影響を受けません。影響を受けるのはヘッドレスモード(CI/CDパイプラインやGitHub Actions等の非対話型環境)での利用です。
Q. 今回の脆弱性はプロンプトインジェクションとは違うのですか? Novee Securityの発見はプロンプトインジェクションとは本質的に異なります。攻撃者の悪意あるコンテンツがAIモデルへの入力としてではなく、Geminiの設定ファイルとして読み込まれることでAIが判断する前の段階でコマンドが実行されます。Pillar Securityが実証した「TrustIssues」はプロンプトインジェクションに近いですが、–yoloモードのアローリスト未適用という別の問題が組み合わさっていました。
参考情報
この記事をシェアする
メールマガジン
最新のセキュリティ情報やセキュリティ対策に関する情報をお届けします。
投稿者:三村
セキュリティ製品を手がける上場企業にて、SOC(セキュリティオペレーションセンター)運営およびWebアプリケーション脆弱性診断の営業に8年間従事。その後、システムエンジニアへ転身し、現在はMDMや人事系SaaSの開発に携わる。
8年の実務経験と開発者としての知見を活かし、「セキュリティ対策Lab」ではダークウェブ調査、セキュリティインシデントの分析、および高度なセキュリティ対策解説の執筆・編集を統括しています。
LinkedIn(外部サイト)