# Внедрение инструкций через GitHub MCP-сервер: утечка данных из приватных репозиториев

> Исследователи Invariant Labs показали, что вредоносная задача (issue) в публичном репозитории может заставить AI-агента с GitHub MCP-сервером раскрыть содержимое приватных репозиториев владельца. Проблема не в коде сервера, а в архитектуре: агент одновременно читает недоверенный текст и обладает широким токеном доступа.

- Канонический HTML: [/incidents/github-mcp-toxic-agent-flow](https://ai-first.tech/incidents/github-mcp-toxic-agent-flow)
- Язык: русский
- Редакционный принцип: защитный контекст без вредоносных полезных нагрузок и инструкций обхода.

- Дата: 2025-05-26
- Категория: AI-агенты и MCP
- Затронуто: Пользователи официального GitHub MCP-сервера, подключённого к AI-агентам с доступом к приватным репозиториям
- Критичность: Высокий

## Что произошло

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

## Где нарушилась защита

Граница доверия нарушилась внутри одного сеанса агента: текст задачи из публичного репозитория, который может написать кто угодно, попадал в тот же контекст, что и команды пользователя. Агент работал с персональным токеном, дающим доступ ко всем репозиториям сразу, включая приватные. Возможность создавать публичные pull request дала канал вывода данных. Сочетание доступа к закрытым данным, недоверенного ввода и канала наружу эксперты назвали «смертельной триадой».

## Последствия

- Продемонстрирована утечка содержимого приватных репозиториев через стандартный сценарий «разбери задачи»
- Риск затрагивает любой агент и клиент, использующий GitHub MCP-сервер с широким токеном
- Атака не требует доступа к инфраструктуре жертвы: достаточно создать задачу в публичном репозитории

## Реакция

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

## Уроки для бизнеса

- Любой текст, который агент читает из внешних источников, нужно считать недоверенным, даже если он лежит в собственной системе компании
- Широкий токен у агента превращает одну внедрённую инструкцию в утечку всех доступных данных
- Опасно сочетание в одном агенте доступа к закрытым данным, чтения внешнего контента и права публиковать
- Уязвимость может быть не в продукте, а в способе его подключения

## Меры защиты

- Выдавать агентам токены с доступом к конкретным репозиториям и минимальными правами
- Ограничивать сеанс агента одним проектом и разделять публичные и приватные контексты
- Требовать подтверждения человеком для действий, публикующих данные наружу
- Внедрить мониторинг и политики для вызовов MCP-инструментов

Связанные карточки угроз: A33, A34, A35, A03

## Первоисточники

- [GitHub MCP Exploited: Accessing private repositories via MCP](https://invariantlabs.ai/blog/mcp-github-vulnerability) — Invariant Labs
- [Researchers warn of prompt injection vulnerability in GitHub MCP with no obvious fix](https://www.devclass.com/ai-ml/2025/05/27/researchers-warn-of-prompt-injection-vulnerability-in-github-mcp-with-no-obvious-fix/1623458) — DevClass
- [MCP Horror Stories: The GitHub Prompt Injection Data Heist](https://www.docker.com/blog/mcp-horror-stories-github-prompt-injection/) — Docker
