Изследователи по сигурността откриха два начина за излизане от изолираната среда на OpenAI Codex, като един от тях позволява изпълнението на команди върху машината на разработчик от най-строго ограничения режим на Codex, без подкана за одобрение и без да се показва нищо на екрана.
И двете уязвимости са докладвани на OpenAI на 12 август и са отстранени в рамките на осем дни, според Орен Йомтов от Accomplish AI.
По-сериозният от двата проблема, който изследователите нарекоха Heapjack, превръща рутинно действие в отдалечено изпълнение на код: отваряте чуждо хранилище в Codex, задавате въпрос относно кода и този, който е написал това хранилище, получава възможност да изпълнява команди извън изолираната среда на вашия компютър.
Codex е агент за програмиране на OpenAI, наличен като инструмент с команден ред и като настолно приложение. Подобно на конкуриращи се агенти, той изпълнява действията на модела в изолирана среда, така че ненадежден код да не може да засегне останалата част от системата. И двете техники за преодоляване на защитата работят чрез компрометиране на тази граница отвътре.
Heapjack
Техниката Heapjack, описана в анализа на Йомтов, е насочена към компонент, наречен node_repl, който Codex Desktop записва в глобалния файл '~/.codex/config.toml' по време на инсталацията.
Липсва опция за потвърждение или настройка за изключване, и тъй като записът се намира в споделената конфигурация, обикновените потребители на Codex CLI я наследяват, без да са били питани.
node_repl изпълнява един Node.js процес, съдържащ два отделни JavaScript контекста за изпълнение. Единият е доверен и съдържа собствения код на OpenAI. Другият е недоверен и изпълнява кода на агента. Довереният контекст доказва автентичността си чрез представяне на случаен токен, генериран наново при всяко стартиране.

Недовереният код прави моментна снимка на хипа с 'v8.getHeapSnapshot()' и изпробва всеки стринг с формат на UUID. Неправилното предположение връща „not authorized“. Валиден токен с грешен аргумент връща същинска грешка при валидация, което потвърждава на атакуващия, че токенът е правилен.
Разполагайки с токена, недовереният код изпраща собствена заявка през същата комуникационна тръба (pipe), която довереният контекст използва за връзка с родителен процес, работещ извън изолираната среда.
Родителският процес проверява токена, потвърждава валидността му и изпълнява задачата. Концептуалният зловреден код (PoC) използва системната команда 'open', за да стартира приложение напълно извън дървото от процеси на Codex. Същият достъп позволява връзка с всеки Unix сокет (като Docker daemon сокетът е очевидна цел), както и до инструмент за редактиране на глобалния конфигурационен файл.
Всичко това се случва при режим с достъп само за четене (read-only) — най-строгата изолирана среда, където агентът не би трябвало да може да записва нищо.
Overpatch
Втората уязвимост, Overpatch, се намира в отворения код на Codex CLI. В режим за писане в работната област (workspace-write) агентът има право да записва само в папката на проекта, а командно-редовите заявки към домашната директория се отхвърлят.
Изследователите са успели да накарат собствения инструмент за корекции на Codex, apply_patch, въпреки това да извърши запис там.
Инструментът предоставя достъп за запис до родителската папка на всеки път, посочен в корекцията. Ако се посочи '/tmp', той предоставя достъп за запис до корена на диска.
Работещата атака използва корекция с две промени: едната посочва '/tmp' и не прави нищо полезно освен да разшири правата, а другата добавя ред към '.zshrc' чрез символна връзка (symlink) към домашната директория.
Ако се премахне първата промяна, записът се отхвърля. С нея обаче следващият терминал, който разработчикът отвори, изпълнява инжектирания ред на атакуващия извън изолираната среда.
Една и съща основна грешка
И двете уязвимости споделят идентичен модел: механизмът за прилагане на ограниченията е разположен вътре в обекта, който трябва да бъде ограничаван. apply_patch определя собствените си права въз основа на входни данни от атакуващия. node_repl съхранява тайния ключ за разграничаване на доверения от недоверения код в същата памет, в която се намира недовереният код.
И в двата случая на изолираната среда е било указано отвътре да допусне изпълнението.
Този клас уязвимости не е нов. През юли 2026 г. изследователи от Pillar Security демонстрираха същия концептуален подход при Cursor, Codex, Gemini CLI и Google Antigravity, при който агент, намиращ се в изолирана среда, записва файл, който по-късно се изпълнява от доверен инструмент извън нея.
В коментар към публикацията на Йомтов в X, потребител отбелязва, че „V8 контекстите изолират глобалните променливи, а не паметта, така че изолираната среда е била просто обещание, което хипът никога не е потвърждавал“. Друг описва границата на доверие като „преграда за стая“. Включеното по подразбиране поведение също привлече критики, като бе повдигнат въпросът защо привилегирован токен изобщо е достъпен от недоверен JavaScript.
Какво трябва да се направи
OpenAI отстрани Heapjack в Codex Desktop версия 26.818.21641 и Overpatch в Codex CLI 0.149.0, според Accomplish.
Потребителите трябва да инсталират тези или по-нови версии. Йомтов отбелязва бързата реакция на OpenAI за коригиране на двата проблема в рамките на осем дни след доклада.
BleepingComputer се свърза с OpenAI за коментар преди публикуването на статията.