Побег из песочницы OpenAI Codex: две дыры для запуска команд на машине разработчика
Исследователь Орен Йомтов из компании 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
Комментарии
Войдите, чтобы комментировать.