Kredensial Rahasia Bocor di GitHub Akibat Berkas Konfigurasi Claude Code

Deretan kata sandi rahasia serta kunci API privat yang diketikkan para pemrogram ke dalam baris perintah saat disetujui di Claude Code terpampang bebas di repositori publik GitHub, tempat setiap orang dapat membacanya secara terbuka.

Ketika pengembang memilih opsi "Yes, and don't ask again," asisten pemrograman kecerdasan buatan rancangan Anthropic tersebut merekam instruksi itu kata demi kata, termasuk seluruh data sensitif di dalamnya, langsung ke dalam berkas konfigurasi bawaan proyek.

Perusahaan keamanan perangkat lunak Apiiro menyatakan kemarin bahwa sebanyak 1.122 salinan publik dari dokumen konfigurasi tersebut menyimpan setidaknya satu data rahasia, kendati mereka tidak menguji fungsionalitas token-token itu di lapangan. Satu entitas korporasi yang dihubungi oleh tim peneliti pada awal pekan ini mengonfirmasi secara resmi bahwa token kunci milik mereka sebelumnya berstatus aktif.

Berkas konfigurasi yang bermasalah tersebut bernama .claude/settings.local.json. Menghapus berkas begitu saja dari sebuah repositori tidak menyelesaikan kebocoran sistem, mengingat riwayat rekaman versi terdahulu tetap melekat dalam histori git dan menyebar ke cabang duplikasi repositori atau fork. Para peneliti menyarankan langkah mitigasi utama dengan melakukan rotasi rahasia: ganti seluruh kata sandi, token akses, serta kunci API yang pernah tersimpan di dokumen tersebut, kemudian tuntaskan pembersihan riwayat.

Bagaimana Data Kredensial Tersimpan ke Berkas

Pada konfigurasi bawaan, Claude Code selalu meminta konfirmasi pengguna sebelum mengeksekusi sebagian besar perintah shell terminal. Apabila pengguna menyetujui opsi "Yes, and don't ask again," aplikasi menuliskan entri perizinan baru pada dokumen .claude/settings.local.json di direktori kerja proyek, sebagaimana dipaparkan pada dokumentasi izin resmi. Perintah sejenis nantinya otomatis dijalankan tanpa peringatan pada sesi pengembangan berikutnya.

Kaidah perizinan otomatis tersebut menyalin teks perintah mentah terminal. Dalam sejumlah kondisi, teks itu memuat pola eksekusi fleksibel seperti npm test *, namun acap kali juga berupa satu baris perintah tunggal yang sangat presisi. Saat sistem merekam instruksi persis tersebut, setiap susunan kata sandi, kredensial privat, atau token yang diketikkan di dalamnya turut terekam apa adanya dalam format teks biasa tanpa enkripsi.

Di dalam repositori terbuka, para analis menemukan serangkaian baris perintah tersimpan yang masih memperlihatkan data otentikasi orisinal, dan mereka berhasil meniru celah perilaku serupa menggunakan dua model rilis terbaru, Opus 5.5 serta Fable 5.1.

Claude Code sejatinya memiliki mekanisme untuk mencegah dokumen tersebut masuk ke riwayat git. Pada momen pertama kali ia menyusun berkas di repositori git lokal, sistem mendaftarkan nama berkas ke konfigurasi git excludes global pengguna, merujuk penjelasan dokumentasi pengaturannya. Perangkat lunak git pada komputer bersangkutan otomatis mengabaikan berkas itu di setiap repositori lokal.

Kendati demikian, mekanisme proteksi otomatis tersebut hanya tersimpan secara eksklusif pada konfigurasi git lokal milik satu pengguna di satu perangkat keras saja. Lapisan pelindung ini sama sekali tidak berpengaruh terhadap berkas yang telanjur masuk komit, tutur para analis. Claude Code tidak pernah menyisipkan nama berkas itu ke dalam daftar .gitignore internal proyek, sehingga proteksi keamanan tidak ikut berpindah saat folder proyek dipindahkan ke sistem lain.

Pada 539 dari total 1.105 repositori publik yang dilacak jejaknya oleh tim peneliti, ditemukan komit perubahan yang secara gamblang mencantumkan nama Claude selaku kontributor pendamping yang memodifikasi dokumen konfigurasi tersebut. Peneliti menyimpulkan fakta lapangan ini menunjukkan bahwa Claude sendiri yang sering kali melakukan komit langsung terhadap berkas bersangkutan.

Temuan Investigasi Lengkap Apiiro

Penelusuran menyeluruh yang digelar Apiiro di GitHub mendeteksi 104.185 salinan dokumen pengaturan tersebut yang tersebar di 103.617 repositori, demikian rincian dalam laporan riset resmi mereka. Sekitar 1,1 persen di antaranya, atau setara 1.122 salinan berkas, terbukti menyimpan setidaknya satu informasi rahasia. Jika diakumulasikan, ribuan berkas tersebut mengekspos 1.379 kredensial rahasia yang berbeda.

Suatu deretan teks diklasifikasikan sebagai data rahasia apabila memenuhi kecocokan format kunci enkripsi standar, atau ketika susunan kata sandi dan token berada berdampingan dengan alamat peladen publik. Mekanisme validasi tambahan dari penilai berbasis kecerdasan buatan juga dilibatkan dalam proses penentuan. Para periset tidak menjelaskan secara rinci apakah ada pihak tak bertanggung jawab yang telah memanfaatkan temuan kredensial bocor tersebut.

Lebih dari sepertiga data rahasia yang terpapar memberikan akses masuk langsung ke pangkalan data terpusat, mencakup 379 kata sandi basis data. Sisanya mencakup 43 kredensial login SSH untuk server publik, 42 token akun autentikasi platform GitHub, GitLab, serta registri npm, dan 23 kunci akses layanan AWS.

Di antara pemilik repositori yang terekspos ini, tercatat ada 63 entitas organisasi terdaftar, yang mayoritasnya merupakan perusahaan pengembang peranti lunak dari skala kecil hingga korporasi besar. Temuan paling berisiko tinggi mencakup bocornya kunci awan berhak akses administrator milik sebuah vendor penyedia basis data komersial, serta kata sandi tingkat pemilik dari peladen basis data rekam medis pasien, tandas para periset.

Hingga hari Senin lalu, setiap salinan berkas yang memuat data kredensial terbukti masih bercokol di cabang utama repositori, dan pada separuh repositori tersebut, dokumen telah terpapar bebas setidaknya selama 217 hari berturut-turut.

Catatan riwayat versi lawas dari berkas itu menampung 734 rahasia tambahan di 509 repositori yang tidak terlihat lagi pada salinan terkini, umumnya disebabkan oleh penghapusan dokumen secara parsial oleh pemiliknya. Fitur penggandaan atau fork memperluas paparan kebocoran data: sebanyak 211 fork yang berasal dari 74 repositori utama terpantau mengusung data rahasia yang persis sama dengan dokumen aslinya.

Data sensitif serupa juga ditemukan mendekam di dalam 298 dari total 76.011 salinan berkas kolaborasi bersama .claude/settings.json, dokumen yang sengaja dikomit oleh tim rekayasa perangkat lunak, terutama di baris aturan izin eksekusi perintah. Apabila dihitung secara menyeluruh mencakup riwayat versi lawas dan catatan percakapan agen yang tersimpan, total kredensial bocor menembus 2.539 rahasia di 1.994 repositori berbeda.

Dari tinjauan komparatif terhadap 16 dokumentasi agen pengodean mandiri yang diperiksa tim riset, Claude Code menjadi satu-satunya agen yang terbukti menyimpan seluruh teks perintah yang telah disetujui secara baku ke berkas lokal proyek secara default.

Salinan dokumen konfigurasi yang tidak pernah diunggah ke repositori GitHub pun tetap menyimpan ancaman bahaya laten, tegas peneliti. Berkas tersebut berformat teks JSON murni di folder lokal kerja, dan sangat rentan tertinggal tanpa sengaja saat memaketkan berkas pustaka npm, menyusun citra Docker, membuat arsip zip, maupun saat menyelaraskan folder penyimpanan cloud.

Perangkat lunak perusak atau malware dalam catatan sejarah sebelumnya telah terbukti mengincar kredensial sensitif di komputer milik para insinyur peranti lunak. Pada September 2025 lalu, worm Shai-Hulud tercatat menjalankan pemindai kredensial TruffleHog pada komputer pengembang yang berhasil diinfeksi, dan perkakas pemindai itu menandai lebih dari separuh dokumen sebagai berkas berkredensial rahasia.

Alat pendeteksi kebocoran konvensional sering kali luput memindai dokumen-dokumen ini. Tim peneliti menguji perangkat gitleaks dan TruffleHog pada setiap salinan tanpa menyertakan tahap verifikasi otomatis. Dari 1.122 dokumen berisi kredensial sensitif, gitleaks mendeteksi 564 berkas dan TruffleHog menemukan 643 berkas, sementara 215 dokumen lainnya gagal terdeteksi oleh kedua pemindai itu.

Mayoritas kegagalan deteksi terjadi pada kata sandi yang disisipkan langsung di dalam rangkaian argumen perintah. Pemindai otomatis umumnya hanya mengenali pola kunci baku, sementara susunan kata sandi manual di belakang sintaks PGPASSWORD=, sshpass -p , atau mysql -p hanya terbaca seperti kata biasa dalam baris terminal biasa.

Laporan Kerentanan Sebelumnya

Para pemakai layanan Claude Code sebenarnya telah melaporkan kelemahan fungsionalitas ini jauh hari sebelumnya. Sebuah laporan kutu terdahulu, yang diajukan pada tanggal 11 Agustus 2025, secara gamblang membeberkan bahwa perintah yang disetujui beserta kunci API dan token rahasia terekam bulat-bulat kata per kata di dalam berkas settings.local.json.

Namun bot otomatis penyortir masalah menutup laporan tersebut dengan status "not planned" pada 3 Januari, setelah tidak adanya keaktifan interaksi selama kurun waktu 60 hari berturut-turut.

Hingga saat ini, empat pelaporan kendala serupa yang disitasi oleh tim periset seluruhnya telah resmi ditutup oleh bot otomatis yang sama, dengan penutupan paling anyar berlangsung kemarin. Seluruh pelaporan tersebut tidak pernah sekalipun memperoleh respons atau tanggapan resmi dari pihak Anthropic, tutur mereka.