Plugin4Shell: подмена «закреплённого» плагина в четырёх ИИ-агентах для кодинга
Компания Air Security сообщила в четверг об уязвимости, затрагивающей сразу четыре популярных ИИ-агента для написания кода: Claude Code, OpenAI Codex, GitHub Copilot и Google Gemini CLI. Проблема позволяет тому, кто контролирует репозиторий плагина, подменить устанавливаемый код на вредоносный — даже если агент привязал плагин к конкретной проверенной версии.
Как ломается «закрепление»
Агенты ставят дополнения из онлайн-магазинов, и ради безопасности каждый плагин привязывается к единственной проверенной версии по хешу коммита — длинной строке, однозначно указывающей на снимок кода. Air обнаружила, что агенты скачивают этот снимок, но никогда не проверяют, что полученный код действительно соответствует хешу.
Весь трюк держится на именах веток. Если хостинг разрешает создать ветку, чьё имя выглядит как хеш коммита, владелец репозитория может навести это имя на другой код. Агент установит подменённый код, продолжая рапортовать, что он на «закреплённой» версии. Поскольку плагин работает с теми же правами, что и пользователь агента, чужой код получает доступ к файлам, сохранённым учётным данным и системам жертвы.
Где это не сработает
GitHub запрещает имена веток и тегов, похожие на хеши коммитов, поэтому плагины из репозиториев GitHub этому трюку не подвержены. Атака работает на площадках, допускающих такие имена, — например, Bitbucket или собственный git-сервер компании. The Hacker News 18 сентября проверило штатные каталоги агентов: все плагины в сообществе Anthropic и в каталогах по умолчанию Claude Code и Copilot указывают на GitHub.
Gemini CLI ломается иначе — через репозиторий, чья основная ветка названа FETCH_HEAD, а правило GitHub против хеш-подобных имён это не блокирует.
По-настоящему опасным сценарий делает фоновое автообновление, включённое по умолчанию в Claude Code и Codex: уже установленный плагин можно подменить без запроса. Но автообновление по умолчанию действует лишь для встроенных магазинов на GitHub, так что пользователь, ставящий плагины только из штатных каталогов, не затронут.
Что исправлено
По словам Air, Anthropic закрыла дыру в Claude Code 2.1.179, OpenAI — в Codex 0.146.0. У GitHub Copilot патча нет, а Gemini CLI Google исправлять не будет: агент выводится из эксплуатации, пользователей направляют на Antigravity.
Air построила рабочий тест против всех четырёх агентов ещё в мае и уведомила разработчиков в июне. На 18 сентября идентификатор CVE не присвоен, ни один вендор не выпустил security-бюллетень, признаков реальных атак нет. Проверять привязку приходится на машине пользователя, а не в магазине, поэтому исправить это может только сам агент. Останется ли уже подменённый плагин после обновления или блокируются лишь будущие подмены — источники умалчивают.
Источник: The Hacker News
Комментарии
Войдите, чтобы комментировать.