Kumpulan kata sandi penting beserta kunci API milik para pengembang peranti lunak yang pernah dimasukkan ke dalam baris perintah saat menggunakan Claude Code kini tergeletak bebas di repositori publik GitHub, sehingga siapa saja dapat melihat dan membacanya secara terbuka tanpa hambatan pengamanan teknis.
Ketika seorang pengguna menekan opsi persetujuan "Yes, and don't ask again," asisten pemrograman kecerdasan buatan rancangan Anthropic tersebut secara otomatis merekam dan menyimpan instruksi perintah persis kata demi kata, termasuk seluruh kredensial sensitif yang menyertainya, langsung ke berkas konfigurasi lokal proyek.
Perusahaan spesialis keamanan siber Apiiro kemarin menyampaikan temuan bahwa sebanyak 1.122 salinan publik dari berkas konfigurasi itu memuat setidaknya satu kredensial rahasia, meski mereka tidak melakukan uji coba langsung guna memastikan apakah data tersebut masih aktif. Salah satu perusahaan yang dihubungi oleh tim peneliti pada awal pekan ini mengonfirmasi bahwa kunci rahasia milik mereka memang sempat berada dalam status aktif.
Berkas konfigurasi yang bermasalah tersebut bernama .claude/settings.local.json. Tindakan sekadar menghapus dokumen itu dari repositori proyek sama sekali tidak membatalkan kebocoran yang telah terjadi, mengingat rekam jejak versi lama tetap tersimpan abadi di riwayat git maupun percabangan salinan repositori lain. Saran utama para peneliti adalah melakukan rotasi secepatnya: segera ganti seluruh kata sandi, token autentikasi, dan kunci akses yang pernah tercatat di berkas itu, kemudian bersihkan riwayatnya.
Bagaimana Kredensial Rahasia Tersimpan di Berkas
Secara baku, Claude Code akan selalu meminta izin sebelum menjalankan sebagian besar perintah shell pada sistem. Apabila pengguna menentukan pilihan "Yes, and don't ask again," sistem akan menuliskan aturan perizinan ke dalam dokumen .claude/settings.local.json di folder proyek, seperti yang tertera pada dokumentasi izin resminya. Baris instruksi serupa selanjutnya akan langsung dieksekusi tanpa konfirmasi lanjutan pada sesi-sesi kerja mendatang.
Aturan izin tersebut semata-mata merekam teks yang ditawarkan oleh baris perintah. Kadang bentuknya sekadar pola generik seperti npm test *, namun kerap kali berwujud satu perintah utuh yang sangat spesifik. Pada saat perintah spesifik itu dieksekusi, kata sandi atau token otorisasi yang diketikkan pengguna di dalamnya ikut tersimpan dalam format teks mentah tanpa enkripsi.
Di dalam arsip berkas terbuka publik, para peneliti menjumpai riwayat instruksi yang tersimpan lengkap dengan muatan rahasia di dalamnya, dan mereka berhasil mereplikasi ulang perilaku sistem tersebut menggunakan model mutakhir, Opus 5.5 serta Fable 5.1.
Claude Code sejatinya dirancang untuk mencegah berkas tersebut terunggah ke repositori git. Pertama kali sistem menulis berkas itu di repositori lokal, aplikasi menambahkan namanya ke konfigurasi global git excludes milik pengguna, merujuk pada penjelasan di dokumentasi pengaturannya. Perangkat git di komputer bersangkutan lantas mengabaikan dokumen tersebut di setiap direktori proyek kerja.
Akan tetapi, mekanisme proteksi semacam itu cuma mengikat konfigurasi git personal pada satu komputer tertentu saja. Pengamanan tersebut sama sekali tak berpengaruh terhadap berkas yang terlanjur di-commit sebelumnya, ungkap peneliti. Claude Code diketahui tidak pernah menyematkan nama berkas tersebut ke berkas .gitignore bawaan proyek, sehingga proteksi tersebut tidak ikut terbawa saat proyek dipindahkan atau dibagikan.
Pada 539 dari total 1.105 repositori terbuka yang berhasil ditelusuri tim peneliti, jejak commit yang mencantumkan akun Claude sebagai kontributor pendamping terbukti memodifikasi berkas tersebut. Fakta ini membawa peneliti pada kesimpulan kuat bahwa Claude sendiri yang sering kali melakukan commit langsung terhadap dokumen konfigurasi itu.
Temuan Investigasi Keamanan Apiiro
Penyisiran mendalam yang dijalankan Apiiro di ekosistem publik GitHub berhasil mendeteksi sebanyak 104.185 salinan dokumen terkait yang tersebar di 103.617 repositori, sebagaimana dipaparkan dalam laporan resmi riset mereka. Kurang lebih 1,1 persen di antaranya, atau sekitar 1.122 salinan berkas, terbukti menyimpan setidaknya satu data kredensial rahasia. Jika diakumulasikan, terdapat 1.379 rahasia unik yang berbeda.
Sebuah nilai dinilai sahih sebagai kredensial rahasia apabila cocok dengan struktur kunci resmi yang dikenali, atau tatkala kata sandi maupun token berada berdampingan dengan alamat peladen publik. Mekanisme verifikasi kecerdasan buatan juga dilibatkan untuk memastikan validitasnya. Tim peneliti tidak memberikan konfirmasi mengenai apakah informasi rahasia yang terekspos ini telah disalahgunakan pihak ketiga.
Lebih dari sepertiga total data rahasia tersebut membuka akses basis data secara langsung, mencakup 379 kata sandi basis data. Temuan lainnya meliputi 43 kredensial SSH untuk server publik, 42 token autentikasi platform GitHub, GitLab, serta npm, ditambah 23 kunci komputasi awan AWS.
Di antara entitas pemilik berkas-berkas bocor tersebut tercatat 63 organisasi resmi yang sebagian besar merupakan perusahaan perangkat lunak beragam skala. Kasus paling fatal melibatkan tereksposnya kunci akses cloud tingkat administrator milik sebuah vendor basis data ternama serta kata sandi utama sistem catatan rekam medis, tegas laporan tim peneliti.
Hingga hari Senin lalu, setiap berkas yang mengadung rahasia tersebut masih terpampang aktif di cabang utama repositori, dan pada separuh repositori tersebut dokumen telah berada di sana selama minimal 217 hari.
Versi riwayat terdahulu menyimpan 734 rahasia tambahan di 509 repositori yang tidak terlihat pada berkas mutakhir, sebagian besar akibat berkas sudah dihapus sebelumnya. Praktik pencabangan repositori memperluas jangkauan kebocoran: sebanyak 211 forked repository dari 74 proyek induk membawa data kredensial serupa dari dokumen aslinya.
Kredensial rahasia juga ditemukan pada 298 dari 76.011 salinan berkas bersama .claude/settings.json, yang memang sengaja diunggah tim kerja, mayoritas terselip di dalam klausul izin akses. Bila memperhitungkan berkas bersama, arsip histori lama, dan rekaman percakapan agen yang tersimpan, total kebocoran mencapai 2.539 rahasia di 1.994 repositori berbeda.
Dari 16 asisten pengodean berbasis AI yang dipelajari panduannya oleh peneliti, hanya Claude Code yang terbukti mengabadikan instruksi penuh yang disetujui pengguna ke berkas lokal proyek secara setelan awal.
Bagi kalangan developer peranti lunak, tim peneliti menyarankan langkah mitigasi beruntun berikut:
Salinan dokumen yang tidak pernah terunggah ke platform GitHub tetap memiliki risiko besar, menurut para peneliti. Format dokumen tersebut hanyalah JSON biasa di folder proyek, dan sangat berpotensi ikut terkemas ke paket npm, kontainer Docker, arsip zip, maupun folder yang tersinkronisasi otomatis.
Program jahat sebelumnya sempat beroperasi memburu data sensitif pada perangkat komputer pengembang. Pada September 2025, cacing komputer Shai-Hulud mengeksekusi pemindai rahasia TruffleHog pada mesin-mesin terinfeksi, dan pemindai tersebut menandai lebih dari separuh berkas temuan sebagai dokumen rahasia.
Alat pemindai kredensial rahasia yang umum digunakan pun kerap melewatkan dokumen ini. Peneliti mencoba perangkat gitleaks serta TruffleHog pada tiap berkas tanpa tahap verifikasi alat. Dari 1.122 dokumen berisi rahasia, gitleaks mendeteksi 564 dan TruffleHog menjaring 643, sedangkan 215 berkas luput terdeteksi keduanya.
Penyebab utama kegagalan deteksi adalah penulisan kata sandi di dalam baris perintah shell. Pemindai umumnya mencari format kunci baku, sementara kata sandi yang disematkan sesudah parameter PGPASSWORD=, sshpass -p, atau mysql -p hanya terbaca sebagai kata lazim dalam sebuah baris kode perintah biasa.
Untuk para pengelola tim keamanan siber, peneliti menyarankan tindakan proteksi berkut:
Laporan Pengguna Sebelumnya
Para pemakai Claude Code sejatinya telah mengadukan anomali keamanan ini sejak lama. Laporan masalah terdahulu yang diajukan per 11 Agustus 2025 membeberkan bahwa instruksi yang disetujui bersama kunci API dan token tersimpan persis tanpa sensor di settings.local.json.
Namun bot otomatis menutup pelaporan itu dengan label "not planned" pada 3 Januari, sesudah 60 hari tanpa pergerakan aktivitas.
Sampai hari ini, empat pengaduan serupa yang dirujuk peneliti seluruhnya telah dihentikan secara otomatis oleh bot yang sama, dengan peristiwa teranyar terjadi kemarin. Tak satu pun aduan tersebut mendapatkan tanggapan resmi dari pihak Anthropic, tutur peneliti.