Атака, использующая GitHub Copilot для извлечения данных из приватных репозиториев
Дата публикации:Fri, 10 Oct 2025 09:52:33 +0300
Исследователи из компании Legit Security разработали технику атаки на GitHub Copilot, позволяющую извлечь содержимое из приватных репозиториев при использовании чатбота для анализа присылаемых pull-запросов. В качестве примера продемонстрирована возможность определения хранимых в приватном репозитории ключей для доступа к облачному окружению AWS.
Атака основывается на способности GitHub Copilot загружать внешние изображения в зависимости от обрабатываемого содержимого и возможности подставлять в pull-запросы скрытые комментарии, которые невидны в интерфейсе GitHub, но учитываются при анализе чатботом. Для организации утечки атакующий на своём сервере создаёт набор однопиксельных прозрачных изображений, каждое из которых соответствуют спецсимволу, цифре или букве алфавита. Далее жертве отправляется pull-запрос, в котором помимо предлагаемого изменения указывается скрытый комментарий с инструкцией для чатбота, оформленный в блоке "<!-- комментарий -->", не показываемом при выводе текста в формате Markdown.
В комментарии боту предлагается найти во всех репозиториях пользователя, включая приватные, строки с кодом, содержащим значение "AWS_KEY". Найденные строки предписывается вывести не обычным текстом, а используя визуализацию на основе изображений - каждый символ из текста следует отобразить в виде картинки. Таблица для сопоставления символов и картинок дополнительно приводится в комментарии. В примечании указано, что при выполнении задания не нужно показывать рассуждения и информацию кроме картинок.
При использовании мэйнтейнером GitHub Copilot для разбора предложенного pull-запроса, чатбот выполнит скрытое задание и покажет результат в форме картинок. Так как картинки прозрачные мэйнтейнер не заметит аномалий, а атакующий сможет воссоздать содержимое найденных строк с ключами AWS путём анализа последовательности загрузки картинок в логе web-сервера.
Для обхода защиты CSP (Content Security Policy), допускающей загрузку в GitHub Copilot картинок только с серверов GitHub, в качестве прокси задействован сервис GitHub Camo. Данный прокси используется в GitHub как промежуточное звено для загрузки внешних изображений, например, встраиваемых на страницу README. Для задействования Camo в таблице сопоставления символов указываются не прямые ссылки, а ссылки на сам прокси, оформленные как "https://camo.githubusercontent.com/хэш_картинки". До этого через GitHub REST API в Camo добавляются и заверяются необходимые пути для перенаправления загрузки изображений. Компания GitHub уже блокировала описанный метод атаки через запрет отрисовки изображений в чате с Copilot.
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=64030