Уязвимость в четырех популярных ИИ-агентах для написания кода позволяет злоумышленнику, контролирующему репозиторий плагина, подменить устанавливаемый плагин на вредоносный, даже если агент зафиксировал плагин на конкретной проверенной версии. Об этом в четверг сообщила компания Air Security.
По данным компании, Anthropic устранила уязвимость в Claude Code 2.1.179, а OpenAI — в Codex 0.146.0. GitHub Copilot исправления не имеет, а Google не планирует исправлять Gemini CLI, который выводится из эксплуатации.
Агенты устанавливают надстройки, называемые плагинами, из онлайн-маркетплейсов. Для безопасности маркетплейс привязывает каждый плагин к одной проверенной версии по его commit hash — длинной строке, идентифицирующей точную копию кода. Air Security обнаружила, что агенты загружают эту копию, но не проверяют, соответствует ли полученный код заявленной.
Ветвь (branch) — это именованная линия кода в репозитории. На хостинге кода, который позволяет создать ветвь с именем, имитирующим commit hash, владелец репозитория плагина может указать на другой код. Агент затем устанавливает этот другой код, продолжая сообщать, что работает с заблокированной версией.
Поскольку плагин выполняется с теми же правами доступа, что и пользователь агента, подмененный код может получить доступ к файлам пользователя, сохраненным учетным данным и системам, в которые он может войти, сообщает Air Security.
Этот трюк работает не везде. GitHub не разрешает имена ветвей или тегов, похожие на commit hash, согласно документации GitHub, поэтому плагин, установленный из репозитория GitHub, не подвержен этой уловке с ветвями. Air Security утверждает, что трюк работает на хостингах, которые допускают такие имена, например, Bitbucket или собственный git-сервер компании, которые также поддерживаются этими агентами.
The Hacker News проверила маркетплейсы, с которыми поставляются агенты, 18 сентября и обнаружила, что каждый плагин в сообществе Anthropic, а также в стандартных каталогах для Claude Code и Copilot, указывает на репозиторий GitHub.
Gemini CLI атакуется иначе. Вместо ветви, имитирующей хеш, Air Security утверждает, что его установщик может быть обманут репозиторием, основная ветвь которого называется FETCH_HEAD, а правило GitHub против имен, похожих на хеши, явно не блокирует это имя. Поэтому не установлено, что установка плагина Gemini CLI из GitHub позволяет избежать уязвимости, и Gemini CLI — это агент, который, по словам Air Security, не будет исправлен.
Атака, не требующая действий от жертвы, возможна благодаря фоновому автообновлению, которое позволяет агенту самостоятельно обновлять установленные плагины, заменяя доверенный плагин без запроса. Air Security сообщает, что эта функция включена по умолчанию в Claude Code и Codex.
Однако автообновление включено по умолчанию только для собственных встроенных маркетплейсов агентов, размещенных на GitHub, и отключено или опционально для внешних, согласно документации Anthropic и GitHub. Таким образом, пользователь, устанавливающий плагины только из стандартных маркетплейсов агентов на базе GitHub, не подвержен атаке с использованием имен ветвей, согласно данным Air Security и GitHub.
Air Security заявила, что в мае разработала рабочий тестовый вариант атаки против всех четырех агентов и уведомила поставщиков в июне. По состоянию на 18 сентября идентификатор CVE не был назначен, и ни один из четырех поставщиков не опубликовал рекомендацию по безопасности для этой уязвимости, как выяснила The Hacker News, и нет никаких признаков того, что она была использована в реальной атаке.
The Hacker News воспроизвела базовое поведение Git в локальном тесте, и собственный публичный фикс OpenAI описывает ту же ошибку: Git «может интерпретировать запрошенный SHA коммита как имя ветви», написала компания, что может привести к тому, что «источник плагина материализует другой коммит, чем тот, который он закрепил». Это изменение было выпущено в Codex 0.146.0.
Поскольку каждый агент проверяет блокировку на машине пользователя, а не на маркетплейсе, ни один маркетплейс не может исправить это для пользователей — исправление должно быть в самом агенте. Вот что известно о каждом агенте:
В примечаниях к выпуску Anthropic для версии 2.1.179 исправление не упоминается, а его наличие подтверждает Air Security. Что касается Copilot, Air Security сообщила Microsoft в июне, но исправление не было выпущено. Copilot может устанавливать плагины из источников, отличных от GitHub, где, по словам Air Security, и кроется риск.
Google прекратил поддержку потребительской версии Gemini CLI в июне и перенаправил пользователей на Antigravity, свой новый агент, который, по словам Air Security, недоступен для этой атаки. Google также заявил, что корпоративный доступ к Gemini CLI будет продолжаться с обновлениями. Неясно, входит ли исправление этой уязвимости в их число.
Те же исследователи ранее тестировали надстройки агентов. В июне The Hacker News освещала тест Air Security, в котором поддельный навык прошел проверку безопасности и достиг примерно 26 000 агентов, изменив внешнюю ссылку после завершения проверки. Plugin4Shell переносит эту идею от подмененной ссылки к подмененному плагину, скрытому за блокировкой версии.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Swati Khandelwal




