Plugin4Shell позволяет владельцу вредоносного репозитория подменить код плагина, хотя маркетплейс одобрил и закрепил конкретную версию по хешу коммита. Уязвимость затрагивает четыре ИИ-агента для программирования: Anthropic Claude Code, OpenAI Codex, GitHub Copilot и Google Gemini CLI. Агент запрашивает нужный Git-коммит, но затем не сверяет фактически полученный код с закреплённым commit hash, или commit SHA.

Сценарий начинается с публикации безопасного плагина. После проверки маркетплейс фиксирует точный снимок кода по хешу коммита. На Git-сервере, разрешающем имена веток, похожие на хеши, владелец создаёт ветку с таким именем и направляет её на вредоносный код. Git способен, по формулировке OpenAI, «интерпретировать запрошенный SHA коммита как имя ветки». В результате источник плагина может «предоставить другой коммит вместо закреплённого», а агент всё равно сообщает об установке одобренной версии.
Цена такой подмены высока: плагины работают с правами пользователя агента. Вредоносный код получает возможность читать локальные файлы и сохранённые учётные данные, обращаться к доступным пользователю системам и сервисам, а также добираться до закрытых ресурсов разработки. Если агент запущен на рабочей машине с токенами, SSH-ключами и доступом к внутренней инфраструктуре, формально небольшая ошибка проверки версии превращается в канал компрометации окружения.
Air Security утверждает, что Anthropic устранила проблему в Claude Code 2.1.179, поэтому требуется версия 2.1.179 или новее. В примечаниях Anthropic к этому выпуску исправление не указано: сведения о нём исходят от Air Security. OpenAI закрыла уязвимость в Codex 0.146.0 и публичным изменением подтвердила технический механизм атаки. Для GitHub Copilot, по данным Air, исправления нет; Microsoft уведомили ещё в июне. Gemini CLI, как сообщает Air, исправлять не станут, а пользователям рекомендуют перейти на Antigravity.
Риск зависит от хостинга. GitHub запрещает названия веток и тегов, похожие на хеши коммитов, поэтому обычный вариант атаки через такую ветку для размещённых там плагинов не работает. Bitbucket и корпоративные Git-серверы могут разрешать подобные имена. GitHub Copilot поддерживает плагины из внешних репозиториев, и именно там, по оценке Air Security, сохраняется опасность.
18 сентября The Hacker News проверило встроенные маркетплейсы агентов. Все плагины в каталоге сообщества Anthropic, стандартном каталоге Claude Code и стандартном каталоге Copilot ссылались на GitHub. Пользователи, устанавливающие плагины только из этих каталогов, не подвержены обычной атаке с веткой, названной как хеш. Это снижает практический риск, но не исправляет ошибку в самих агентах и не защищает внешние маркетплейсы.
У Gemini CLI обнаружен отдельный вариант: основная ветка репозитория может называться FETCH_HEAD. Запрет GitHub на хешеподобные имена явно не исключает FETCH_HEAD, поэтому безопасность размещённых на GitHub плагинов Gemini CLI не установлена. Google прекратила обслуживать потребительскую версию Gemini CLI в июне и направила пользователей в Antigravity; по данным Air, новый агент этой атаке не подвержен. Корпоративный доступ к Gemini CLI продолжит получать обновления, однако Google не уточнила, войдёт ли туда исправление Plugin4Shell.
Фоновое автообновление способно убрать необходимость в действиях жертвы: уже доверенный плагин заменяется без нового запроса на установку. Air сообщает, что Claude Code и Codex включают автообновление по умолчанию. Но стандартный режим распространяется лишь на встроенные маркетплейсы, а они используют GitHub. Согласно документации Anthropic и GitHub, автоматическое обновление внешних каталогов отключено либо включается отдельно. Для пользователей только стандартных каталогов сценарий без взаимодействия поэтому заметно ограничен.
Air Security собрала рабочую атаку против всех четырёх агентов в мае и уведомила поставщиков в июне. К 18 сентября ни одна компания не выпустила отдельного бюллетеня безопасности, CVE-идентификатор отсутствовал, а подтверждений реальной эксплуатации не было. The Hacker News независимо воспроизвело поведение Git локально; выпуск Codex 0.146.0 со стороны OpenAI дополнительно подтвердил причину сбоя.
Маркетплейс не может самостоятельно закрыть Plugin4Shell: проверка закреплённой версии выполняется агентом на компьютере пользователя. Исправление должно заставить каждый агент сравнивать хеш фактически загруженного коммита с одобренным commit SHA и прекращать установку при несовпадении. Пока неясно, обнаруживают ли обновлённые агенты ранее подменённые плагины и удаляют ли их либо лишь блокируют будущие подстановки.
В июне The Hacker News уже описывало другой эксперимент Air Security: поддельный навык прошёл сканеры безопасности и достиг примерно 26 000 агентов, после чего исследователи изменили содержимое внешней ссылки, ранее прошедшей проверку. Тогда подменялся материал за доверенной ссылкой; Plugin4Shell переносит тот же приём на целый плагин, спрятанный за внешне строгой фиксацией версии. Практическая защита сейчас сводится к обновлению Claude Code и Codex, отказу от непроверенных внешних Git-хостов, переходу с потребительского Gemini CLI на Antigravity и ручной проверке уже установленных плагинов.

Изображение носит иллюстративный характер
Сценарий начинается с публикации безопасного плагина. После проверки маркетплейс фиксирует точный снимок кода по хешу коммита. На Git-сервере, разрешающем имена веток, похожие на хеши, владелец создаёт ветку с таким именем и направляет её на вредоносный код. Git способен, по формулировке OpenAI, «интерпретировать запрошенный SHA коммита как имя ветки». В результате источник плагина может «предоставить другой коммит вместо закреплённого», а агент всё равно сообщает об установке одобренной версии.
Цена такой подмены высока: плагины работают с правами пользователя агента. Вредоносный код получает возможность читать локальные файлы и сохранённые учётные данные, обращаться к доступным пользователю системам и сервисам, а также добираться до закрытых ресурсов разработки. Если агент запущен на рабочей машине с токенами, SSH-ключами и доступом к внутренней инфраструктуре, формально небольшая ошибка проверки версии превращается в канал компрометации окружения.
Air Security утверждает, что Anthropic устранила проблему в Claude Code 2.1.179, поэтому требуется версия 2.1.179 или новее. В примечаниях Anthropic к этому выпуску исправление не указано: сведения о нём исходят от Air Security. OpenAI закрыла уязвимость в Codex 0.146.0 и публичным изменением подтвердила технический механизм атаки. Для GitHub Copilot, по данным Air, исправления нет; Microsoft уведомили ещё в июне. Gemini CLI, как сообщает Air, исправлять не станут, а пользователям рекомендуют перейти на Antigravity.
Риск зависит от хостинга. GitHub запрещает названия веток и тегов, похожие на хеши коммитов, поэтому обычный вариант атаки через такую ветку для размещённых там плагинов не работает. Bitbucket и корпоративные Git-серверы могут разрешать подобные имена. GitHub Copilot поддерживает плагины из внешних репозиториев, и именно там, по оценке Air Security, сохраняется опасность.
18 сентября The Hacker News проверило встроенные маркетплейсы агентов. Все плагины в каталоге сообщества Anthropic, стандартном каталоге Claude Code и стандартном каталоге Copilot ссылались на GitHub. Пользователи, устанавливающие плагины только из этих каталогов, не подвержены обычной атаке с веткой, названной как хеш. Это снижает практический риск, но не исправляет ошибку в самих агентах и не защищает внешние маркетплейсы.
У Gemini CLI обнаружен отдельный вариант: основная ветка репозитория может называться FETCH_HEAD. Запрет GitHub на хешеподобные имена явно не исключает FETCH_HEAD, поэтому безопасность размещённых на GitHub плагинов Gemini CLI не установлена. Google прекратила обслуживать потребительскую версию Gemini CLI в июне и направила пользователей в Antigravity; по данным Air, новый агент этой атаке не подвержен. Корпоративный доступ к Gemini CLI продолжит получать обновления, однако Google не уточнила, войдёт ли туда исправление Plugin4Shell.
Фоновое автообновление способно убрать необходимость в действиях жертвы: уже доверенный плагин заменяется без нового запроса на установку. Air сообщает, что Claude Code и Codex включают автообновление по умолчанию. Но стандартный режим распространяется лишь на встроенные маркетплейсы, а они используют GitHub. Согласно документации Anthropic и GitHub, автоматическое обновление внешних каталогов отключено либо включается отдельно. Для пользователей только стандартных каталогов сценарий без взаимодействия поэтому заметно ограничен.
Air Security собрала рабочую атаку против всех четырёх агентов в мае и уведомила поставщиков в июне. К 18 сентября ни одна компания не выпустила отдельного бюллетеня безопасности, CVE-идентификатор отсутствовал, а подтверждений реальной эксплуатации не было. The Hacker News независимо воспроизвело поведение Git локально; выпуск Codex 0.146.0 со стороны OpenAI дополнительно подтвердил причину сбоя.
Маркетплейс не может самостоятельно закрыть Plugin4Shell: проверка закреплённой версии выполняется агентом на компьютере пользователя. Исправление должно заставить каждый агент сравнивать хеш фактически загруженного коммита с одобренным commit SHA и прекращать установку при несовпадении. Пока неясно, обнаруживают ли обновлённые агенты ранее подменённые плагины и удаляют ли их либо лишь блокируют будущие подстановки.
В июне The Hacker News уже описывало другой эксперимент Air Security: поддельный навык прошёл сканеры безопасности и достиг примерно 26 000 агентов, после чего исследователи изменили содержимое внешней ссылки, ранее прошедшей проверку. Тогда подменялся материал за доверенной ссылкой; Plugin4Shell переносит тот же приём на целый плагин, спрятанный за внешне строгой фиксацией версии. Практическая защита сейчас сводится к обновлению Claude Code и Codex, отказу от непроверенных внешних Git-хостов, переходу с потребительского Gemini CLI на Antigravity и ручной проверке уже установленных плагинов.