Побег из песочницы OpenAI Codex: две дыры для запуска команд на машине разработчика

· Безопасность
Исследователи нашли два способа вырваться из песочницы кодового агента OpenAI Codex — один из них позволял выполнять команды на компьютере разработчика из самого строгого режима, без запроса и без единого сообщения на экране. OpenAI закрыла обе бреши.

cover.svg

Исследователь Орен Йомтов из компании Accomplish AI описал два способа обойти изоляцию Codex — кодового агента OpenAI, доступного как утилита командной строки и как настольное приложение. Как и конкуренты, Codex выполняет действия модели внутри песочницы, чтобы недоверенный код не дотянулся до системы. Обе техники ломают эту границу изнутри. Уязвимости сообщили OpenAI 12 августа и закрыли за восемь дней.

Heapjack

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

Мишень — компонент node_repl, который настольная версия Codex при установке прописывает в общий файл ~/.codex/config.toml. Отключить его нельзя, а поскольку запись лежит в общем конфиге, тот же инструмент наследуют и пользователи обычного CLI, которых ни о чём не спрашивают.

node_repl держит в одном процессе Node.js два контекста JavaScript: доверенный — с кодом OpenAI, и недоверенный — с кодом агента. Доверенная сторона подтверждает свои права случайным токеном, генерируемым при каждом запуске. Беда в том, что оба контекста живут в одном процессе и делят одну кучу памяти, так что токен — просто строка, которую недоверенная сторона может прочитать.

Недоверенный код снимает слепок кучи через v8.getHeapSnapshot() и перебирает все строки, похожие на UUID. Неверная догадка возвращает «не авторизовано», а верный токен с плохим аргументом — настоящую ошибку проверки, что и выдаёт правильный ключ. С токеном код пишет собственный запрос в тот же канал, по которому доверенный контекст общается с родительским процессом вне песочницы. Тот проверяет токен и выполняет работу. В демонстрации использовалась системная команда open; тот же доступ открывает любой Unix-сокет — очевидная цель — сокет демона Docker. Всё это работает в режиме «только чтение» — самом строгом, где агент вообще не должен ничего писать.

Overpatch

Вторая брешь — в открытом Codex CLI. В режиме записи в рабочую папку агент может писать только внутри проекта. Исследователи заставили писать за её пределы собственный инструмент патчей Codex — apply_patch, который выдаёт право записи в родительский каталог каждого упомянутого пути. Укажешь /tmp — получишь доступ к корню диска. Рабочий эксплойт содержит два изменения: одно бесполезное — с путём /tmp, лишь расширяющее права, и второе — дописывающее строку в .zshrc через симлинк в домашний каталог. Уберёшь первое — запись отклонят. С ним следующий открытый терминал выполнит строку атакующего.

Одна и та же ошибка

Оба бага одной формы: механизм защиты жил внутри того, что должен был защищать. apply_patch выводил свои права из данных атакующего, а node_repl хранил разделяющий секрет в той же памяти, что и недоверенный код. Класс уязвимости не нов: в июле 2026 года Pillar Security показала ту же идею на Cursor, Codex, Gemini CLI и Antigravity.

OpenAI устранила Heapjack в сборке Codex Desktop 26.818.21641, а Overpatch — в Codex CLI 0.149.0. Пользователям стоит обновиться до этих или более поздних версий.


Источник: Bleeping Computer

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.