约翰霍普金斯研究者通过 PR 标题注入从 Claude Code、Gemini CLI 和 GitHub Copilot 窃取 API 密钥
Оригинальный заголовок: Johns Hopkins researchers steal API keys from Claude Code, Gemini CLI, and GitHub Copilot via PR title prompt injection, all three vendors paid bug bounties quietly
Заголовок и краткое изложение на выбранном языке ожидают перевода.
约翰霍普金斯研究者 Aonan Guan 利用 PR 标题提示词注入,从 Claude Code Security Review、Gemini CLI Action 和 GitHub Copilot 中窃取 API 密钥与 GitHub token。
约翰霍普金斯研究者用 PR 标题注入从三个 AI 编程智能体中窃取凭据,三家厂商均静默修复并支付漏洞赏金。
2026-04-15
ВысокийОсновной
Исследователи из Университета Джонса Хопкинса вытащили API-ключи из Claude Code, Gemini CLI и GitHub Copilot через инъекцию промпта в заголовок PR; все три вендора тихо выплатили вознаграждение за уязвимость
Исследователи из Университета Джонса Хопкинса с помощью инъекции промпта в заголовок PR вывели API-ключи и токены GitHub из Claude Code, Gemini CLI и GitHub Copilot. Все три вендора выплатили вознаграждение за уязвимость, не опубликовав ни CVE, ни рекомендаций.
Claude Code Security Review / Gemini CLI Action / GitHub CopilotУтечка учётных данныхИнъекция промпта с выводом учётных данных через GitHub ActionsCI/CD-конвейеры GitHub Actions / секреты репозитория
Что произошло
Вредоносный payload в заголовке PR перехватил управление Claude Code Security Review, заставив его выполнять команды bash и выводить переменные окружения и API-ключи — всё это публиковалось комментарием к ревью PR
Почему это важно
Под угрозой оказались ANTHROPIC_API_KEY, GITHUB_TOKEN, учётные данные облачных провайдеров и любые другие секреты репозитория, доступные runner'у GitHub Actions. Из-за тихого патчинга неизвестное число репозиториев осталось на уязвимых версиях без уведомления.
Отсутствие проверки авторизации
Runtime-гейт, требующий явного одобрения человеком перед тем, как ИИ-агент выполнит вызовы инструментов (bash, чтение переменных окружения, доступ к секретам) по вводу от недоверенного автора PR
Заблокировал бы это PP?
В развёртывании под управлением PP вызовы инструментов агентом (выполнение bash, чтение переменных окружения) требуют подписанных подтверждений. Запрос на подтверждение показывается оператору: «Claude Code Security Review запрашивает выполнение bash, инициированное PR #68 — одобрить?» Вредоносный заголовок PR не может породить действительное подтверждение — это под силу только подписанту с учётными данными и MFA. Это классический Confused Deputy: агент получил учётные данные, которые ему не были нужны, и не смог отличить инструкции доверенного оператора от внедрённого атакующим payload. PP обрывает эту атаку на границе вызова инструментов, до того как затронуты какие-либо учётные данные.
Разбор инцидента
Хронология и технический разбор
Хронология
2025-10
Аонан Гуань (Университет Джонса Хопкинса) отправил в Anthropic через HackerOne первое сообщение об инъекции промпта в Claude Code Security Review
2025-11
Anthropic выплатила вознаграждение в размере $100, повысила серьёзность с CVSS 9.3 до 9.4; обновила документацию, добавив предупреждение о безопасности; CVE не присвоен, публичных рекомендаций нет
2026-Q1
Гуань распространил атаку на Google Gemini CLI Action и Microsoft GitHub Copilot — обе оказались уязвимы, обе выплатили вознаграждение за уязвимость без публикации рекомендаций
2026-04-15
The Register публикует эксклюзивное интервью с Гуанем; исследование опубликовано на oddguan.com
2026-04-16
Вторичные публикации GBHackers и Winbuzzer подтверждают паттерн тихого патчинга и сохраняющуюся уязвимость у пользователей с закреплёнными версиями
Технический разбор
- Вектор атаки: инъекция в заголовок PR — все три затронутых агента читают данные GitHub (заголовки PR, тексты issue, комментарии) как доверенный контекст задачи, поэтому любой автор PR с доступом к репозиторию может их перехватить
- У всех трёх агентов один и тот же уязвимый поток данных: читают данные GitHub → обрабатывают как контекст задачи → выполняют вызовы инструментов с полными правами runner'а GitHub Actions
- Заметая следы после вывода данных, атакующий возвращает заголовку PR безобидный вид («исправить опечатку»), закрывает PR и удаляет комментарий бота к ревью — почти никаких следов для форензики
- Среди скомпрометированных учётных данных — GITHUB_TOKEN, ANTHROPIC_API_KEY и любые секреты облачных провайдеров, доступные окружению runner'а GitHub Actions
- Гуань предполагает, что этот паттерн распространяется на всех агентов, интегрированных с GitHub Actions — Slack-ботов, агентов Jira, автоматизацию развёртывания — а не только на трёх подтверждённо уязвимых вендоров
Граница авторизации
Где должна была проходить граница авторизации
Этот инцидент относится к категории утечка учётных данных. Соответствующий шлюз Permission Protocol — Credential Gate. Условие чтения: блокировка применяется только там, где реальная граница действий проходит через шлюз.
- Где применять
- На границе вызова инструментов ИИ-агентом (выполнение bash, чтение переменных окружения и секретов)
- Что ещё нужно
- Репозитории, использующие upstream GitHub Actions без обёртки под управлением PP: по умолчанию эти Actions не защищены и останутся уязвимыми даже на закреплённых версиях
- Подтверждение требуется для
- Выполнения bash, чтения переменных окружения и любого доступа к секретам, возникающего во время проверки пул-реквеста ИИ-агентом
PP действует на уровне вызова инструментов: подтверждение требуется до того, как агент выполнит команды bash или прочитает секреты окружения. Внедрённый злоумышленником заголовок пул-реквеста не может выдать подтверждение сам себе — это под силу только человеку с соответствующими полномочиями. Именно эту проблему Confused Deputy и призван решать PP.
Начните с малого
Поставьте соответствующий шлюз на этой границе действий.
Этот инцидент соответствует Credential Gate. Начните с границы, которая контролирует само действие, а затем требуйте подписанное подтверждение перед выполнением.
Источник: Permission Protocol · AI Agent Incident Tracker · permissionprotocol.com