GitHub AI agent утекли private repositories через prompt injection-атаку
Выводы усиливают опасения по поводу безопасности AI agents с привилегированным доступом к корпоративному коду.
Prompt injection-атака может заставить preview Agentic Workflows в GitHub извлечь содержимое из private repositories и опубликовать его открыто, что показывает более широкий риск по мере того, как компании внедряют AI agents с привилегированным доступом к средам разработки, следует из нового исследования Noma Security.
Компания по AI-безопасности описала атаку, получившую название GitLost, в блоге. По ее словам, неавторизованный атакующий мог использовать preview Agentic Workflows в GitHub, отправив специально созданный GitHub issue в публичный репозиторий. Если AI agent имеет доступ на чтение к private repositories внутри той же организации, он может извлечь конфиденциальную информацию и опубликовать ее в публичном комментарии, заявила компания.
GitHub Agentic Workflows объединяют GitHub Actions с AI models вроде Claude или GitHub Copilot, позволяя разработчикам описывать workflows в Markdown. При этом AI agents читают issues, вызывают инструменты и выполняют задачи от их имени.
«Что произойдет, когда GitHub agent прочитает то, чему не должен доверять?» — написал исследователь Noma Sasi Levi. «Ответ — классическая indirect prompt-injection attack, которая тихо отправляет private data любому в интернете».
Публичный GitHub issue стал вектором атаки
По данным Noma, атака не опиралась на украденные учетные данные, malware или software vulnerabilities. Вместо этого атакующий встроил скрытые инструкции в GitHub Issue, отправленный в публичный репозиторий.
Поскольку AI agent интерпретировал issue как инструкции, а не как untrusted content, он получил доступ к private repository и вернул его содержимое обратно в публичный issue, добавили в блоге.
«Корневая причина уязвимости GitLost — уже знакомая проблема в agentic AI systems: prompt injection», — написал Levi. «В этом конкретном случае любой malicious actor может создать GitHub Issue и спрятать в тексте issue команды на обычном английском, которым GitHub agent последует».
Чтобы показать атаку, исследователи создали выглядевший обычным GitHub Issue с просьбой обновить документацию. После запуска workflow AI agent забрал файл README из private repository и опубликовал его содержимое в публично видимом комментарии.
Исследователи также сообщили, что обошли prompt-based guardrails GitHub, слегка изменив формулировку так, чтобы AI agent выполнил инструкции, которые ранее отвергал.
GitHub не сразу ответила на запрос о комментарии.
Исследование указывает на более широкий риск для AI agents
Noma заявила, что GitLost показывает более общую архитектурную проблему AI agents, а не flaw, уникальный для GitHub.
«Проблема не в том, что AI agent GitHub необычно небезопасен», — написал Levi. «Проблема в том, что любой AI agent, имеющий доступ и к untrusted external content, и к sensitive internal resources, может стать непреднамеренным мостом между ними, если trust boundaries не enforced».
Независимый cybersecurity researcher и red teamer Vibhum Dubey сказал, что результаты показывают более фундаментальную проблему, чем prompt injection сама по себе.
«Это не prompt injection в абстрактном смысле. Это GitHub, который выпускает agent permissions до того, как выпускает agent security», — сказал Dubey. «Уязвимость показывает, что AI agents работают по модели permissions service account, а не user permission model. Это архитектурное допущение, которое команды безопасности сделали до того, как начали рассматривать LLMs как вектор атаки».
По словам Dubey, сама prompt injection здесь почти вторична.
«Опасность в том, что trust boundaries есть в data model GitHub, но нигде в execution context агента», — сказал он. «Agent не “знает”, что repository private. Он видит лишь “accessible”. По мере того как все больше организаций deploy agents, мы накапливаем эти невидимые permission gaps».
Эксперты призывают к более жесткому контролю над AI agents
Dubey сказал, что организациям стоит пересмотреть, как AI agents получают permissions, а не рассматривать проблему прежде всего как задачу мониторинга.
«Три конкретных исправления: agents должны получать явные repository whitelists, а не широкий доступ service account. Все пользовательские input, включая commit messages, PR descriptions и issues, нужно проверять до того, как они попадут в LLM. И нужен аварийный kill-switch», — сказал он. «Большинство команд могут отключить скомпрометированный API key. А вы можете отключить rogue agent?»
Dubey добавил, что GitLost показывает, как AI agents могут фактически стать insider threat, если им дать широкий organizational access.
«Гениальность GitLost не в том, что он обманул AI. Он в том, что он превратил предположение GitHub о доверенности service accounts в оружие», — сказал он. «Agents были созданы, чтобы обходить человеческое суждение и работать автономно. Именно поэтому они опасны: мы нормализовали cross-boundary operations в момент, когда автоматизировали их».
Noma также рекомендовала применять least-privilege access controls, ограничивать cross-repository access для AI agents и рассматривать GitHub Issues, pull requests и comments как untrusted input.
Материал — перевод статьи с английского.
Оригинал: GitHub AI agent leaks private repositories via prompt injection attack