Secret di Git: Kenapa Bisa Bocor dan Cara Mencegahnya
Satu kredensial yang terlanjur ter-commit bisa jadi satu-satunya pintu yang dibutuhkan peretas. Bukan karena kodenya kurang canggih — kebanyakan kebocoran justru dimulai dari hal sepele: file .env ikut ter-upload, API key ditulis langsung di source code, atau token lama masih menempel di riwayat git. Git memang menyimpan semuanya, termasuk kesalahan yang sudah kamu hapus.
Artikel ini menjelaskan kenapa secret di git adalah masalah yang serius, bagaimana gitleaks bekerja untuk mendeteksinya, dan lima langkah praktis agar kredensialmu tidak pernah sampai ke repository.
Kenapa secret yang bocor itu masalah besar
Secret — API key, password database, token akses cloud, kunci SSH — adalah identitas digital aplikasimu. Siapa pun yang memegangnya bisa bertindak seolah-olah dia aplikasimu: membaca data, mengubah konfigurasi, atau menguras kuota layanan berbayar.
Yang sering diremehkan: deteksi kebocoran tidak selalu langsung terlihat. Serangan bisa terjadi berminggu-minggu setelah commit — lewat bot yang memindai GitHub secara otomatis untuk mencari pola kredensial. Alat-alat seperti trufflehog atau gitleaks dipakai dua arah: untuk menemukan secret, termasuk oleh orang yang tidak seharusnya memilikinya.
Bagaimana secret bisa sampai ke git
Kebocoran secret jarang disengaja. Pola yang paling umum:
- File .env ikut ter-commit. Daftar .gitignore belum dibuat atau salah tulis, dan file konfigurasi lokal ikut ter-upload pada commit pertama.
- Hardcode di source code. API key ditulis langsung di kode karena "nanti diganti" — dan tidak pernah diganti.
- Copy-paste ke file lain. Token yang ada di dokumentasi internal atau contoh kode menempel di file proyek, lalu ter-commit tanpa disadari.
- Sejarah lama. Secret yang sudah dihapus tetap ada di riwayat git dan bisa diambil oleh siapa pun yang punya akses repository.
gitleaks: detektor secret untuk repository
gitleaks adalah alat open-source (MIT license) yang memindai repository git untuk menemukan pola kredensial: AWS keys, GitHub tokens, password, private keys, dan ratusan pola lainnya. Ia bekerja dengan dua cara utama:
- Memindai riwayat git — bukan hanya kondisi file saat ini, tapi seluruh commit yang pernah ada. Ini penting karena secret yang sudah "dihapus" tetap terdeteksi.
- Bisa dipasang sebagai pre-commit hook — memblokir commit yang mengandung secret sebelum masuk ke repository.
Karena aturannya berbasis pola dan bisa disesuaikan, gitleaks jarang menghasilkan false negative untuk secret umum — dan tetap bisa di-tune agar tidak terlalu berisik untuk pola kustom.
Lima langkah mencegah secret bocor
- Amankan .gitignore sejak awal. Pastikan .env, .env.*, file kunci, dan folder konfigurasi lokal tidak pernah masuk git. Buat sebelum commit pertama — lebih mudah daripada membersihkan setelahnya.
- Jangan pernah hardcode kredensial. Gunakan environment variable atau secret manager. Kode yang benar membaca nilai dari lingkungan, bukan menyimpannya.
- Pasang deteksi otomatis. Jalankan gitleaks sebagai pre-commit hook di mesin developer dan sebagai langkah di CI/CD — commit atau PR yang mengandung secret langsung diblokir.
- Scan riwayat git secara berkala. Secret lama di commit bersejarah tidak muncul di code review biasa. Lakukan pemindaian riwayat secara rutin, terutama untuk repository yang sudah berumur.
- Rotasi secret yang pernah bocor. Kalau ada indikasi kebocoran: cabut key-nya, buat yang baru, dan pastikan yang lama tidak berfungsi. Rotasi bukan opsional — itu satu-satunya cara memastikan secret yang bocor tidak bisa dipakai.
Kalau sudah terlanjur bocor
Jangan panik — tapi bertindak cepat. Pertama, rotasi semua secret yang terpengaruh. Kedua, bersihkan riwayat git (misalnya dengan filter-repo) supaya secret tidak lagi tersedia di commit lama. Ketiga, cek log akses layanan terkait untuk melihat apakah ada aktivitas mencurigakan. Terakhir, audit ulang proses: kenapa bisa masuk, dan bagaimana mencegahnya terulang.
Bagaimana AISG membantu
AISG memasukkan secret scanning ke dalam alur penilaian keamanan aplikasimu — termasuk deteksi pola kredensial di source code dan riwayat proyek, berdampingan dengan SAST, SCA, dan pemeriksaan infrastruktur. Hasilnya disatukan dalam satu laporan skor risiko, jadi kamu tidak perlu menjalankan belasan alat secara terpisah (baca: Apa Itu SAST dan Kenapa Developer Wajib Peduli).
Dan karena pemindaian berjalan di mesinmu sendiri, kode dan secret yang dideteksi tidak pernah meninggalkan komputermu — hanya metadata temuan yang dikirim ke cloud.
Kesimpulan
Secret di git adalah salah satu kerentanan yang paling murah dicegah dan paling mahal dibayar. Dengan .gitignore yang benar, kebiasaan tidak hardcode, deteksi otomatis di pre-commit dan CI/CD, serta rotasi rutin, kamu menutup celah yang paling sering dieksploitasi — sebelum bot lain menemukannya lebih dulu.