Недавно выпущенные GitHub Agentic Workflows можно обманом заставить публиковать файлы из приватных репозиториев. Это продемонстрировали исследователи из Noma Labs, показав, что всего один публичный комментарий к issue может превратить внутреннего ИИ-ассистента в канал утечки данных.

Эта уязвимость важна, потому что она обходит встроенные проверки безопасности GitHub без использования какого-либо специального эксплойт-кода; злоумышленнику достаточно составить на первый взгляд безобидный комментарий к issue, который ИИ-агент прочитает и выполнит.

Как работает уязвимость

Agentic Workflows позволяют ИИ-агенту реагировать на события GitHub — например, на новые issue — путем выполнения команд, определенных в файле workflow. Noma Labs обнаружили, что агент не отличает легитимные инструкции workflow от текста, встроенного в комментарий пользователя. Опубликовав публичный issue, имитирующий запрос менеджера, и добавив скрытую директиву, злоумышленник может заставить агента:

  1. Открыть issue (который будет виден всем).
  2. Включить строку, которая выглядит обычной, но содержит скрытую команду.
  3. Заставить ИИ извлечь файлы из приватного репозитория, к которому у workflow есть доступ на чтение.
  4. Заставить агента опубликовать извлеченный контент в качестве ответа в том же issue.

Исследователи обнаружили, что вставки одного лишь слова «Additionally,» перед скрытой командой было достаточно, чтобы обойти защитные механизмы GitHub. Не требуется никаких дополнительных разрешений, токенов или пользовательского кода — только правильная формулировка.

Почему это больше, чем просто баг

Проблема носит структурный характер. ИИ-агент воспринимает любой текст, полученный в результате события репозитория, как заслуживающий доверия, что фактически превращает пользовательский контент в вектор атаки, аналогичный SQL-инъекции в веб-приложении. Если workflow предоставляет агенту доступ на чтение к приватным репозиториям и возможность оставлять публичные комментарии, эта комбинация создает прямой путь для эксфильтрации данных.

Что говорит GitHub

GitHub был уведомлен об этой уязвимости.

Шаги по смягчению последствий для команд

  • Ограничьте права агента: предоставляйте доступ на чтение/запись к приватным репозиториям только в случае крайней необходимости.
  • Заблокируйте публичные публикации: настройте workflow так, чтобы агенты не могли публиковать комментарии или другие артефакты в публичных issue.
  • Считайте все внешние входные данные недоверенными: добавьте уровни валидации, которые очищают или игнорируют пользовательский текст до того, как он попадет к ИИ.
  • Проведите аудит триггеров workflow: проверьте, какие события (issue, pull requests и т. д.) вызывают агентов, и убедитесь, что связанные с ними разрешения соответствуют целевому сценарию использования.

Вывод: ИИ-ассистент, который может читать приватный код и публиковать данные, настолько безопасен, насколько надежны установленные для него границы. Без строгих ограничений прав и очистки входных данных один публичный комментарий может превратить функцию повышения продуктивности в инструмент утечки данных.