openai
Слепок памяти выдаёт токен и выпускает Codex из песочницы
Promtime
openaiНедоверенный код внутри Codex снимает фотографию памяти процесса, перебором находит в ней токен авторизации и выходит из песочницы на хост. Два таких обхода нашёл Орен Йомтов из Accomplish AI, о них пишет BleepingComputer.
Коротко
- Чтобы выполнить команды вне песочницы, атакующему достаточно, чтобы Codex просто разобрал вредоносный репозиторий: обход срабатывает даже в самом строгом режиме «только чтение» и заканчивается выполнением команд на хосте.
- Heapjack снимает слепок кучи V8 и перебором достаёт токен, Overpatch выводит права на запись из путей в самом патче и через символическую ссылку добирается до .zshrc, строка из которого выполняется при следующем запуске терминала.
- Обе дыры закрыли за восемь дней после сообщения от 12 августа 2026 года: Heapjack в сборке Codex Desktop 26.818.21641, Overpatch в версии Codex CLI 0.149.0, обновиться советуют всем.
Если вы не следили, песочница в Codex появилась не от лёгкой жизни. По данным InfoQ, OpenAI строила для Windows собственную изоляцию, потому что в системе нет примитива, который чисто ложится на автономного агента, а Windows Sandbox отпал: Codex нужен прямой доступ к рабочему окружению, инструментам и репозиториям. Там же сказано, что в OpenAI смотрели и на Mandatory Integrity Control. И там же приводятся слова Дэвида Визена из OpenAI: раньше пользователь либо подтверждал почти каждое действие агента, либо открывал полный доступ к системе.
Heapjack достаёт токен из той же кучи, где крутится чужой код
Heapjack целится в node_repl, компонент, который Codex Desktop прописывает в общий файл конфигурации. Он исполняет JavaScript, и в одном процессе Node.js оказываются и доверенный код, и код, пришедший из репозитория, а куча памяти у них одна на двоих.
Недоверенная часть вызывает v8.getHeapSnapshot(), получает содержимое кучи и перебором находит там случайный токен авторизации. Токен работает как пропуск: доверенный канал к родительскому процессу слушает того, кто его знает. Дальше через этот канал уходят команды, а родительский процесс работает уже вне песочницы.
Хватает того, что Codex разбирает вредоносный репозиторий в самом строгом режиме «только чтение»: итогом становится выполнение команд на хосте. Орен Йомтов из Accomplish AI сообщил об обеих находках 12 августа 2026 года, Heapjack закрыт в сборке Codex Desktop 26.818.21641.
Overpatch берёт права на запись из путей в самом патче
Вторая дыра живёт в Codex CLI, в инструменте apply_patch, который применяет к файлам присланные правки. Права на запись он выводит из путей, названных в самом патче: доступ выдаётся на родительскую папку любого указанного пути, а не проверяется по границе рабочей директории. Упомянули в патче /tmp, и права распространяются на корень диска.
Дальше атакующий совмещает ссылку на /tmp с записью через символическую ссылку в .zshrc. Символическая ссылка работает как указатель на другой файл: запись «в ссылку» уходит туда, куда она ведёт. Файл .zshrc хранит настройки оболочки zsh и читается при запуске терминала, поэтому дописанная строка выполнится вне песочницы при следующем его открытии.
Так обходится режим workspace-write, который должен держать агента внутри рабочей папки. Overpatch исправлен в Codex CLI 0.149.0, обе дыры закрыли за восемь дней после сообщения, а пользователям советуют обновиться до этих версий или более новых.
Снимок кучи V8 фиксирует все объекты процесса разом
По данным Leapcell, слепок кучи V8 фиксирует состояние на конкретный момент: все объекты, их типы, размеры и ссылки друг на друга, и обычно им ищут утечки памяти. Там же описано, что при создании снимка V8 останавливает выполнение приложения и сериализует всю кучу в JSON-подобный формат с именами конструкторов, приблизительными размерами объектов и связями между ними.
В Node.js, как пишет Netdata, в куче лежат все динамические данные: объекты, массивы, строки, замыкания, и она же самый большой сегмент памяти, общий для работающего кода. Примерно как доска в переговорке, на которой кто-то записал пароль: сфотографировать её может любой, кто зашёл в комнату, и отличить своего от чужого доска не умеет.
Чего в материалах нет, так это масштаба: сколько машин затронуто и были ли попытки эксплуатации в живых репозиториях, не сообщается, известны только даты обращения и версии с исправлениями. Странно, что в самом строгом режиме «только чтение» недоверенный код всё равно исполняется в одном процессе с доверенным, и строгость режима упирается в это соседство.
Что дальше с apply_patch
Открытый вопрос в том, начнёт ли apply_patch считать права от границы рабочей папки вместо путей, которые приходят вместе с патчем: в доступных материалах об этом ничего не сказано. Не говорится и о том, искали ли следы Heapjack и Overpatch на машинах разработчиков. Ближайшая точка проверки простая: релизы Codex CLI после 0.149.0 и сборки Codex Desktop после 26.818.21641.
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.
Из Google мы используем только имя и аватар. Почту не сохраняем.
