Критическая уязвимость в OpenAI Codex CLI позволяет атаковать машины разработчиков

vulnerability

Исследователи в области кибербезопасности обнаружили критическую уязвимость в инструменте OpenAI Codex CLI, который предназначен для интеграции искусственного интеллекта в рабочие процессы разработчиков. Уязвимость, получившая идентификатор CVE-2025-61260, позволяет злоумышленникам выполнять произвольные команды на компьютерах разработчиков без какого-либо взаимодействия с пользователем или его одобрения. По предварительным оценкам, её уровень опасности (CVSS) достигает 9.8 баллов.

Детали уязвимости

Уязвимость была выявлена специалистами Изабель Милл и Одедом Вануну 1 декабря 2025 года. Проблема кроется в механизме обработки локальных конфигурационных файлов проекта. Инструмент автоматически загружает и выполняет записи серверов Model Context Protocol (MCP, протокол контекста модели) из локальной конфигурации проекта каждый раз, когда разработчик запускает Codex внутри репозитория. Этот процесс происходит в фоновом режиме, без запроса подтверждения, вторичной проверки или повторного контроля при изменении значений.

Механизм атаки относительно прост. Злоумышленнику, имеющему права на запись в репозиторий или возможность создавать pull request (запрос на слияние кода), достаточно создать два файла. Первый файл ".env" перенаправляет конфигурационный каталог Codex в локальную папку проекта. Второй файл "./.codex/config.toml" содержит вредоносные записи сервера MCP с произвольными командами. Когда разработчик клонирует такой репозиторий и запускает Codex, инструмент автоматически исполняет эти команды в контексте пользователя, не показывая никаких предупреждений.

Исследователи из Checkpoint продемонстрировали несколько вариантов использования уязвимости. В частности, они создали доказательные концепции (PoC), включающие детерминированные атаки на создание файлов и выполнение обратного подключения (reverse shell). Все эти действия выполнялись на машине жертвы абсолютно незаметно. Следовательно, атака открывает несколько опасных сценариев.

Во-первых, злоумышленники могут получить устойчивый удалённый доступ, внедрив в конфигурационный файл код для обратного подключения. После этого доступ будет активироваться при каждом запуске Codex. Во-вторых, они могут немедленно выполнить любую команду оболочки, определённую в записи MCP, получив полный контроль над системой разработчика и его учётными данными. Обычно на рабочих станциях разработчиков хранятся крайне чувствительные активы: токены аутентификации в облачных сервисах, SSH-ключи, исходный код и учётные данные доступа. Всё это может быть напрямую похищено.

Особую опасность представляет модель доверия, основанная на местоположении конфигурации, а не на её содержимом. Изначально злоумышленник может добавить в репозиторий безвредную конфигурацию. После одобрения и слияния кода он способен заменить её на версию с вредоносными командами, создав скрытую бэкдор-уязвимость (backdoor, "чёрный ход"), которая активируется уже после проверки.

Потенциальное воздействие выходит далеко за рамки отдельных разработчиков. Если системы непрерывной интеграции (CI), инструменты автоматизации или агенты сборки запускают Codex для проверенного кода, заражение может распространиться на артефакты сборки и последующие этапы развёртывания. Загрязнённые шаблоны или популярные проекты с открытым исходным кодом могут стать оружием против множества пользователей после одного вредоносного коммита.

Фундаментальная проблема этой уязвимости заключается в нарушении границ безопасности, которых разработчики ожидают от своих инструментов. Файлы, поставляемые в рамках проекта и естественным образом воспринимаемые как часть легитимного репозитория, превращаются в доверенный исполняемый код без какой-либо валидации. Для успешной атаки достаточно лишь прав на запись в репозиторий или успешного слияния pull request. После этого выполнение кода произойдёт автоматически на машине любого разработчика, который получит изменения и запустит Codex.

Таким образом, уязвимость создаёт исключительно эффективный вектор для атак на цепочку поставок программного обеспечения. В отличие от многих уязвимостей, требующих множества шагов или взаимодействия с пользователем, эта проблема бесшовно интегрируется в повседневный рабочий процесс, что серьёзно затрудняет её обнаружение. Разработчик не получает никаких индикаторов того, что в момент запуска привычного инструмента исполняются произвольные команды.

Ссылки

Комментарии: 0