Security

Lebih dari 543.000 Kredensial Valid Tersebar di Repository GitHub Publik

Lebih dari 543.000 kredensial yang masih valid ditemukan terekspos di repository GitHub publik. Temuan ini menunjukkan bahwa meskipun GitHub telah menerapkan berbagai mekanisme untuk mencegah kebocoran secret, sejumlah besar kredensial tetap dapat bertahan dan digunakan dalam jangka waktu yang sangat lama.

Penelitian yang dilakukan Truffle Security tersebut menganalisis sekitar 224 juta repository dan lebih dari 58 miliar file. Hasilnya menunjukkan bahwa median waktu sebuah kredensial unik tetap dapat diakses secara publik mencapai 784 hari.

Artinya, kredensial yang tidak sengaja dipublikasikan ke GitHub tidak selalu segera ditemukan dan dicabut. Sebagian bahkan dapat bertahan selama bertahun-tahun sebelum akhirnya dinonaktifkan.

543.699 Kredensial Masih Bisa Digunakan

Dalam penelitian tersebut, Truffle Security menemukan 543.699 kredensial unik yang masih valid. Kredensial tersebut muncul berulang kali dalam lebih dari 1,1 juta file dan repository, termasuk salinan yang terdapat pada fork.

Dataset yang digunakan dalam penelitian berasal dari kumpulan data yang disiapkan untuk melatih large language models (LLM). Proses crawling dataset tersebut selesai pada 7 Agustus 2025.

Peneliti juga menemukan bahwa sekitar 10 persen kredensial yang masih aktif berusia lebih dari 6,3 tahun. Bahkan, kredensial tertua yang ditemukan berasal dari 2009.

Temuan ini memperlihatkan bahwa kebocoran secret di repository publik bukan hanya persoalan kredensial baru yang baru saja masuk ke GitHub. Secret yang telah lama berada dalam repository masih berpotensi menjadi risiko keamanan apabila belum dicabut atau diganti.

Jumlah Secret yang Terekspos Terus Meningkat

Truffle Security juga menemukan adanya peningkatan kepadatan secret dari waktu ke waktu.

Pada 2015, rata-rata ditemukan sekitar 3,72 kredensial yang masih valid untuk setiap satu juta file. Angka tersebut kemudian terus meningkat dan mencapai puncaknya sebesar 11,62 kredensial per satu juta file pada 2025.

Jumlah tersebut menunjukkan bahwa pertumbuhan penggunaan layanan cloud, API, automation, dan berbagai layanan developer turut memperbesar jumlah secret yang digunakan dalam source code.

API keys, access tokens, database credentials, dan service account credentials yang tertanam langsung di dalam source code dapat menjadi masalah serius apabila repository dapat diakses publik.

Temuan terbaru ini juga lebih dari dua kali lipat dibandingkan hasil penelitian Truffle Security sebelumnya terhadap Hugging Face, yang menemukan 221.303 kredensial aktif.

Push Protection Belum Menghilangkan Risiko Kebocoran

GitHub sebenarnya telah memiliki mekanisme Push Protection yang dirancang untuk mencegah pengguna secara tidak sengaja mengunggah secret ke repository.

Fitur tersebut pertama kali diperkenalkan pada April 2022 untuk pengguna Advanced Security. Pada Mei 2023, perlindungannya diperluas ke repository publik dan kemudian diaktifkan secara default pada 2024.

Push Protection bekerja dengan mendeteksi pola tertentu yang menyerupai secret, seperti API key dan access token, ketika kode hendak diunggah. Jika terdeteksi, proses push dapat diblokir.

Namun, terdapat satu keterbatasan penting: Push Protection tidak secara otomatis mencabut kredensial yang sudah pernah terekspos sebelumnya.

Penelitian Truffle Security menemukan bahwa 199.843 kredensial yang masih valid pada Juli telah terekspos setelah Push Protection diaktifkan secara default pada Februari 2024. Jumlah tersebut setara dengan sekitar 36,8 persen dari seluruh kredensial valid yang ditemukan.

Dengan demikian, mekanisme pencegahan kebocoran tidak secara otomatis menyelesaikan masalah kredensial yang sudah terlanjur masuk ke repository.

Tidak Semua Jenis Secret Dilindungi

Salah satu temuan penting lainnya adalah bahwa sekitar 51,8 persen kredensial aktif berada dalam kategori yang tidak diblokir oleh konfigurasi default Push Protection.

Kategori tersebut antara lain database connection strings dan Google API keys.

Hal ini menunjukkan bahwa keberadaan secret scanning saja belum cukup untuk menjamin seluruh kredensial sensitif terlindungi. Jenis credential yang dapat digunakan oleh sebuah aplikasi sangat beragam, sementara sistem deteksi harus mengenali pola yang sesuai untuk masing-masing layanan.

Meski demikian, Push Protection tetap menunjukkan dampak terhadap kategori secret yang berada dalam cakupannya.

Setelah fitur tersebut diaktifkan secara default, tingkat paparan kredensial pada kategori yang dilindungi turun sekitar 53 persen.

Sebagian Besar Kredensial Belum Dicabut

Penelitian tersebut juga menemukan perbedaan yang cukup besar dalam tingkat pencabutan kredensial berdasarkan jenis layanan.

Dari 101.886 npm token yang ditemukan telah dimasukkan ke dalam repository, hanya satu token yang masih dapat digunakan.

Kondisinya berbeda jauh pada kredensial Google Cloud. Dari 126.963 Google Cloud service account credentials yang terekspos, sebanyak 69.041 masih valid dan dapat digunakan ketika penelitian dilakukan.

Perbedaan ini menunjukkan bahwa mekanisme pengelolaan dan pencabutan secret sangat bergantung pada jenis layanan serta bagaimana pemilik kredensial menangani kebocoran.

Sebuah credential yang ditemukan di repository publik seharusnya tidak dianggap aman hanya karena belum terlihat adanya penyalahgunaan. Selama kredensial masih aktif, pihak lain yang menemukannya berpotensi menggunakannya untuk mengakses layanan terkait.

Apa yang Harus Dilakukan Jika Credential Terekspos?

Kebocoran credential harus diperlakukan sebagai insiden keamanan, meskipun belum ada bukti bahwa credential tersebut telah disalahgunakan.

Langkah pertama adalah segera melakukan rotation atau revoke terhadap credential yang terekspos. Menghapus file dari repository saja tidak cukup karena credential masih dapat tersimpan dalam Git history, commit lama, branch, atau fork.

Repository juga perlu dibersihkan dari secret yang tidak semestinya berada di dalam source code. Setelah itu, riwayat repository perlu diperiksa untuk memastikan credential tidak masih tersedia pada commit sebelumnya.

Pengembang juga disarankan menggunakan secret management dan menghindari penyimpanan API key, access token, password, maupun credential lainnya secara langsung di dalam source code.

Untuk credential yang memang harus digunakan dalam aplikasi, penerapan automatic expiration dapat mengurangi dampak apabila secret tersebut suatu saat bocor.

Kebocoran Secret Tetap Menjadi Risiko Besar

Temuan lebih dari setengah juta kredensial valid di repository publik menunjukkan bahwa masalah secret exposure belum selesai meskipun platform pengembangan telah menyediakan fitur keamanan untuk mencegahnya.

GitHub dapat membantu mendeteksi dan mencegah sebagian kebocoran, tetapi keamanan credential tetap bergantung pada bagaimana pengembang dan organisasi mengelola secret sepanjang siklus hidupnya.

Yang paling penting, credential yang sudah terekspos harus segera dianggap tidak aman. Menghapusnya dari source code tanpa melakukan rotation atau revocation tidak menghilangkan risiko, karena salinan credential dapat tetap tersedia di history repository maupun fork.

Pada akhirnya, perlindungan terhadap secret membutuhkan kombinasi antara secret scanning, push protection, pengelolaan credential yang tepat, pembatasan hak akses, serta mekanisme expiration dan rotation secara berkala.

Leave a Reply

Your email address will not be published. Required fields are marked *


Back to top button