Корона
Безопасность

Дыра сразу в четырёх ИИ-помощниках программиста: чужой код запускался без единого клика

Уязвимость Plugin4Shell позволяла подменить проверенное дополнение вредоносным. Claude Code и Codex уже исправлены, GitHub Copilot на момент раскрытия — нет, Gemini CLI чинить не будут.

3 мин чтения
Обложка: подсвеченная клавиатура, значки Claude, OpenAI, Copilot и Gemini

Что произошло

17 сентября исследователи компании Air Security раскрыли уязвимость, которую назвали Plugin4Shell. Она нашлась сразу в четырёх самых распространённых ИИ-помощниках для работы с кодом: Claude Code, OpenAI Codex, GitHub Copilot и Gemini CLI. Саму ошибку обнаружили в мае, разработчиков предупредили в июне, а публично рассказали спустя три месяца.

Суть — в одной пропущенной проверке. Помощник ставит дополнение не какое придётся: он закрепляет его за конкретной проверенной версией, за отпечатком из сорока знаков, который указывает на неё однозначно. Этот отпечаток помощник и запрашивает — но, получив код, не сверяет, действительно ли пришла та самая версия.

На этом и строится атака. Тот, кто распоряжается хранилищем с кодом дополнения, заводит там ветку, названную ровно тем же набором знаков, что и закреплённый отпечаток, и делает её основной. При выборе между веткой и версией Git предпочитает имя ветки — и помощник забирает подменённый код, считая, что взял проверенный. Для Gemini CLI работает похожий приём с веткой по имени FETCH_HEAD.

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

Почему это важно

Помощник работает с правами самого разработчика. А это доступ к исходному коду, к ключам от облака, к ключам SSH, к внутренним хранилищам кода и к тому, что уже запущено в работу. Выполненный таким образом чужой код получает ровно тот же доступ.

Починка при этом простая: после получения кода достаточно проверить, на какой версии оказалась рабочая копия, и остановиться, если версия не та. Настораживает не сложность ошибки, а то, что одно и то же упущение независимо друг от друга допустили четыре команды из четырёх. Похоже, речь не о случайном недосмотре, а об общем для отрасли допущении, которое никто не перепроверял.

Что делать

Claude Code исправлен в версии 2.1.179, Codex — в 0.146.0. Если вы пользуетесь любым из них, обновитесь: в обоих обновление дополнений идёт в фоне, поэтому откладывать здесь нечего.

GitHub Copilot на момент раскрытия исправления не получил. Gemini CLI компания Google объявила устаревшим и чинить не собирается — пользователям предлагают перейти на Antigravity.

Что пока неизвестно

Пользовался ли кто-нибудь уязвимостью до раскрытия — неизвестно: о подтверждённых случаях атаки не сообщается. Неясно и то, когда исправление дойдёт до Copilot и дойдёт ли вообще.

Источники

Читайте также