Перейти к содержимому
Оригинал
Permission Protocol · AI Agent Incident Tracker·· 15.04.2026Избранное редакциейОценка ИИ87

约翰霍普金斯研究者通过 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 обрывает эту атаку на границе вызова инструментов, до того как затронуты какие-либо учётные данные.

Разбор инцидента

Хронология и технический разбор

Хронология

  1. 2025-10

    Аонан Гуань (Университет Джонса Хопкинса) отправил в Anthropic через HackerOne первое сообщение об инъекции промпта в Claude Code Security Review

  2. 2025-11

    Anthropic выплатила вознаграждение в размере $100, повысила серьёзность с CVSS 9.3 до 9.4; обновила документацию, добавив предупреждение о безопасности; CVE не присвоен, публичных рекомендаций нет

  3. 2026-Q1

    Гуань распространил атаку на Google Gemini CLI Action и Microsoft GitHub Copilot — обе оказались уязвимы, обе выплатили вознаграждение за уязвимость без публикации рекомендаций

  4. 2026-04-15

    The Register публикует эксклюзивное интервью с Гуанем; исследование опубликовано на oddguan.com

  5. 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