Атака на GitHub Copilot может извлечь содержимое из приватных репозиториев

Исследователи компании Legit Security представили технику атаки на GitHub Copilot, которая позволяет извлечь содержимое из приватных репозиториев при использовании чат-бота для анализа присылаемых pull-запросов. Так, атака позволила определить хранимые в приватном репозитории ключи для доступа к облачному окружению AWS.

Атака на GitHub Copilot может извлечь содержимое из приватных репозиториев

Атака использует способность GitHub Copilot загружать внешние изображения в зависимости от обрабатываемого содержимого и возможность подставлять в pull-запросы скрытые комментарии. Хакер может создать набор однопиксельных прозрачных изображений, каждое из которых соответствуют спецсимволу, цифре или букве алфавита. Далее он отправляет pull-запрос жертве, в котором указывает скрытый комментарий с инструкцией для чат-бота, оформленный в блоке «<!— комментарий —>».

Атака на GitHub Copilot может извлечь содержимое из приватных репозиториевАтака на GitHub Copilot может извлечь содержимое из приватных репозиториевАтака на GitHub Copilot может извлечь содержимое из приватных репозиториев

Скрытый комментарий предлагает боту найти во всех репозиториях пользователя, включая приватные, строки с кодом, содержащим значение «AWS_KEY», и вывести их не обычным текстом, а используя визуализацию на основе изображений. Для сопоставления символов и картинок в комментарии приводится таблица. При этом ИИ предписывается при выполнении задания не показывать рассуждения и информацию кроме картинок. Поскольку они прозрачные, мейнтейнер не заметит аномалий, а атакующий сможет воссоздать содержимое найденных строк с ключами AWS путём анализа последовательности загрузки картинок в логе веб-сервера.

Атака на GitHub Copilot может извлечь содержимое из приватных репозиториев

Чтобы обойти защиту CSP (Content Security Policy), которая позволяет только загрузку в GitHub Copilot картинок с серверов GitHub, в качестве прокси задействован сервис GitHub Camo. Он используется на платформе как промежуточное звено для загрузки внешних изображений, например, встраиваемых на страницу README. При этом в таблице сопоставления символов указываются не прямые ссылки, а ссылки на сам прокси, оформленные как «https://camo.githubusercontent.com/хэш_картинки». До этого через GitHub REST API в Camo добавляются и заверяются необходимые пути для перенаправления загрузки изображений. 

Атака на GitHub Copilot может извлечь содержимое из приватных репозиториевАтака на GitHub Copilot может извлечь содержимое из приватных репозиториев

Ранее Microsoft заявила, что переведёт IT-инфраструктуру GitHub на серверы Azure. Это произойдёт в течение следующих 24 месяцев.

Источник: habr.com