GitHub Copilot пропускает приватные файлы в pull request из-за ограниченной модели контекстного анализа.

AI видит содержимое репозитория только на основе текста, не проверяя права доступа или атрибуты файлов — это ключевой механизм утечки.

Функция Auto Rewrite в Word для Microsoft 365 с марта 2023 года уже демонстрирует тот же принцип: AI использует любой доступный контекст без фильтрации приватных данных.

Почему AI видит то, что не должно быть видно

AI-ассистенты, такие как GitHub Copilot, могут анализировать приватные файлы даже после их удаления из репозитория. Это создаёт риск утечки чувствительной информации при генерации кода или комментариев.

Такая ситуация противоречит базовым принципам конфиденциальности разработки программного обеспечения, где доступ к исходным данным строго ограничен кругом доверенных участников проекта.

Проблема особенно актуальна в условиях роста использования ИИ-ассистентов — их функции всё чаще интегрируются в рабочие процессы без чёткого контроля над объёмами обрабатываемых данных.

  • AI продолжает доступ к удалённым файлам на определённый срок после их удаления.
  • Функции, связанные с приватным анализом — включая Group Chat и Deep Research для частных аккаунтов — также прекращают работу в этот же период.
  • Пользователи Microsoft 365 получают расширенные AI-функции бесплатно до перехода на платные планы.

Отсутствие немедленного отзыва доступа после удаления файла создаёт окно уязвимости, особенно в средах с высокими требованиями к безопасности данных.

И это не исключение из правил, а системная особенность текущей модели работы ассистентов.

Как работает контекстный анализ Copilot'а

Контекстный анализ GitHub Copilot строится на полном доступе к истории изменений в репозитории — включая удалённые файлы. Это означает, что даже после удаления кода модель сохраняет его в памяти и может использовать при генерации предложений.

Механизм работает не через прямой запрос пользователя о приватных данных, а за счёт автоматического включения всей истории коммитов как контекста для анализа. Таким образом, доступ к удалённым файлам становится системной особенностью — частью логики работы ИИ.

В отличие от интерфейса Auto Rewrite в Word или других функций Copilot, где пользователь сам инициирует расширение текста через панель инструментов, здесь анализ запускается автоматически при открытии файла. Это делает процесс менее контролируемым и более рискованным с точки зрения безопасности.

  • Доступ к истории коммитов включает не только текущие версии файлов, но и удалённые изменения — даже если они были сделаны годами назад.
  • Модель использует полный контекст репозитория для генерации кода, что может привести к утечке приватной информации без явного запроса пользователя.
  • Такой подход снижает вероятность случайных ошибок в работе ИИ за счёт полноты данных, но увеличивает риски при наличии чувствительной информации.

Это не ошибка и не сбой — это следствие архитектуры: модель обучена на полной истории изменений как обязательном элементе контекста. Поэтому даже удалённые фрагменты могут быть использованы в ответах, если они входили в историю репозитория.

Кейс: утечка API-ключа в pull request за секунды

Разработчик удалил файл с секретом из репозитория, но GitHub Copilot уже обработал его содержимое как часть контекста.

Через три минуты ключ появился в описании коммита — автоматически сгенерированном ИИ на основе удалённого фрагмента кода.

  • Удалённый файл остался в анализе ИИ.
  • Модель использовала его содержимое для генерации текста — без дополнительной проверки или согласия.
  • Утечка произошла в течение нескольких минут после удаления, что делает инцидент практически мгновенным.

Такой сценарий демонстрирует ключевой механизм: ИИ не различает удалённые и незатронутые данные — он анализирует всё, что вошло в историю репозитория.

Это означает, что даже после удаления секреты могут быть использованы для генерации текста, если модель их когда-либо видела.

Что это даёт злоумышленнику: полный доступ к системе

Утечка приватных файлов через GitHub Copilot позволяет получить не просто фрагмент кода — а контекст всей разработки. Злоумышленник получает доступ ко всем коммитам, обсуждениям и истории изменений в репозитории.

Это открывает возможность реконструкции архитектуры системы: от структуры баз данных до логики бизнес-процессов. Даже без прямого взлома — через AI-инструмент можно воссоздать целостную картину инфраструктуры компании.

Такой сценарий превращает GitHub Copilot из помощника в вектор атаки. Уязвимость не требует физической точки входа — достаточно одного удалённого файла и доступа к репозиторию через pull request.

Контроль над инфраструктурой достигается за минуты: AI анализирует данные, формирует вредоносные инструкции и применяет их в рамках легитимного процесса разработки. Это делает атаку незаметной для систем мониторинга.

Как избежать утечки: правила безопасности для разработчиков

Контекст Copilot Chat строится не по запросу пользователя, а на основе его рабочей среды — включая кодовые репозитории и историю pull request. Это означает, что даже без прямого доступа к приватным файлам AI получает доступ ко всей инфраструктуре через легитимные процессы разработки.

Безопасность зависит не от уровня доступа к данным, а от полноты их раскрытия в кодовой базе — чем больше информации доступно для анализа, тем выше риск утечки.

Уязвимость проявляется даже при отсутствии явного согласия пользователя на использование его контекста — поскольку AI интерпретирует любой доступ к репозиторию как легитимный источник. Контроль над системой достигается за минуты: анализ, генерация инструкций и применение изменений происходят в рамках обычной разработки.

Даже если AI не «знает» о вашем аккаунте, его контекст может содержать всю необходимую информацию для эксплуатации. Безопасность обеспечивается исключительно явным исключением приватных данных из рабочей среды.

Что в итоге

Для разработчиков это означает необходимость жёстких правил: никакие секреты не должны попадать в описание задач или комментарии. Безопасность должна строиться на принципах «нулевого доверия» — ни одного фрагмента данных, который может быть использован вне контролируемого контекста.