Перейти к содержимому
Выберите тему

Токсичный сценарий агента в GitHub MCP

26 мая 2025 Invariant Labs описала, как вредоносная задача в открытом репозитории GitHub заставляет агента с сервером GitHub MCP выдать данные из закрытых репозиториев.

26 мая 2025 компания Invariant Labs опубликовала статью «GitHub MCP Exploited: Accessing private repositories via MCP». Авторы - Marco Milanta и Luca Beurer-Kellner. Это исследование сторонней компании, а не бюллетень об уязвимости с номером. Всё, что сказано ниже, изложено по описанию Invariant Labs.

Что изменилось

По описанию Invariant Labs, найденная уязвимость позволяет злоумышленнику перехватить управление агентом пользователя через вредоносную задачу (issue) на GitHub и вынудить агента выдать данные из закрытых репозиториев.

Публикация ввела термин. Косвенное внедрение инструкций, которое запускает вредную последовательность вызовов инструментов, авторы называют токсичным сценарием агента (toxic agent flow).

Условия опыта Invariant Labs описывает так:

  • у пользователя есть открытый репозиторий, где задачу может создать кто угодно, и закрытый репозиторий;
  • пользователь просит агента посмотреть открытые задачи в открытом репозитории;
  • агент подтягивает в контекст данные закрытого репозитория и выдаёт их в запросе на слияние (pull request), который сам создаёт в открытом репозитории.

Для показа авторы использовали Claude Desktop и модель, которую называют Claude 4 Opus. Опытный репозиторий - ukend0464/pacman.

Кого это касается

По описанию Invariant Labs, это не ошибка в коде сервера GitHub MCP, а основополагающая проблема архитектуры, и решать её нужно на уровне системы агента. Авторы пишут, что она затрагивает любого агента, который использует сервер GitHub MCP, независимо от модели и реализации.

Invariant Labs отдельно отмечает разницу с отравлением инструментов: по их описанию, для этой уязвимости сами инструменты MCP не должны быть скомпрометированы.

Авторы называют две меры защиты:

  • раздельные права доступа, вплоть до правила «один репозиторий на один сеанс»;
  • постоянное наблюдение с помощью MCP-scan.

Если ваш агент работает с сервером GitHub MCP и имеет доступ одновременно к открытым и закрытым репозиториям, проверьте, какие права ему выданы.

Как это выглядит сейчас

Как внедрение инструкций через данные описано в действующей редакции протокола и что остаётся на хосте и пользователе, разобрано на странице «Отравление инструментов и внедрение инструкций». На странице «Уязвимости и инциденты» сказано, почему исследования о классах атак не входят в таблицу уязвимостей с номерами.

Источники