Угрозы

GitHub Issue как ловушка для ИИ-агента: публичная задача может вытянуть данные из приватного репозитория

Маша Даровская
By Маша Даровская , IT-редактор и автор
GitHub Issue как ловушка для ИИ-агента: публичная задача может вытянуть данные из приватного репозитория
Обложка © Anonhaven

Исследователи Noma Security показали новую атаку на GitHub Agentic Workflows — механизм GitHub для запуска ИИ-агентов внутри GitHub Actions. Сценарий назвали GitLost. Злоумышленнику не нужны украденные токены, доступ к организации или права на приватные репозитории. Достаточно открыть обычный Issue в публичном репозитории компании, если у этой компании агент настроен так, что читает публичные задачи и имеет доступ к приватным репозиториям той же организации.

GitHub Agentic Workflows — новая функция в публичном предварительном доступе. GitHub представил её в феврале 2026 года: разработчик пишет задачу для автоматизации обычным языком в Markdown, а система превращает её в рабочий процесс GitHub Actions. Агент может разбирать Issues и pull request, анализировать падения CI, помогать с документацией, обслуживать репозиторий и отвечать в GitHub. В качестве движка можно использовать GitHub Copilot, Claude от Anthropic, Gemini от Google или OpenAI Codex.

Проблема GitLost строится на непрямой промпт-инъекции. Злоумышленник прячет инструкцию внутри текста, который агент считает обычными данными. Например, внутри описания Issue. Агент читает этот текст как часть задачи, путает внешнюю команду с рабочей инструкцией и выполняет действие, которое владелец репозитория не планировал.

В демонстрации Noma вредоносный Issue выглядел как безобидная просьба от вымышленного вице-президента по продажам после встречи с клиентом. Workflow срабатывал при назначении Issue, читал заголовок и тело задачи, а затем публиковал ответ через инструмент add-comment. У агента при этом были права чтения других репозиториев организации — публичных и приватных. Итог: агент достал README из приватного репозитория и вставил его в публичный комментарий к Issue.

Злоумышленник не эксплуатирует переполнение буфера, не подбирает пароль и не получает shell, но использует разрешения, которые уже выдали ИИ-агенту. Агент становится доверенным исполнителем внутри инфраструктуры, а публичный Issue — каналом управления.

GitHub заложил в Agentic Workflows несколько защитных слоёв. Документация прямо предупреждает, что ИИ-агентов можно обмануть промпт-инъекцией, вредоносным содержимым репозитория или скомпрометированными инструментами. Для снижения риска используются изолированное выполнение, токены только для чтения по умолчанию, отсутствие секретов в среде агента, безопасные выходы и отдельная проверка результата перед публикацией.

Noma утверждает, что в тесте одного слова оказалось достаточно, чтобы обойти защиту. Исследователь добавил к вредоносной инструкции слово “Additionally” — «дополнительно». После этого модель восприняла команду как продолжение обычной задачи, а защитный фильтр пропустил ответ.

Ключевой фактор риска — ширина токена. Если агенту дали доступ только к одному репозиторию, который он обслуживает, последствия ограничены. Если ради удобства ему выдали чтение по всей организации, в область риска попадают приватный код, внутренние документы, описания архитектуры, файлы конфигурации, CI/CD-материалы и всё, что доступно этому токену. The Hacker News подчёркивает: утечка зависит от того, что именно видит агент, а каналом вывода становится его собственный публичный комментарий.

Эта схема хорошо ложится в модель «смертельной триады» для ИИ-агентов, которую ранее описал разработчик Саймон Уиллисон: доступ к приватным данным, чтение недоверенного контента и возможность вывести данные наружу. Когда все три свойства оказываются в одной системе, злоумышленнику остаётся подобрать текст, который заставит агента сделать лишний шаг.

GitLost не выглядит единичным инцидентом. В мае 2025 года Invariant Labs показывала похожий сценарий с GitHub MCP Server: вредоносный Issue в публичном репозитории мог заставить агента добраться до приватных репозиториев и вывести данные через pull request. Исследователи тогда описывали проблему как архитектурную: её нельзя полностью закрыть одним серверным патчем, потому что агент сам смешивает недоверенный текст и доступные ему инструменты.

В апреле 2026 года исследователь Aonan Guan описал класс атак Comment and Control — «комментарий как канал управления». В демонстрациях PR-заголовки, тела Issue и комментарии заставляли Claude Code, Gemini CLI и GitHub Copilot Agent утекать API-ключами и токенами из среды GitHub Actions. Общий паттерн тот же: атакующий пишет текст в GitHub, агент читает его как часть рабочего контекста, выполняет инструмент и возвращает результат туда, где его может увидеть атакующий.

Есть новость? Станьте автором.

Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.