Persistent Threats from Persistent Secrets

Avatar photo

Pendahuluan: Sebuah Masalah yang Tidak Kunjung Usai

Dalam dunia yang semakin terotomatisasi dan terkoneksi, kredensial digital telah menjadi kunci utama untuk mengakses berbagai sistem dan layanan. Token API, password database, SSH keys, dan sertifikat lainnya tersebar di seluruh rantai pengembangan perangkat lunak. Sayangnya, kunci-kunci digital ini tidak selalu tersimpan dengan aman. Mereka sering kali terungkap secara tidak sengaja di repositori kode, log, file konfigurasi, atau bahkan melalui saluran komunikasi internal yang tidak terlindungi.

Menurut GitGuardian State of Secrets Sprawl Report 2025, sebanyak 23,770,171 secrets baru terdeteksi di repositori publik GitHub selama tahun 2024, meningkat 25% dari tahun sebelumnya. Lebih mengejutkan lagi, 70% dari secrets yang bocor pada tahun 2022 masih tetap aktif hingga saat ini, menunjukkan kurangnya tindakan remediasi yang efektif.

Artikel ini membahas mengapa masalah ini sangat persisten, apa saja faktor yang menyebabkan secrets yang terekspos tidak segera dihapus, serta strategi dan praktik terbaik untuk mencegah, mendeteksi, dan menanggulangi kebocoran secrets secara sistemik.

Anatomi Secrets Sprawl: Apa yang Tersebar dan Mengapa

Secrets adalah informasi sensitif yang digunakan untuk autentikasi dan otorisasi, seperti:

  • API keys (misalnya AWS_ACCESS_KEY_ID, Stripe API token)
  • Password untuk basis data atau layanan eksternal
  • Private keys (SSH, TLS/SSL)
  • OAuth tokens dan session identifiers
  • Sertifikat digital dan signing keys

Di lingkungan pengembangan modern yang mengadopsi pendekatan continuous integration and deployment (CI/CD), secrets sering kali disematkan langsung dalam file konfigurasi (seperti .env, config.json, atau settings.py), pipeline build, atau bahkan hardcoded dalam source code. Hal ini menyebabkan secrets sangat rentan terekspos, baik melalui commit ke repositori publik, kesalahan konfigurasi .gitignore, maupun melalui sistem logging yang kurang dikontrol.

Di sisi lain, semakin kompleks arsitektur modern seperti penggunaan microservices, cloud-native workloads, dan otomasi infrastruktur (Infrastructure-as-Code), menyebabkan secrets berpindah-pindah antarlayanan dan tim dengan frekuensi tinggi. Tanpa manajemen terpusat, sprawl pun menjadi tak terhindarkan.

Mengapa Secrets yang Bocor Tetap Tidak Diperbaiki

Banyak organisasi menyadari bahwa mereka memiliki secrets yang bocor. Namun, dalam praktiknya, kredensial-kredensial tersebut sering kali tetap aktif dan dapat dieksploitasi selama berminggu-minggu, bahkan berbulan-bulan. Ada beberapa alasan utama mengapa hal ini terus terjadi:

  1. Kurangnya Visibilitas

Tim keamanan sering tidak memiliki akses penuh ke seluruh repositori, CI/CD pipeline, atau lingkungan kerja tim developer. Tanpa observabilitas menyeluruh, secrets yang bocor di luar perimeter pengawasan sulit terdeteksi secara proaktif.

  1. Minimnya Automasi Deteksi

Sebagian besar organisasi masih bergantung pada deteksi manual atau notifikasi email dari platform seperti GitHub. Tanpa secret scanning otomatis dalam setiap tahap pipeline, banyak kebocoran yang tidak pernah diketahui.

  1. Kompleksitas Organisasi

Dalam organisasi besar, siapa yang bertanggung jawab atas sebuah kredensial bisa jadi tidak jelas. Kredensial bisa dibuat oleh tim A, digunakan oleh tim B, tapi hanya diketahui oleh tim C. Tidak adanya kepemilikan yang jelas menyebabkan remediation tertunda.

  1. Risiko dan Beban Perbaikan

Mengganti kredensial bukan proses yang mudah. Proses rotasi sering kali mengakibatkan downtime atau harus melalui proses pengujian ulang yang kompleks. Akibatnya, banyak tim menunda perbaikan dengan harapan “tidak akan terjadi apa-apa.”

  1. Kurangnya Edukasi Developer

Masih banyak developer yang tidak memahami bahaya nyata dari credential leaks, atau bagaimana cara yang benar untuk menyimpan secrets. Tanpa pendidikan berkelanjutan, praktik yang buruk akan terus terulang.

Dampak yang Terus Mengintai

Secrets yang bocor bukan hanya potensi risiko ia adalah celah keamanan aktif. Threat actor secara aktif memindai GitHub dan sumber terbuka lainnya menggunakan keyword seperti “aws_access_key”, “token”, dan “private_key”. Bahkan, ada bot otomatis yang langsung mengeksploitasi kredensial begitu ditemukan.

Dampak dari secrets yang terekspos bisa sangat destruktif:

  • Eksfiltrasi data sensitif melalui API dengan akses tak terbatas.
  • Privilege escalation dalam infrastruktur cloud menggunakan IAM credentials.
  • Persistence dan lateral movement dalam jaringan internal melalui VPN atau SSH keys.
  • Eksploitasi supply chain, terutama bila secrets digunakan dalam libraries atau pipeline deployment.
  • Kompromi compliance (misalnya PCI-DSS, HIPAA, GDPR) dan potensi denda besar.

Dalam banyak kasus, satu kredensial dapat menjadi titik awal dari serangan yang jauh lebih besar.

Keadaan Tools dan Deteksi Saat Ini

Sebagai contoh untuk deteksi secrets adalah penggunaan Gitleaks, sebuah tools open-source berbasis Go yang digunakan secara luas oleh pentester, red team, dan tim DevSecOps.

Gitleaks adalah secret scanner yang ringan, cepat, dan mendukung integrasi lintas sistem. Ia mampu mendeteksi berbagai jenis secrets baik dari file saat ini, riwayat commit, hingga staged changes yang belum di-push ke remote.

Namun, sebagian besar tools hanya melakukan scanning pasca-komit (post-push detection), artinya secrets sudah terlanjur terekspos. Tools yang lebih canggih perlu disisipkan ke dalam local commit hooks, pull request hooks, dan pipeline build untuk mencegah bocornya secrets sejak awal.

Integrasi Deteksi dan Respons dalam Praktik Red Team dan Pentest

Dalam konteks penetration testing dan red teaming, kredensial yang bocor sering kali menjadi initial access vector yang sangat efektif. Banyak pentester dan red teamer mengeksploitasi hardcoded secrets untuk pivoting, privilege escalation, atau persistence di lingkungan korban. Dalam simulasi serangan yang lebih kompleks, kredensial yang ditemukan dalam file konfigurasi lama atau commit history menjadi jalan pintas menuju kompromi sistem internal.

Sebagai contoh:

  • AWS IAM keys yang ditemukan di repositori privat kerap digunakan untuk enumerasi bucket S3, eskalasi hak akses melalui API iam:PassRole, atau bahkan deploy malicious Lambda untuk persistence.
  • ODBC connection string dalam kode backend dapat membuka akses langsung ke database produksi.
  • Telegram bot token bisa dimanfaatkan untuk memanipulasi komunikasi atau sebagai command and control (C2) channel.

Masalah Budaya: Shift-Left dan Tanggung Jawab Bersama

Tantangan terbesar bukanlah teknologi, tetapi budaya organisasi. Banyak developer menganggap keamanan adalah tugas tim security, bukan bagian dari pekerjaan mereka. Hal ini bertolak belakang dengan filosofi DevSecOps di mana keamanan harus menjadi tanggung jawab bersama sejak tahap paling awal (shift-left security).

Mengubah budaya ini memerlukan:

  • Edukasi berkelanjutan bagi developer tentang risiko dan praktik penyimpanan secrets yang aman.
  • Integrasi keamanan ke dalam developer workflow, bukan menambah hambatan.
  • Transparansi dan akuntabilitas, termasuk log akses terhadap secrets dan audit trail.

Perubahan budaya ini sulit, namun krusial.

Solusi: Bagaimana Cara Menanggulanginya

  1. Pencegahan
  • Jangan menyimpan secrets di dalam kode. Gunakan variabel lingkungan dan Secrets Manager.
  • Terapkan commit hooks seperti pre-commit untuk mencegah upload credentials.
  • Gunakan template konfigurasi .gitignore yang sesuai.
  1. Deteksi
  • Gunakan tools seperti GitGuardian, Gitleaks, TruffleHog secara otomatis di pipeline.
  • Aktifkan fitur secret scanning di platform git repository (GitHub, GitLab).
  • Pantau sistem logging dan observasi untuk mendeteksi kebocoran runtime.
  1. Remediasi
  • Gunakan rotasi otomatis kredensial melalui Vault atau AWS Secrets Manager.
  • Tindaklanjuti setiap kebocoran dengan revoke and replace.
  • Dokumentasikan setiap insiden dan pelajari akar penyebabnya.
  1. Tata Kelola dan Kepemilikan
  • Tetapkan pemilik kredensial yang jelas dalam setiap tim.
  • Buat kebijakan penggunaan secrets yang baku dan enforce melalui policy-as-code.
  • Audit secara berkala dan buat laporan tingkat eksekutif.

Masa Depan: Zero Secrets Architecture

Ke depan, paradigma baru mulai diterapkan untuk menghilangkan kebutuhan menyimpan secrets statis sama sekali. Pendekatan Zero Secrets Architecture atau ephemeral credentials kini menjadi topik hangat, termasuk:

  • Just-In-Time secrets: hanya dibuat saat dibutuhkan, langsung kedaluwarsa.
  • Workload identity: layanan tidak menggunakan token statis, tapi mengautentikasi dengan identitas sistem (misalnya, SPIFFE/SPIRE, AWS IAM Roles for Service Accounts).
  • Federated Identity: otentikasi lintas layanan tanpa hardcoded secrets.

Arsitektur semacam ini mengurangi kemungkinan eksposur bahkan ketika terjadi kebocoran, karena secrets tidak lagi memiliki umur panjang.

Kesimpulan: Masalah yang Tak Bisa Diabaikan

Secrets sprawl bukan hanya masalah teknis ia adalah masalah budaya, tata kelola, dan tanggung jawab kolektif. Meskipun tools scanning telah berkembang, masalah sebenarnya adalah ketidakmampuan organisasi untuk merespons kebocoran secara cepat, efektif, dan berulang. The persistence problem adalah cerminan dari kegagalan kita mengadopsi prinsip keamanan sebagai default.

Namun demikian, masa depan belum tertutup. Dengan edukasi yang menyeluruh, budaya shift-left, automasi deteksi, serta arsitektur modern tanpa secrets statis, kita dapat bergerak menuju dunia pengembangan perangkat lunak yang lebih aman dan berkelanjutan.

Referensi:

  1. GitGuardian. State of Secrets Sprawl 2025. https://www.gitguardian.com/state-of-secrets-sprawl-report-2025
  2. The Hacker News. The Persistence Problem: Why Exposed Credentials Remain Unfixed. https://thehackernews.com/2025/05/the-persistence-problem-why-exposed.html
  3. Find secret with Gitleaks. https://github.com/gitleaks/gitleaks

Tulisan saya ini juga sudah dipublish di Punggawa Magazine Vol.5 (Infosec Punggawa)

Total
0
Shares
Leave a Reply

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

Previous Post
Mengenal Subdomain Takeover

Deep Dive into Subdomain Takeover

Next Post

Cross-Platform API Reuse in Mobile Apps: Hidden Attack Surface in Shared Backends

Related Posts