Meteora Web

Claude Code, file impostazioni membocorkan ribuan rahasia di GitHub

Apiiro menemukan lebih dari 100.000 file settings.local.json Claude Code di GitHub, sekitar 1.100 berisi rahasia. Ini yang perlu kamu cek di repositorimu.

Ing. Calogero Bono 5 menit baca
Claude Code, file impostazioni membocorkan ribuan rahasia di GitHub

Menurut peneliti keamanan Apiiro, Claude Code meninggalkan rahasia di repositori publik GitHub. Masalahnya berawal dari file pengaturan lokal yang berakhir online tanpa disadari pengembangnya. Di antara data yang ditemukan ada kata sandi database, token API, dan akses root. Ini penting bagi siapa pun yang memakai asisten pemrograman berbasis AI, karena satu commit yang ceroboh bisa membuat kredensial yang masih aktif menjadi publik.

Beberapa istilah sebelum masuk ke fakta. .gitignore adalah file yang memberi tahu Git file mana yang tidak perlu disimpan dalam commit. Repositori adalah folder proyek yang dilacak oleh Git. Rahasia adalah kredensial seperti kata sandi, token API, atau kunci privat. Fork adalah salinan proyek yang dibuat pengguna lain di GitHub. Commit adalah penyimpanan sekelompok perubahan ke dalam riwayat proyek.

Zenithby Meteora Web Sistem operasi untuk bisnismu. Media sosial, klien, pemesanan, dan faktur dalam satu platform. Gym, barbershop, profesional. Lihat Zenith → Demo gratis · tanpa kartu

Apa yang ditemukan tentang Claude Code dan GitHub?

Hal ini diceritakan oleh Ars Technica, yang melaporkan kerja Apiiro. Peneliti menemukan lebih dari 100.000 kasus di mana file pengaturan lokal Claude Code telah diunggah ke repositori publik GitHub.

Tidak semuanya memuat data sensitif. Hanya sekitar 1.100 file, dari 63 organisasi berbeda, yang berisi rahasia seperti token API publik, kata sandi database, atau kunci privat. Jumlahnya kecil dibanding totalnya, tetapi kredensialnya nyata, bukan contoh.

Mengapa file itu bisa berakhir online?

Ketika pengguna memilih opsi «Ya, dan jangan tanya lagi» untuk menyetujui perintah shell, pilihan itu menjadi aturan dalam file lokal .claude/settings.local.json. Kadang aturannya ditulis sebagai pola umum. Namun sering kali perintahnya disimpan apa adanya, dengan seluruh isinya, termasuk kredensial bila ada.

Selama file itu tetap di komputer, risikonya terbatas, kecuali mesinnya diretas. Masalahnya dimulai ketika file itu masuk ke dalam commit.

Bukankah .gitignore sudah cukup?

Secara teori, ya. Menurut Ars Technica, dokumentasi Anthropic menyebutkan bahwa file ini ditambahkan ke .gitignore global milik pengembang, yang biasanya mencegahnya dipublikasikan.

Kelemahannya, aturan tersebut tidak ikut tercatat di tingkat repositori. Jika proyek di-clone ke mesin lain, atau sebuah folder menjadi repositori kemudian, file itu bisa terunggah tanpa sengaja. Apiiro menambahkan bahwa dalam banyak kasus Claude Code sendiri yang melakukan commit perubahan pengaturan, tanpa campur tangan pengguna.

Dokumentasi resmi GitHub menjelaskan perbedaannya. .gitignore di akar repositori, setelah di-commit, berlaku bagi siapa pun yang meng-clone proyek. Yang global di ~/.config/git/ignore hanya berlaku di komputermu.

Cukupkah menghapus filenya untuk menyelesaikan masalah?

Tidak. Menurut Apiiro, meski file sudah ditemukan dan dihapus dari repositori, rahasia tetap bisa bertahan di fork proyek asli, jika pengguna tidak berhati-hati.

Dokumentasi GitHub juga mengingatkan bahwa file yang sudah dilacak harus terlebih dahulu dilepas dari pelacakan dengan git rm --cached NAMA_FILE, dan baru setelah itu aturan pengecualian berlaku. Menambahkan satu baris ke .gitignore tidak menghapus apa yang sudah ada di riwayat. Karena itu, jika sebuah kredensial sudah terlanjur online, anggap ia sudah bocor dan ganti.

Batasan yang perlu diketahui

Angkanya berasal dari analisis Apiiro, seperti dilaporkan Ars Technica, dan kami belum memverifikasi datanya. Kami tidak tahu berapa banyak kredensial yang ditemukan masih aktif, atau apakah pihak ketiga sudah memakainya. Dalam sumber yang ada tidak ada tanggapan dari Anthropic mengenai kemungkinan perubahan perilaku Claude Code. Gambarannya bisa berubah jika perusahaan memutuskan untuk mengubah cara menyimpan perintah yang sudah disetujui.

Apa yang berubah bagi kamu yang bekerja di dunia digital

Jika kamu memakai Claude Code, segera cek apakah .claude/settings.local.json terlacak di repositori mana pun, termasuk yang privat. Proyek privat bisa menjadi publik, atau di-clone ke tempat lain. Tambahkan file itu ke .gitignore proyek lalu commit, agar aturannya berlaku untuk semua orang. Untuk mengecualikan file hanya di clone milikmu, GitHub menyarankan .git/info/exclude.

Lalu ada kebiasaan menulis kata sandi di dalam perintah. Lebih baik pakai variabel lingkungan atau pengelola rahasia. Di perusahaan, sebaiknya tambahkan pemindaian rahasia otomatis sebelum setiap push.

Pendapat kami

Kasus ini menunjukkan keterbatasan dari sisi desain produk, bukan sekadar kecerobohan pengguna. File yang bisa memuat kredensial seharusnya dikecualikan di tempat yang tepat, yaitu di repositori, bukan hanya di konfigurasi pribadi. Membebankan semuanya kepada pengguna kurang efektif, apalagi ketika alatnya melakukan commit secara otomatis. Meski begitu, ini tetap tanggung jawab kita juga. Perintah dengan kata sandi tertulis polos adalah kebiasaan yang harus diperbaiki, dengan atau tanpa asisten AI. Kecepatan yang dijanjikan alat-alat ini justru membuat disiplin menjaga rahasia makin mendesak.

Pertanyaan yang sering diajukan

File Claude Code mana yang berisi rahasia?

File tersebut adalah .claude/settings.local.json. Di dalamnya disimpan aturan yang dibuat saat kamu menyetujui perintah dengan opsi «Ya, dan jangan tanya lagi». Kadang perintahnya ditulis lengkap, termasuk kredensial di dalamnya.

Berapa banyak file terekspos yang ditemukan Apiiro?

Lebih dari 100.000 file diunggah ke repositori publik GitHub. Sekitar 1.100 file dari 63 organisasi berisi rahasia seperti token API, kata sandi database, atau kunci privat.

Apakah .gitignore global melindungi dari masalah ini?

Hanya sebagian. Aturan itu berlaku di komputermu, tetapi tidak di repositori. Jika proyek di-clone ke tempat lain atau sebuah folder menjadi repositori belakangan, file tersebut bisa ikut masuk ke commit.

Apakah menghapus file dari repositori menghilangkan rahasianya?

Tidak. Menurut Apiiro, rahasia bisa tetap ada di fork proyek. Jika kredensial sudah dipublikasikan, anggap saja sudah bocor dan ganti dengan yang baru.

Bagaimana cara mengecualikan file yang sudah dilacak Git?

Pertama hapus dari pelacakan dengan git rm --cached NAMA_FILE. Setelah itu tambahkan aturannya ke .gitignore. Tanpa langkah pertama, aturan itu tidak berpengaruh pada file yang sudah dilacak.

Yang perlu diperhatikan dalam beberapa bulan ke depan soal keamanan Claude Code

Pertanyaannya adalah apakah Anthropic akan mengubah cara menyimpan perintah yang sudah disetujui. Sementara itu, sebaiknya kamu pantau pembaruan alatnya.

  • Baca catatan rilis Claude Code untuk melihat apakah pengelolaan settings.local.json berubah, mulai dari artikel kami tentang versi 2.1.319.
  • Cari di riwayat repositorimu file .claude yang sudah ter-commit, lalu ganti kredensial yang muncul.
  • Tinjau aturan proteksi branch dengan memakai panduan kami tentang pull request di GitHub.

Sumber

Zenithby Meteora Web Sistem operasi untuk bisnismu. Media sosial, klien, pemesanan, dan faktur dalam satu platform. Gym, barbershop, profesional. Lihat Zenith → Demo gratis · tanpa kartu

Baca juga

Dari blog

Artikel terbaru