The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Атака, использующая GitHub Copilot для извлечения данных из приватных репозиториев

10.10.2025 09:52

Исследователи из компании 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.

  1. Главная ссылка к новости (https://www.legitsecurity.com/...)
  2. OpenNews: SnailLoad - атака по определению открываемых сайтов через анализ задержек доставки пакетов
  3. OpenNews: ArtPrompt - атака на AI-системы, позволяющая обойти фильтры при помощи ASCII-картинок
  4. OpenNews: В репозитории Hugging Face выявлены вредоносные AI-модели, выполняющие код
  5. OpenNews: Исследование влияния AI-ассистентов, подобных GitHub Copilot, на безопасность кода
  6. OpenNews: Техника атаки на системы, использующие алгоритмы машинного обучения
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64030-ai
Ключевые слова: ai, github, copilot, attack
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (21) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:32, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Неужели в этих приватных гитах может быть что-нибудь ценное,наверняка у серьёзных кампаний всё это локально организовано с прыгающими вокруг админами.
     
     
  • 2.7, Аноним (7), 13:51, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Тот случай, когда "Мой репозитарий" превращается в "Этот репозитарий".
     
     
  • 3.9, Аноним (1), 14:14, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Я вообще плохо понимаю какая конфиденциальность может быть на ресурсах вроде Гитхаб. Отсеивать мимокрокодилов, а зачем тогда нужна нелокальная среда совместной разработки.
     

  • 1.2, trolleybus (?), 10:45, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +13 +/
    Тот, кто хранит AWS_KEY и прочие явки и пароли в репозитории (даже в приватном), сам себе злобный Буратино.
     
     
  • 2.18, Аноним (18), 16:18, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Учитывая количество проблем, озвученных публично, правильнее было бы "тот, кто ВСЁ ЕЩЁ хранит".
    Прямо таки удивительное безрассудство.
     

  • 1.3, Анонимусс (-), 11:12, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    А как в репозитории вообще может оказаться AWS_KEY?
    Вы что, его в код добавляете?
     
     
  • 2.4, Аноним (4), 12:37, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    вы его интерактивно в приложении добавляете?
     
     
  • 3.5, Аноним (5), 13:14, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Использовать внешние vault хранилища, например azure key vault или aws secret manager
     
     
  • 4.8, Аноним (4), 13:58, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    мда уж, и как мне с помощью этого чуда подключаться к левой бд? В конфиге же в любом случае будет храниться шифрованный этим сервисом либо доступ к самому сервису (апи секрет), либо ключ от левой бд. Идентификация ведь должна произойти, а без секретных данных как она пройдет?
     
     
  • 5.11, Аноним (5), 14:30, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В конфигах хранить не надо, обычно секреты хранятся в env машины где деплоится проект
     
     
  • 6.12, Аноним (4), 14:34, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    а туда (в env) они как подают? Руками, интерактивно? Или записанные в каком-то файлике .env, который обычно также хранится в репозитории?

    пс: что-то с капчей, до этого была 18000, а теперь 18006

     
     
  • 7.14, Аноним (14), 15:06, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вы как с луны свалились.

    На примере того же Github. В репозитории лежит шаблон файла конфигурации, в настройках репозитория settings - secrets, свои для каждой среды (скажем testing, staging, production). При деплое через github actions секреты читаются в env (конструкцией в конфигурации джоба вида env: DB_PASSWORD: ${{ secrets.DB_PASSWORD }}), при деплое через тот же envsubst подставляются в шаблон файла, содержащего переменные среды, и генерируется конфиг, который уже и попадает на сервер.

    В гитлабах и прочих Jenkins принцип тот же.

     
     
  • 8.15, Аноним (4), 15:41, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ясно, хЪяк, хЪяк и в продакшен Какой-то там шитхаб должен знать ваши секреты ... текст свёрнут, показать
     
     
  • 9.16, Аноним (14), 15:46, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В случае с self-hosted gitlab jenkins etc то же самое Для особо параноидальных ... текст свёрнут, показать
     
     
  • 10.21, Аноним (4), 16:34, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    О чем тут можно говорить, если у вас в один клик автодеплой, акшены какие-то м... текст свёрнут, показать
     

  • 1.10, Аноним (10), 14:17, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Pull запросы в приватные репозитории? Это как? Приватные репозитории же не видны никому. А если видны, то там и так AWS ключ тогда будет виден если он в них лежит.
     
     
  • 2.13, Аноним (13), 14:45, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    пул запрос в публичный, если есть. В этом пул запросе копилот просят просмотреть все репозиотрии, к которым у аккаунта есть доступ
     
     
  • 3.19, Аноним (18), 16:21, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > В этом пул запросе копилот просят просмотреть все репозиотрии, к которым у аккаунта есть доступ

    Так и задумано или это просто детская неожиданность в реализации Copilot?

     
     
  • 4.20, Аноним (20), 16:29, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так и задумано, судя по всему

    https://www.opennet.dev/opennews/art.shtml?num=63322

     
  • 4.22, Аноним (4), 16:47, 10/10/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Так и задумано или это просто детская неожиданность в реализации Copilot?

    Ну если у вас сосед в доме на правах хозяина, как вы думаете, будет ли он матросить вашу супругу?

     

  • 1.23, Аноним (23), 17:11, 10/10/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >В комментарии боту предлагается найти во всех репозиториях пользователя, включая приватные

    А какого хрена у копилота есть доступ к каким-либо иным репозиториям, кроме анализируемого?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру