Ilustrasi abstrak pada latar biru dongker-hitam pekat: sebuah bilik kaca tertutup yang tinggi berdiri di sebelah kiri, bagian dalamnya penuh dengan material kristalin biru pucat yang bercahaya; dari sebuah cacat di dekat dasar kaca, satu filamen sian terang keluar, membentang ke kanan sepanjang pipa baja bertekstur sikat, meninggalkan pipa dan bercabang menjadi tiga utas amber pendek di ruang gelap terbuka. Busur amber samar tetap terperangkap di dalam kaca. Tidak ada teks, angka, orang, atau logo organisasi yang muncul. Logo OrcaRouter dikompositkan di sudut kanan bawah.
AI Safety Incidents

Dua cara keluar dari sandbox OpenAI Codex: Heapjack dan Overpatch

Penulis

Rowan Sterling

Tanggal Terbit

Model terbaru · 20Lihat semua model →
Benchmark: Artificial Analysis · diperbarui setiap hari
Kembali ke semua artikel

Pada 15 September 2026, Oren Yomtov, seorang peneliti keamanan utama di Accomplish AI, menerbitkan laporan teknis tentang dua cara terpisah untuk keluar dari sandbox yang mengelilingi agen pengodean Codex milik OpenAI. Keduanya dilaporkan kepada OpenAI pada 12 Agustus 2026 dan keduanya diperbaiki dalam delapan hari, menurut tulisannya: Heapjack di Codex Desktop build 26.818.21641 dan Overpatch di Codex CLI 0.149.0. Heapjack adalah yang lebih serius di antara keduanya. Ia tidak memerlukan apa pun dari orang yang diserang selain membuka repositori di Codex dan mengajukan pertanyaan tentang kode tersebut, dan ia berjalan pada mode hanya-baca, mode paling ketat yang ditawarkan produk, tanpa prompt persetujuan dan tanpa apa pun yang ditampilkan di layar. Tidak ada CVE yang diberikan untuk salah satu cacat tersebut dan tidak ada advisory OpenAI tersendiri yang diterbitkan, menurut Cloud Security Alliance, dan tidak ada orang yang dilaporkan dirugikan oleh keduanya. Itu dikatalogkan bersama entri pengendalian agen lain tahun ini di arsip insiden AI, yang setiap catatannya memuat dokumen sumbernya, tingkat keyakinan, dan penanda sengketa.

Heapjack: token itu berada di heap yang dapat dibaca oleh pihak yang tidak tepercaya

Codex Desktop tidak bertanya sebelum memasang komponen yang diserang Yomtov. Saat pemasangan, ia menulis blok node_repl ke file konfigurasi global di ~/.codex/config.toml, dan Yomtov melaporkan bahwa tidak ada opt-in dan tidak ada pengaturan yang mematikannya. Karena entri tersebut berada dalam konfigurasi bersama, bukan dalam pilihan per pengguna, pengguna Codex CLI biasa mewarisi alat yang sama tanpa pernah ditanya.

Alat node_repl itu sendiri adalah program native yang berjalan di luar sandbox. Alat ini dapat membuka aplikasi, terhubung ke soket Unix, dan mengedit file konfigurasi global. Yang dijalankannya di dalam sandbox adalah satu proses Node.js, dan proses itu memiliki dua konteks eksekusi JavaScript: satu yang tepercaya yang berisi kode milik OpenAI sendiri, dan satu yang tidak tepercaya yang menjalankan apa pun yang diminta untuk dilakukan oleh agen.

Konteks tepercaya membuktikan bahwa dirinya tepercaya dengan menyajikan token acak, yang dibuat baru pada setiap eksekusi. Itu dimaksudkan menjadi batas antara kedua konteks. Namun bukan demikian, karena kedua konteks berada dalam satu isolate V8 yang berbagi satu heap memori, sehingga token tersebut adalah string yang berada di memori yang dapat dibaca oleh kode tak tepercaya. Seorang komentator yang menanggapi pengungkapan di X menyampaikan poin itu lebih blak-blakan, dalam kalimat yang dikutip BleepingComputer: "Konteks V8 mengisolasi global, bukan memori, jadi sandbox itu sebenarnya hanyalah janji yang tidak pernah disetujui oleh heap." Itu adalah karakterisasi, bukan bukti; buktinya adalah proof of concept.

Eksploitasi Yomtov melakukan persis seperti yang tersirat dari deskripsi itu. JavaScript yang tidak tepercaya memanggil v8.getHeapSnapshot(), memindai snapshot yang dihasilkan untuk string yang berbentuk UUID, dan menguji setiap kandidat. Tebakan yang salah akan dibalas dengan "not authorized". Token yang benar yang dipasangkan dengan argumen yang tidak valid akan mengembalikan error validasi yang sesungguhnya. Perbedaan antara kedua pesan error tersebut adalah oracle yang mengidentifikasi nilai yang tepat.

Dengan token di tangan, proses yang di-sandbox menulis permintaan JSON-nya sendiri ke deskriptor berkas 1 — pipa stdout yang sama yang digunakan konteks tepercaya untuk menjangkau induk native. Induk memvalidasi token, menemukan token yang valid, dan mengerjakan tugasnya. Dalam proof of concept, tugas itu adalah perintah open sistem, yang menyerahkan permintaan ke launchd dan meluncurkan aplikasi sepenuhnya di luar pohon proses Codex. Token yang sama memungkinkan koneksi ke soket Unix arbitrer, termasuk soket daemon Docker, dan menjangkau alat untuk menyunting berkas konfigurasi global.

Semuanya berjalan dalam mode baca-saja, mode yang dipilih pengguna berhati-hati justru karena repositori di hadapan mereka tidak tepercaya. Tidak ada prompt persetujuan yang muncul pada tahap mana pun. Skenario praktisnya singkat: buka repositori hasil kloning di Codex, dalam mode baca-saja, dan ajukan pertanyaan tentang kode tersebut. Siapa pun yang menulis repositori itu mendapatkan eksekusi perintah tanpa sandbox di mesin tersebut, dan tidak ada apa pun di layar yang mengatakan demikian.

Comparison card titled 'Two escapes, one shape', subtitled 'Both broke the boundary from the inside, and neither showed the user anything.' Two columns headed Heapjack and Overpatch carry six rows: Surface, reading 'Codex Desktop, node_repl tool' and 'Codex CLI, apply_patch tool'; Root cause, reading 'Trusted and untrusted V8 contexts share one memory heap' and 'Write permission derived from the parent folder of each path in a patch'; Defeats, reading 'Read-only mode, the strictest setting' and 'Workspace-write confinement'; Approval prompt, reading 'None shown' in both columns; Outcome, reading 'Unsandboxed native execution via launchd, plus Docker socket access' and 'Persistent execution from a modified .zshrc on the next terminal'; and Fixed in, reading 'Desktop build 26.818.21641' and 'CLI 0.149.0'. An amber footer strip reads 'Both enforcement mechanisms lived inside the component they were meant to enforce.'

Overpatch: alat patch yang memberikan induk kepada setiap hal yang disentuhnya

Cacat kedua terletak pada Codex CLI, agen command-line open-source, dan ini adalah bug izin, bukan bug memori. Dalam mode workspace-write, agen dapat menulis di dalam folder proyek dan tidak di tempat lain; perintah shell yang diarahkan ke direktori home ditolak. Alat apply_patch seharusnya menjaga batas itu. Namun, alat tersebut memperoleh izinnya dari path yang disebutkan dalam patch yang diterapkannya, dan memberikan akses tulis ke direktori induk dari masing-masing path.

Sebutkan sebuah path di bawah /tmp dalam sebuah patch dan pemberian akses akan melebar ke akar disk, karena induk dari /tmp adalah /. Itulah seluruh triknya.

Eksploit yang berfungsi menggunakan dua entri dalam satu patch. Entri pertama menyebut /tmp dan tidak melakukan hal berguna — gagal, karena file tidak dapat menimpa direktori — dan hanya ada untuk memperlebar izin yang diberikan. Entri kedua menambahkan satu baris ke .zshrc melalui symlink ke direktori home. Hapus entri pertama dan penulisan ditolak. Pertahankan entri itu, dan terminal berikutnya yang dibuka pengembang akan menjalankan baris penyerang tanpa sandbox, dengan sandbox sama sekali tidak lagi terlibat.

Hal itu menjadikan Overpatch sebagai bug persistensi, bukan serangan sekali jalan. File startup yang telah diracuni akan dieksekusi lagi pada setiap shell yang dibuka pengembang, sampai seseorang membaca .zshrc dan menyadari baris yang ditambahkan — itulah sebabnya panduan Cloud Security Alliance adalah mencarinya, bukan menunggu munculnya gejala.

Kedua bug menempatkan penegakan di dalam hal yang sedang ditegakkan

Kerangka Yomtov sendiri adalah bagian yang melampaui Codex. apply_patch menghitung izinnya sendiri dari input yang disediakan penyerang. node_repl menyimpan rahasia yang memisahkan kode tepercaya dari kode tidak tepercaya di memori yang bisa dibaca oleh kode tidak tepercaya. Dalam setiap kasus, sandbox diberi tahu, dari dalam, untuk membiarkan sesuatu lewat.

Pola ini bukan hal baru. BleepingComputer, yang melaporkan pengungkapan tersebut pada 20 September 2026, mencatat bahwa pada Juli 2026 para peneliti Pillar Security mendemonstrasikan gagasan yang sama pada Cursor, Codex, Gemini CLI, dan Antigravity milik Google, di mana agen yang tetap berada di dalam sandbox-nya menulis file yang kemudian dieksekusi oleh alat tepercaya di luar sandbox. Yang membedakan pasangan Codex adalah bypass read-only di Heapjack dan tidak adanya pengaturan untuk menonaktifkan komponen yang membawanya.

Perbaikan-perbaikannya, dan apa yang telah dan belum dikatakan OpenAI

OpenAI memperbaiki Heapjack di Codex Desktop build 26.818.21641 dan Overpatch di Codex CLI 0.149.0, menurut Accomplish. Keduanya hadir dalam delapan hari sejak laporan 12 Agustus — paling lambat 20 Agustus, berdasarkan pembacaan sederhana atas linimasa itu — dan Yomtov memuji OpenAI atas perbaikan cepat tersebut.

OpenAI tidak menerbitkan pengumuman keamanan tersendiri untuk kedua celah tersebut, dan tidak ada pengenal CVE yang diberikan; Cloud Security Alliance mencatat kedua ketiadaan itu dalam catatan riset bertanggal 22 September 2026. Ketika diminta berkomentar, seorang juru bicara OpenAI mengatakan kepada BleepingComputer: "Kami berterima kasih kepada para peneliti karena telah menghubungi kami dan membagikan temuan mereka. Kami telah menangani kedua masalah tersebut pada Agustus, tetapi kami terus memperkuat sandbox kami, dengan pembaruan terkini yang memperketat kontrol atas lokasi tempat agen dapat menulis file dan memperluas pengujian perlindungan tersebut di berbagai platform."

Pernyataan itu mengonfirmasi perbaikan-perbaikan tersebut dan tidak mengatakan apa pun tentang mekanismenya. Pernyataan itu tidak menyebut apakah perubahan Agustus menghapus pola desain tersebut atau menutup dua jalur spesifik untuk keluar dari pola itu. Tidak ada pihak di luar OpenAI yang mengatakan hal itu juga.

Timeline card titled 'Report to public write-up: 34 days', subtitled 'The fix came in eight. The explanation did not come for another month.' Four dates sit on a horizontal rail: 12 AUG, 'Reported to OpenAI', noting both flaws came in one report from Oren Yomtov at Accomplish; 20 AUG, 'Fixed within eight days', noted as arithmetic from the stated eight-day figure, with OpenAI confirming it acted in August; 15 SEP, 'Write-up published', noted as the date the archive files this record under; and 22 SEP, 'Third-party reaction', noting the Uganda CERT advisory rated Red and the Cloud Security Alliance research note. A footer strip reads 'No CVE was assigned at any point on this timeline, and no standalone OpenAI advisory was published.'

Apa yang sudah mapan, dan apa yang bergantung pada satu peneliti

Arsip mencatat entri ini sebagai temuan riset, tingkat keparahan tinggi, wilayah global, keyakinan B — terdokumentasi, tetapi berasal dari satu sumber atau sumber sekunder — tidak diperdebatkan, tanpa kerugian nyata yang tercatat. Tingkat itu adalah lensa yang tepat untuk membaca sisa tulisan ini, karena perbedaan antara apa yang dikonfirmasi oleh beberapa pihak dan apa yang hanya dinyatakan oleh penemunya menembus seluruh cerita.

Mapan, dalam arti bahwa lebih dari satu pihak mengatakannya:

• Pengungkapan tersebut ada dan bertanggal. Tulisan Yomtov diterbitkan pada 15 September 2026; kedua cacat dilaporkan kepada OpenAI pada 12 Agustus 2026 dan, menurut keterangannya, diperbaiki dalam waktu delapan hari.

• OpenAI mengonfirmasi bahwa pihaknya mengambil tindakan pada Agustus. Juru bicaranya mengatakan kepada BleepingComputer bahwa kedua masalah telah ditangani, yang menguatkan kronologi pelaporan dan perbaikan secara independen dari penemunya, meskipun perusahaan tidak menerbitkan pemberitahuan resmi apa pun dan tidak memberikan laporan teknis sendiri.

• Versi perbaikannya disebutkan secara konsisten. Build 26.818.21641 untuk Codex Desktop dan versi 0.149.0 untuk Codex CLI disebutkan oleh Accomplish, diulang oleh BleepingComputer, dan dimuat dalam advisory tertanggal 22 September 2026 dari Uganda National Computer Emergency Response Team and Coordination Center, yang memberi peringkat "Red" untuk pasangan tersebut.

• Tidak ada CVE, tidak ada saran vendor, dan tidak ada pelaporan eksploitasi. Catatan Cloud Security Alliance tanggal 22 September 2026 mencatat tidak adanya CVE maupun saran mandiri dari OpenAI, dan tidak melaporkan kasus terkonfirmasi organisasi yang menemukan mekanisme persistensi Overpatch dalam keadaan terpasang.

• Arsip tidak membantah satu pun dari itu. Catatan tersebut ditandai disputed false, dan tingkat keyakinannya mencerminkan pola sumbernya, bukan adanya ketidaksepakatan tentang faktanya.

Tidak ditetapkan, atau ditetapkan hanya oleh penemunya:

• Detail mekanismenya milik Yomtov. Oracle heap-snapshot, deskriptor file bersama, pemberian direktori induk — semuanya berasal dari tulisannya dan proof of concept-nya. Cloud Security Alliance, yang catatannya merupakan ringkasan pihak ketiga paling rinci yang beredar, menyatakan bahwa mereka menyintesiskan uraiannya dan laporan BleepingComputer, dan tidak menyatakan bahwa mereka mereproduksi salah satu eksploit atau menguji salah satu perbaikannya. Advisori CERT.UG mengompilasi materi yang sama.

• Rentang versi yang rentan tidak pernah dipublikasikan. Hanya versi perbaikannya yang disebutkan, sehingga tidak ada daftar yang menunjukkan build sebelumnya mana yang mengandung setiap cacat.

• Apakah instalasi yang telah ditambal aman dari kelas bug tersebut, bukan hanya dari dua kasus ini, tidak dinyatakan. "Terus memperkuat sandbox kami" dari OpenAI merupakan komitmen umum, bukan klaim tentang mekanisme tertentu.

• Belum ada laporan tentang siapa pun yang mengeksploitasi salah satu dari kedua celah tersebut. Itu adalah ketiadaan pelaporan, bukan temuan ketiadaan, dan bukti konsep menunjukkan bahwa jalur {{1}}Heapjack{{/1}} tidak meninggalkan apa pun di layar yang dapat {{2}}diperhatikan{{/2}} pengguna.

Apa yang dapat ditindaklanjuti oleh pengguna

Siapa pun yang menggunakan build Codex Desktop lebih lama dari 26.818.21641, atau versi Codex CLI lebih lama dari 0.149.0, berada di sisi rentan dari garis yang ditarik Accomplish, dan pembaruan adalah satu-satunya solusi yang ditawarkan pengungkapan tersebut. Selain itu, Cloud Security Alliance merekomendasikan untuk mengaudit sesi Codex Desktop sebelumnya yang melibatkan repositori tidak tepercaya untuk aktivitas launchd atau open dan untuk koneksi soket Docker, serta membaca file startup shell — .zshrc, .bashrc dan padanannya — untuk perintah yang ditambahkan, bukan ditulis oleh pengguna.

Catatan yang sama menyarankan agar mode hanya-baca tidak dianggap sebagai perlindungan ketika repositori tidak tepercaya, yang merupakan kesimpulan yang dipaksakan Heapjack pada dirinya sendiri. Rekomendasi strukturalnya melangkah lebih jauh: isolasi proses dan memori fisik alih-alih rahasia bersama dan konvensi, kredensial dijauhkan dari jangkauan agen, dan patch yang merujuk jalur di luar proyek dianggap mencurigakan begitu terlihat. Itu adalah usulan dari pihak ketiga. Apakah OpenAI telah mengadopsi salah satunya selain dua kenaikan versi tersebut tidak dipublikasikan.

Abstract illustration on a deep navy-black field: a thick curved wall of frosted glass arcs across the frame; embedded in its far face, where nothing on the inside can reach it, sits a small precision mechanism of brushed brass and steel — a knurled dial, a sprung lever and a fine threaded rod — glowing faintly amber through the frosting. On the near side a small blue sphere rests at the foot of the wall and a thin blue line rises from it, stopping flat against the inner surface. A cold horizon of pale light runs beyond the wall. No text, numbers, people or organisation logos appear. The OrcaRouter logo is composited in the bottom-right corner.

Ada dua hal yang sebaiknya tetap dipisahkan pada akhirnya. Yang pertama adalah sepasang bug pada agen coding yang banyak digunakan, dilaporkan pada 12 Agustus 2026, diperbaiki dalam delapan hari, dan ditutup dalam dua nomor build. Yang lainnya adalah pertanyaan desain yang disebutkan Yomtov — apakah sebuah sandbox dapat ditegakkan oleh kode yang seharusnya dikurungnya — dan pertanyaan itu bukan sesuatu yang bisa dijawab oleh nomor versi. Baik Accomplish maupun OpenAI tidak menyatakan bahwa perubahan Agustus menyelesaikan hal itu.