Ilustrasi teknis abstrak pada latar biru dongker gelap: sebuah bidang batas tembus pandang yang tinggi berdiri di dekat tepi kiri, digambar sebagai garis tepi pucat tipis dengan isian buram. Satu garis putih tunggal masuk dari kiri, melewati bidang itu, dan berlanjut ke kanan, lalu berakhir pada blok gelap kecil yang berada di luar barisan dangkal berisi empat modul sian menyala. Jejak putih putus-putus tipis bercabang dari garis tepat sebelum bidang dan berhenti di persegi panjang pucat kecil yang terpasang pada permukaan bidang, diberi label hanya berdasarkan bentuknya. Tidak ada teks, orang, atau logo organisasi yang muncul. Logo OrcaRouter dikompositkan di sudut kanan bawah.
AI Safety Incidents

GhostApproval: Enam Asisten Coding AI Meminta Izin dan Menyebut File yang Salah

Penulis

Gideon Frost

Tanggal Terbit

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

Pada 8 Juli 2026, firma keamanan Wiz menerbitkan GhostApproval, temuan riset yang menunjukkan bahwa tautan simbolik yang ditanam di sebuah repositori membuat enam asisten pengkodean AI menulis di luar ruang kerja mereka — ke dalam ~/.ssh/authorized_keys, yang memberikan akses SSH persisten tanpa kata sandi, atau ke dalam ~/.zshrc, yang dijalankan saat shell berikutnya dimulai — sementara dialog konfirmasi hanya menyebutkan file tidak berbahaya yang menjadi samaran tautan tersebut. Wiz menguji Amazon Q Developer, Claude Code milik Anthropic, Augment, Cursor, Google Antigravity, dan Windsurf, dan melaporkan pola tersebut pada keenamnya. Tidak ada laporan eksploitasi di lapangan: karya ini adalah demonstrasi proof-of-concept, dan entri arsip mencatat tidak ada kerugian nyata. Tiga vendor merilis perbaikan, dua mengakui laporan tersebut lalu berhenti membalas, dan satu membantah bahwa perilaku itu merupakan kerentanan sama sekali. Orca AI Incident Archive menyimpan catatan lengkap untuk temuan ini bersama entri lain yang tercatat di bawah tag tipe SANDBOX-nya.

Primitif itu sendiri sudah lama diketahui. Mengikuti symlink, yang dikatalogkan sebagai CWE-61, telah menjadi primitif serangan selama beberapa dekade — Wiz mencantumkan penggunaan sebelumnya dalam race condition, manajer paket, dan container escape — dan setiap kasus tersebut bergantung pada alat yang menulis ke path yang dikendalikan pengguna tanpa me-resolve-nya terlebih dahulu. Yang membuat temuan ini layak diberi nama adalah lapisan kedua: di beberapa produk, penalaran asisten itu sendiri mengidentifikasi tujuan berbahaya, dan prompt yang ditampilkan kepada manusia menyembunyikannya. Wiz mencatatnya sebagai CWE-451, representasi keliru antarmuka pengguna atas informasi kritis. Batas keamanannya ada. Informasi yang dibutuhkan seseorang untuk memanfaatkannya tidak ada.

Cara kerja trik ini, dan apa hasil akhirnya

Repositori berbahaya milik Wiz sengaja dibuat membosankan. Repositori itu berisi symlink bernama project_settings.json yang mengarah ke berkas authorised-keys SSH milik pengembang, ditambah README yang menginstruksikan agen untuk memperbarui "config" tersebut saat menyiapkan ruang kerja. Ketika pengembang meminta asisten mengikuti README, agen mengikuti tautan dan menulis kunci publik penyerang. Jika mesin menjalankan layanan SSH yang dapat dijangkau penyerang, maka sejak saat itu login tanpa kata sandi. Varian kedua mengarahkan umpan yang sama ke ~/.zshrc, sehingga payload dieksekusi saat terminal dibuka berikutnya dan akses SSH sama sekali tidak diperlukan.

Deskripsi Wiz tentang kegagalan teknis itu singkat: sandbox, jika ada, tidak memvalidasi jalur kanonik, sehingga penulisan yang ditujukan di dalam proyek mendarat di mana pun tautan mengarah. Bukti konsep perusahaan mereproduksi hal ini pada "6 dari asisten pengkodean AI teratas", dalam kata-katanya sendiri, dan perusahaan menerbitkan tangkapan layar untuk masing-masingnya. Populasi terdampak adalah siapa pun yang membuka repositori yang tidak mereka tulis di salah satu alat tersebut — yang, dalam alur kerja pengembang normal, mencakup proyek hasil fork, dependensi pihak ketiga, dan tinjauan kode apa pun terhadap cabang kontributor luar.

Dialog yang menyebut file yang salah

Bukti paling jelas datang dari Claude Code. Dalam pengujian Wiz, penalaran agen tersebut menyatakan, dalam kutipan firma itu, "I can see that project_settings.json is actually a zsh configuration file." Permintaan izin yang dilihat pengguna berbunyi: "Make this edit to project_settings.json?" Agen tahu ke mana penulisan itu diarahkan; orang yang mengotorisasinya tidak. Wiz menyebut persetujuan yang dihasilkan sebagai "substantively empty" dan pemeriksaan human-in-the-loop sebagai sekadar stempel karet.

Tiga produk membuat kesenjangan itu lebih buruk daripada sekadar label yang salah. Windsurf menuliskan file ke disk sebelum tombol Accept dan Reject muncul, sehingga dialog itu hanyalah tawaran pembatalan (undo), bukan gerbang otorisasi — menurut Wiz, saat pengguna dapat menolak, kunci tersebut sudah terpasang. Amazon Q Developer menunjukkan urutan yang sama, hanya menawarkan tombol Undo setelah penulisan. Augment tidak menanyakan apa pun: Wiz mendemonstrasikan pembacaan symlink yang memunculkan file kredensial AWS umpan dari luar proyek di transkrip chat, dan penulisan symlink ke ~/.ssh/authorized_keys tanpa dialog apa pun. Di sisi lain, Cursor dan Google Antigravity menampilkan path yang belum diresolusi dan meminta klik yang mengotorisasi path yang sudah diresolusi.

Uji pertama Wiz dijalankan pada 10 Februari 2026 dan laporan-laporannya dikirim antara 12 Februari dan 5 Maret. Linimasa pengungkapannya mencatat konfirmasi penerimaan: Anthropic pada 15 Februari, Augment pada 24 Februari, Google pada 26 Februari, Cursor pada 2 Maret, AWS pada 6 Maret, dan Cognition, yang memiliki Windsurf, pada 23 Juni. Pengungkapan publik menyusul sekitar lima bulan setelah laporan pertama.

HTML card headed 'Five months from first test to public disclosure', with a kicker reading 'GhostApproval · Wiz Research · disclosure sequence'. A vertical timeline lists the dated steps: 10 February 2026, initial discovery; 12 and 14 February, Augment read and write reports; 14 February, report to Anthropic; 15 February, Anthropic closes the ticket as Informative; 24 February, Augment acknowledges; 26 February, Google acknowledges; 2 March, Cursor acknowledges; 2 and 5 March, reports to Cognition and AWS; 22 May, Google deploys its fix; 27 May, AWS ships language server 1.69.0; 23 June, AWS publishes CVE-2026-12958 and Cognition acknowledges; 8 July 2026, public disclosure. An amber box records that Augment and Windsurf acknowledged receipt and supplied no further updates. A footer cites Wiz's disclosure timeline. The OrcaRouter logo is composited in the bottom-right corner.

Enam vendor, tiga jawaban

Wiz menilai temuan tersebut menurut skala keparahannya sendiri, dari High di AWS hingga Critical di Augment, Cursor, Google Antigravity, dan Windsurf. Tiga vendor memperlakukan laporan itu sebagai kerentanan dan merilis perbaikan. Arsip menilai entri tersebut dengan tingkat keparahan tinggi dan nilai A untuk keyakinan, dan advisori utama sepakat dengan Wiz soal mekanismenya.

• Amazon Web Services. Tingkat keparahan tinggi, dilacak sebagai CVE-2026-12958 dan diperbaiki di Language Servers for AWS 1.69.0. Buletin AWS sendiri 2026-047-AWS, yang diterbitkan pada 23 Juni 2026, mengonfirmasi "masalah validasi symlink yang hilang" sebelum 1.69.0 dan mencantumkan build plugin minimum yang membawa perbaikan: Amazon Q Developer for Visual Studio Code 2.20, for JetBrains 4.3, for Eclipse 2.7.4, dan AWS Toolkit with Amazon Q for Visual Studio 1.94.0.0. Buletin itu menyatakan tidak ada workaround, bahwa language server diperbarui secara otomatis kecuali konfigurasi jaringan mencegahnya, dan berterima kasih kepada Wiz atas pengungkapan terkoordinasi. Catatan CNA memberi skor masalah tersebut 8.5 berdasarkan CVSS 4.0 dan 7.8 berdasarkan CVSS 3.1.

• Cursor.Kritis, dilacak sebagai CVE-2026-50549 dan diperbaiki di Cursor 3.0. Catatan tersebut diterbitkan oleh GitHub sebagai CNA pada 25 Juni 2026 pukul 9.3 berdasarkan CVSS 4.0. Deskripsinya menggambarkan penyerang sedikit berbeda dari kisah repositori Wiz: agen berbahaya membuat symlink di dalam workspace dan memaksa kanonikalisasi jalur gagal, baik karena target tidak ada atau karena izin baca dicabut dari jalur tersebut, setelah itu operasi tulis kembali ke jalur asli tanpa persetujuan dan dapat menimpa helper sandbox untuk eksekusi tanpa sandbox.

• Google. Wiz menilai Antigravity sebagai Kritis dan mencatat perbaikannya sebagai versi 1.19.6, yang diterapkan pada 22 Mei 2026. Kolom tingkat keparahannya tertulis "Pending" dan menurut catatan Wiz, Google sedang menilai apakah akan menerbitkan CVE; tidak ada pengenal CVE untuk Antigravity yang muncul dalam catatan publik.

• Augment.Kritis menurut penilaian Wiz, diuji pada 0.754.3, diakui pada 24 Februari 2026 dan belum ditambal pada saat publikasi. Catatan riset Cloud Security Alliance tentang temuan tersebut mencatat bantahan Augment bahwa agen beroperasi dengan kredensial milik pengguna sendiri.

• Windsurf.Kritis menurut penilaian Wiz, diuji pada build V1.9566, diakui oleh Cognition pada 23 Juni 2026 dan belum ditambal saat publikasi.

• Anthropic. Diperdebatkan. Tidak ada CVE, dan versi Claude Code yang diuji, 2.1.42, tercantum dalam tabel Wiz dengan status "Ditolak".

HTML card headed 'One pattern, six products, six answers', with a kicker reading 'GhostApproval · vendor status at public disclosure, 8 July 2026'. A six-row table gives product, Wiz's severity rating, CVE identifier, fixed version and status: Amazon Q Developer, High, CVE-2026-12958, fixed in language server 1.69.0; Cursor, Critical, CVE-2026-50549, fixed in 3.0; Google Antigravity, Critical, no CVE published, fixed in 1.19.6 on 22 May 2026; Augment, Critical, no CVE, no fix, acknowledged 24 February 2026; Windsurf, Critical, no CVE, no fix, acknowledged 23 June 2026; Claude Code from Anthropic, Disputed, no CVE, rejected as outside the threat model. A note beneath reads that severity ratings for the products without a CVE are Wiz's own, not a CNA score, and that no exploitation in the wild was reported. A footer cites Wiz's vendor table, the AWS security bulletin and the two CVE records. The OrcaRouter logo is composited in the bottom-right corner.

Penolakan Anthropic, dan perbaikan yang sudah ada sebelum laporan tersebut

Jawaban Anthropic kepada Wiz adalah penolakan yang dipertimbangkan secara matang. "Ini berada di luar model ancaman kami saat ini," tulis perusahaan itu, menurut kutipan Wiz. "Saat pengguna pertama kali menjalankan Claude Code di sebuah direktori, mereka harus mengonfirmasi bahwa mereka memercayai direktori tersebut sebelum memulai sesi. Skenario yang Anda jelaskan melibatkan pengguna yang secara eksplisit mengonfirmasi permintaan izin di dalam direktori yang berisi symlink berbahaya, yang berada di luar model ancaman Claude Code." Tiket tersebut ditutup sebagai "Informatif".

Penalaran itu memiliki bentuk yang koheren: pengguna memercayai direktori tersebut, lalu menyetujui operasi, sehingga kedua momen persetujuan dihormati. Bantahan Wiz adalah bahwa persetujuan yang terinformasi memerlukan informasi yang akurat — menyetujui project_settings.json sementara penulisan dilakukan ke ~/.ssh/authorized_keys secara formal merupakan keputusan dan secara substantif merupakan keputusan yang kosong. Wiz tidak mengklaim telah menyelesaikan posisi mana yang benar, dan artikel ini juga tidak. Pengamatan praktisnya adalah bahwa AWS, Google, dan Cursor mengambil pandangan yang lain dan menerapkan patch.

Wiz juga melaporkan bahwa Claude Code telah berubah di balik perselisihan itu: versi saat ini, tulis perusahaan tersebut, me-resolve symlink dan memberi peringatan sebelum menulis ke file sensitif, dan Wiz mencatat bahwa Anthropic menolak untuk mengatakan apakah hal itu terkait dengan laporan tersebut. Pada 7 Juli 2026, Anthropic memberikan koreksi, yang dikutip oleh Wiz: "Peringatan symlink dalam dialog izin Edit/Write dirilis dalam v2.1.32 (5 Feb 2026), sembilan hari sebelum laporan ini dikirimkan kepada kami. Hal itu ditambahkan sebagai bagian dari penguatan keamanan proaktif berdasarkan tinjauan internal. Penolakan untuk berkomentar adalah balasan otomatis dari sistem triase kami."

Penetapan waktu versinya sesuai; catatan publik tentang apa yang berubah tidak sesuai. Claude Code 2.1.32 diterbitkan ke registri npm pada 5 Februari 2026 pukul 17:03 UTC, yaitu sembilan hari sebelum laporan 14 Februari, persis seperti yang dikatakan Anthropic. Namun, entri changelog publik untuk rilis tersebut mencantumkan dua belas perubahan, termasuk tim agen, perekaman memori, dan beberapa perbaikan UI, dan tidak satu pun menyebut symlink atau dialog izin. Baris-baris changelog pertama yang menjabarkan perilaku persis ini baru muncul jauh lebih kemudian: versi 2.1.280, yang diterbitkan ke npm pada 22 September 2026, mencatat "Memperbaiki penulisan melalui jalur symlink yang dinilai berdasarkan ejaan jalurnya di dalam pohon: prompt menyebutkan lokasi tujuan penulisan", dan 2.1.287 pada 1 Oktober 2026 mencatat bahwa penulisan shell melalui symlink yang dikomit ke repositori menuju berkas sensitif kini menyebutkan lokasi tujuannya dan menunggu konfirmasi seseorang. Pengamatan Wiz sendiri bahwa 2.1.173 dan versi setelahnya me-resolve symlink juga baru muncul setelah laporan, karena 2.1.173 dirilis pada 11 Juni 2026.

Apa yang sudah mapan, dan apa yang belum

• Terkonfirmasi. Mekanismenya: symlink umpan di dalam repositori, agen yang mengikutinya, penulisan yang berakhir di luar workspace, dan permukaan konfirmasi yang menyebut jalur yang salah. Wiz mereproduksinya pada keenam produk dan menerbitkan tangkapan layar. Ada dua catatan CVE yang diterbitkan oleh CNA masing-masing, dan buletin AWS secara independen mengonfirmasi celah sub-1.69.0 serta perbaikannya. Anthropic tidak menyanggah bahwa perilaku itu terjadi; yang mereka sanggah adalah bahwa itu merupakan kerentanan.

• Bersumber tunggal. Rating tingkat keparahan untuk Augment, Windsurf, dan Google Antigravity adalah penilaian Wiz, bukan skor CNA, karena tidak ada CVE yang diterbitkan untuk ketiganya. Klaim bahwa Windsurf dan Amazon Q menulis sebelum dialog muncul didasarkan pada tangkapan layar dan narasi Wiz; belum ada vendor yang mengonfirmasi urutan tersebut secara publik.

• Diperdebatkan. Apakah sebuah alat wajib memberikan perlindungan kepada penggunanya dari ruang kerja yang menipu, atau apakah kepercayaan direktori ditambah satu klik sudah menyelesaikan persoalan itu. Anthropic mengatakan yang terakhir; Wiz mengatakan prompt yang ditampilkannya membuat klik itu tidak bermakna. Arsip tidak menandai catatan tersebut sebagai diperdebatkan: faktanya disepakati dan hanya interpretasinya yang diperdebatkan.

• Belum dapat dipastikan.Apakah Augment dan Windsurf telah memperbaiki cacat tersebut sejak publikasi. Semua liputan yang ditinjau untuk artikel ini, termasuk catatan Cloud Security Alliance tanggal 15 Juli 2026, masih menggambarkan keduanya sebagai belum ditambal; tidak ditemukan pemberitahuan perbaikan publik dari kedua vendor tersebut.

Tanggal itu sendiri memiliki sedikit kerumitan. Postingan Wiz dan linimasa pengungkapannya keduanya menyebut 8 Juli 2026, Infosecurity Magazine mendeskripsikan proof of concept sebagai terbit pada 7 Juli dan laporannya sendiri pada 9 Juli, dan entri arsipnya bertanggal 9 Juli 2026 dengan presisi tingkat hari. Temuan, pelaporan, dan arsip tidak berbeda pendapat tentang minggu tersebut; mereka berbeda pendapat tentang harinya hingga selisih dua hari.

Karya sebelumnya tentang salah satu dari enam itu layak mendapat kredit tersendiri. Evan Schuman dari CSO Online, dalam tulisannya pada 9 Juli 2026, mencatat bahwa Cato Networks telah melaporkan versi celah khusus Cursor sebelum studi Wiz yang lebih luas. Laporan SecurityWeek tentang penelitian itu, yang diterbitkan pada 3 Juli 2026, menamainya DuneSlide, menetapkan CVE-2026-50548 dan CVE-2026-50549 untuk keduanya, memberi skor 9,8 untuk keduanya, dan menetapkan tanggal rilis Cursor 3.0 yang memperbaikinya pada 2 April — angka-angka yang tidak sesuai dengan garis waktu Wiz, yang menempatkan publikasi perbaikan Cursor pada 5 Juni, atau dengan catatan CNA yang diterbitkan pada 25 Juni dengan skor 9,3. Angka 9,8 dan 9,3 adalah dua penilai terhadap celah yang sama; tanggal April dan Juni mungkin menggambarkan sebuah rilis dan sebuah advisori, bukan saling bertentangan tentang kapan patch itu dirilis.

Apa yang berubah setelahnya

Secara konkret: pengguna Amazon Q Developer dipindahkan ke language server 1.69.0, secara otomatis dalam sebagian besar konfigurasi; pengguna Google Antigravity ke 1.19.6 mulai 22 Mei 2026; pengguna Cursor ke 3.0; dan pengguna Claude Code ke versi yang menyelesaikan tautan, dengan perubahan fidelitas prompt lebih lanjut yang hadir dalam 2.1.280 dan 2.1.287 selama September dan Oktober 2026. Pengguna Augment dan Windsurf, berdasarkan bukti yang tersedia saat publikasi, hanya mendapat tanggal yang perlu diperhatikan dan tidak ada yang lain.

Rekomendasi Wiz sendiri bersifat sempit dan teknis: selesaikan symlink sebelum menampilkan prompt, beri peringatan secara eksplisit ketika jalur yang telah diselesaikan berada di luar ruang kerja, dan jangan pernah menulis ke disk sebelum ada otorisasi eksplisit, sehingga dialog tersebut berfungsi sebagai gerbang, bukan tombol urungkan. Catatan Cloud Security Alliance menambahkan kerangka tata kelola — perlakukan asisten pengodean sebagai perangkat lunak berhak istimewa dengan akses sistem berkas, bukan sebagai plugin editor, dan tanyakan langsung kepada vendor apakah jalur diselesaikan sebelum konfirmasi muncul. Katie Norton dari IDC, yang dikutip oleh CSO Online, menempatkan risiko residual di titik rantai pasok yang memang sudah berjalan: kontributor eksternal, repositori hasil fork, dan dependensi pihak ketiga, "bukan pada kode yang ditulis secara internal".

Yang masih terbuka adalah pertanyaan desain, bukan bug. Enam produk yang dibangun secara independen sampai pada urutan yang sama — tampilkan jalur yang diminta, percayai klik — dan perbedaan setelahnya menyangkut tanggung jawab, bukan mekanisme. Entri arsip tersebut membawa penanda tonggak, yakni penilaian arsip bahwa catatan itu menggambarkan suatu kategori, bukan kesalahan satu vendor, dan sulit membantah tafsir itu: proof of concept singkat yang sama berhasil enam kali.

Abstract technical illustration on a dark navy field: a pale translucent check mark, drawn as a thin outline, floats above a small white rectangle that represents an approval surface. Beneath the rectangle a white line drops vertically, passes through a faint horizontal plane, and emerges on the other side pointing at a second dark rectangle that is drawn only as an outline, unlit. A soft amber glow marks the point where the line crosses the plane. No text, people or organisation logos appear. The OrcaRouter logo is composited in the bottom-right corner.