Исследователи из Noma Labs обнаружили уязвимость в GitHub, которая позволяет получать доступ к непубличным данным. Речь идёт о функции GitHub Agentic — она объединяет GitHub Actions с агентом ИИ на базе Anthropic Claude или GitHub Copilot. Уязвимость, названная «GitLost», даёт возможность злоумышленникам извлекать данные из частных хранилищ без проверки подлинности.
Чтобы осуществить атаку, преступникам нужно опубликовать специально подготовленный выпуск в общедоступном репозитории той же организации, где есть частные репозитории. Злоумышленники могут скрыть команды на естественном языке в теле проблемы GitHub — и агент GitHub выполнит их. Эксперты Noma Labs продемонстрировали атаку с помощью рабочего процесса агента GitHub, заражённого методом косвенного оперативного внедрения (IPI). Рабочий процесс был настроен так, чтобы при событии 'issues.assigned' прочитать заголовок и текст выпуска, а затем опубликовать ответный комментарий с доступом к другим репозиториям организации — как к общедоступным, так и к частным.
Для атаки не нужны навыки программирования, права доступа или учётные данные. Исследователи смогли обойти механизмы безопасности GitHub, манипулируя моделью с помощью ключевых слов — например, слова «дополнительно».
Эксперты считают, что контекстное окно агента GitHub одновременно служит и его поверхностью атаки: любой контент, который читает агент (вопросы, запросы, комментарии, файлы), может быть использован как инструмент для атаки — если агент интерпретирует его как инструкцию. Noma Labs сравнивает такие атаки с SQL‑внедрением для веб‑приложений — это систематический класс уязвимостей.
Чтобы снизить риски, эксперты рекомендуют:
- не считать пользовательский контент надёжными инструкциями для агента ИИ;
- ограничивать разрешения агентов минимальным необходимым набором;
- ограничивать возможности агентов по публичной публикации контента;
- очищать или изолировать пользовательский ввод от контекста инструкции перед передачей в модель.
На GitHub хранится 18 петабайт данных, часть из которых находится в частных хранилищах.