Keamanan · 10 November 2026
Juga diterbitkan dalam 中文
Kata Sandi dan Kunci API Tersimpan dalam Berkas Pengaturan Claude Code di 1.122 Salinan Repositori Publik GitHub
Kata sandi dan kunci antarmuka pemrograman aplikasi yang diketikkan pengembang ke dalam perintah yang mereka setujui di Claude Code, asisten pengodean kecerdasan buatan milik Anthropic, tersimpan di repositori GitHub publik tempat siapa pun dapat membacanya.
Ketika pengguna memilih "Ya, dan jangan tanyakan lagi," Claude Code dapat menyimpan perintah persis seperti yang diketikkan, termasuk rahasia, dalam berkas pengaturan proyek. Perusahaan keamanan perangkat lunak Apiiro melaporkan kemarin bahwa 1.122 salinan publik dari berkas tersebut menyimpan setidaknya satu rahasia, meskipun mereka tidak menguji apakah masih berfungsi. Satu perusahaan yang diberitahu peneliti lebih awal minggu ini mengonfirmasi kuncinya masih aktif.
Berkas tersebut bernama .claude/settings.local.json. Menghapusnya dari proyek tidak membatalkan kebocoran, karena versi lama tetap berada di riwayat git dan di cabang repositori. Saran peneliti adalah memutar terlebih dahulu: ubah setiap kata sandi, token, dan kunci yang pernah disimpan berkas, kemudian bersihkan.
Secara bawaan, Claude Code menanyakan sebelum menjalankan sebagian besar perintah shell. Jika pengguna memilih "Ya, dan jangan tanyakan lagi," Claude Code menyimpan aturan izin dalam .claude/settings.local.json di dalam proyek. Perintah yang cocok kemudian berjalan tanpa bertanya di sesi berikutnya. Aturan mencakup hanya apa yang ditawarkan prompt. Kadang itu adalah pola, seperti npm test *, dan kadang satu perintah tepat. Ketika itu perintah tepat, kata sandi atau token apa pun yang diketikkan ke dalamnya juga disimpan, dalam teks biasa.
Claude Code mencoba menjaga berkas keluar dari git. Pertama kali menulis berkas di repositori git, Claude Code menambahkan berkas ke pengecualian git global pengguna. Git di komputer itu kemudian mengabaikan berkas di setiap repositori. Perlindungan itu tetap dalam pengaturan git satu pengguna di satu komputer. Itu tidak melakukan apa pun untuk berkas yang sudah dikomitkan. Claude Code tidak pernah menambahkan berkas ke .gitignore proyek sendiri, jadi perlindungan tidak bepergian dengan proyek.
Dalam 539 dari 1.105 repositori yang peneliti lacak, komit yang mencantumkan Claude sebagai penulis bersama mengubah berkas. Mereka mengartikan ini berarti Claude sering mengkomitkan berkas itu sendiri. Pencarian Apiiro di GitHub publik menemukan 104.185 salinan berkas di 103.617 repositori. Sekitar 1,1 persen dari mereka, atau 1.122 salinan, menyimpan setidaknya satu rahasia. Bersama-sama mereka menyimpan 1.379 rahasia berbeda.
Nilai dihitung sebagai rahasia ketika cocok dengan format kunci yang dikenal, atau ketika kata sandi atau token duduk di samping alamat server publik. Pengulas kecerdasan buatan juga harus setuju. Peneliti tidak mengatakan apakah siapa pun telah menggunakan rahasia ini. Lebih dari sepertiga rahasia membuka basis data secara langsung, termasuk 379 kata sandi basis data. Yang lain mencakup 43 login SSH untuk server publik, 42 token untuk GitHub, GitLab dan npm, dan 23 kunci AWS.
Di antara pemilik berkas ini adalah 63 organisasi, sebagian besar perusahaan perangkat lunak dari semua ukuran. Kasus terkuat mencakup kunci cloud tingkat admin vendor basis data sendiri dan kata sandi pemilik basis data catatan medis, kata peneliti. Pada hari Senin, setiap berkas dengan rahasia masih berada di cabang bawaan repositorinya, dan di setengah dari repositori itu telah berada di sana selama setidaknya 217 hari.
Versi berkas yang lebih lama berisi 734 rahasia lagi di 509 repositori yang tidak ada di salinan saat ini, biasanya karena berkas dihapus. Cabang menyebarkan berkas lebih jauh: 211 cabang dari 74 repositori membawa rahasia yang sama dengan aslinya. Termasuk yang itu, versi yang lebih lama, dan log obrolan agen yang disimpan, totalnya adalah 2.539 rahasia di 1.994 repositori.
Dari 16 agen pengodean yang dokumentasinya dibandingkan peneliti, Claude Code adalah satu-satunya yang dikonfirmasi menyimpan perintah yang disetujui penuh dalam berkas proyek secara bawaan. Pemindai rahasia umum melewatkan banyak berkas ini. Peneliti menjalankan gitleaks dan TruffleHog di atas setiap salinan, tanpa langkah verifikasi alat. Dari 1.122 berkas dengan rahasia, gitleaks menandai 564 dan TruffleHog 643, dan tidak satupun menandai 215.