Networking

Apa yang Diungkap 5 Juta Aplikasi Tentang Rahasia di JavaScript

54
apa-yang-diungkap-5-juta-aplikasi-tentang-rahasia-di-javascript
Apa yang Diungkap 5 Juta Aplikasi Tentang Rahasia di JavaScript

Kunci API yang bocor bukanlah hal baru, namun skala masalah pada kode front-end sebagian besar masih menjadi misteri – hingga saat ini. milik penyusup tim peneliti membangun metode pendeteksian rahasia baru dan memindai 5 juta aplikasi yang secara khusus mencari rahasia yang tersembunyi dalam kumpulan JavaScript.

Apa yang kami temukan mengungkapkan kesenjangan besar dalam cara industri mengamankan aplikasi satu halaman.

42.000 rahasia tersembunyi di depan mata

Hasil penerapan kami metode deteksi baru dalam skala besar sangat mengejutkan. File keluarannya saja berukuran lebih dari 100 MB teks biasa, berisi lebih dari 42.000 token terbuka di 334 jenis rahasia berbeda.

Ini bukan hanya kunci pengujian bernilai rendah atau token mati. Kami menemukan kredensial aktif dan penting terdapat dalam kode produksi, yang secara efektif melewati kontrol keamanan yang diandalkan sebagian besar organisasi.

Berikut adalah rincian risiko paling kritis yang kami temukan.

Token Repositori Kode

Eksposur yang paling berdampak adalah token untuk platform repositori kode seperti GitHub dan GitLab. Secara total, kami menemukan 688 token, banyak di antaranya masih aktif dan memberikan akses penuh ke repositori.

Dalam satu kasus (ditunjukkan di bawah) token akses pribadi GitLab tertanam langsung dalam file JavaScript. Token ini dicakup untuk memungkinkan akses ke semua repositori pribadi dalam organisasi, termasuk rahasia pipeline CI/CD untuk layanan selanjutnya seperti AWS dan SSH.

Kunci API Manajemen Proyek

Paparan signifikan lainnya melibatkan kunci API untuk Linear, sebuah aplikasi manajemen proyek, yang tertanam langsung dalam kode front-end:

Token tersebut mengekspos seluruh instans Linear organisasi, termasuk tiket internal, proyek, dan tautan ke layanan hilir dan proyek SaaS.

Segala sesuatu yang lain

Kami mengidentifikasi rahasia yang terungkap di berbagai layanan lainnya, termasuk:

API perangkat lunak CAD – akses ke data pengguna, metadata proyek, dan desain bangunan, termasuk rumah sakit

Platform email – akses ke milis, kampanye, dan data pelanggan

Webhook untuk platform obrolan dan otomatisasi – 213 Slack, 2 Microsoft Teams, 1 Discord, dan 98 Zapier, semuanya aktif

Konverter PDF – akses ke alat pembuatan dokumen pihak ketiga

Platform intelijen dan analitik penjualan – akses ke data perusahaan dan kontak yang tergores

Penyingkat tautan – kemampuan untuk membuat dan menghitung tautan

Mengapa rahasia ini terlewatkan?

Pemindai tradisional tidak “berbicara” JavaScript

Pendekatan tradisional dan sepenuhnya otomatis untuk mendeteksi rahasia aplikasi adalah dengan mencari serangkaian jalur yang diketahui dan menerapkan ekspresi reguler untuk mencocokkan format rahasia yang diketahui.

Meskipun metode ini berguna dan dapat menangkap beberapa paparan, metode ini memiliki batasan yang jelas dan tidak akan mendeteksi semua jenis kebocoran, terutama yang memerlukan pemindai untuk menelusuri aplikasi atau mengautentikasinya.

Contoh bagusnya adalah Templat token akses pribadi GitLab Nuclei. Pemindai diberi URL dasar, misalnya https://portal.intruder.io/, yang menyebabkan templat:

  1. Buat permintaan HTTP GET ke https://portal.intruder.io/

  2. Periksa respons langsung terhadap permintaan tunggal itu, mengabaikan halaman dan sumber daya lain seperti file JavaScript

  3. Mencoba mengidentifikasi pola token akses pribadi GitLab

  4. Jika ditemukan, buat permintaan tindak lanjut ke API publik GitLab untuk memeriksa apakah token tersebut aktif

  5. Jika aktif, ajukan masalah

Ini jelas merupakan contoh sederhana, namun pendekatan ini efektif. Terutama ketika templat menentukan banyak jalur di mana rahasia biasanya terungkap.

Format ini tipikal untuk pemindai infrastruktur, yang tidak menjalankan browser tanpa kepala. Ketika pemindai diberikan URL dasar untuk dipindai (misalnya, https://portal.intruder.io), permintaan selanjutnya yang akan dibuat oleh browser (seperti file JavaScript yang diperlukan untuk merender halaman, misalnya https://portal.intruder.io/assets/index-DzChsIZu.js) tidak akan dibuat menggunakan pendekatan kuno ini.

Titik buta “proses pembangunan”.

Alat Pengujian Keamanan Aplikasi Statis (SAST) menganalisis kode sumber untuk mengidentifikasi kerentanan dan merupakan cara utama untuk mendeteksi rahasia dalam kode sebelum mencapai produksi. Mereka efektif dalam menangkap kredensial yang dikodekan secara keras dan mencegah beberapa kelas paparan.

Namun kami menemukan bahwa metode SAST tidak mencakup gambaran keseluruhan: beberapa rahasia dalam kumpulan JavaScript lolos dari celah dengan cara yang tidak dapat dideteksi oleh analisis statis.

Dilema DAST

Alat Pengujian Keamanan Aplikasi Dinamis (DAST) umumnya merupakan cara yang lebih tangguh untuk memindai aplikasi, dan cenderung memiliki fungsi yang lebih kompleks – memungkinkan penjelajahan aplikasi secara penuh, dukungan untuk autentikasi, dan kemampuan yang lebih luas dalam mendeteksi kelemahan lapisan aplikasi.

Pemindai DAST mungkin tampak sebagai pilihan alami untuk mendeteksi rahasia di front-end aplikasi dan seharusnya tidak ada yang menghalangi pemindai jenis ini untuk menemukan file JavaScript yang tersedia, atau memindai rahasia di dalamnya.

Namun, DAST lebih mahal, memerlukan konfigurasi mendalam, dan pada kenyataannya biasanya hanya diperuntukkan bagi sejumlah kecil aplikasi bernilai tinggi. Misalnya, Anda tidak mungkin mengonfigurasi pemindai DAST untuk setiap aplikasi yang Anda miliki di seluruh kawasan digital yang luas. Selain itu, banyak alat DAST tidak mengimplementasikan ekspresi reguler yang cukup luas dibandingkan dengan rahasia baris perintah yang terkenal.

Hal ini menyisakan kesenjangan yang jelas yang seharusnya dapat dicakup oleh pemindai infrastruktur tradisional, namun hal ini tidak tercakup – dan kemungkinan besar juga tidak tercakup oleh pemindai DAST karena keterbatasan penerapan, anggaran, dan pemeliharaan.

Rahasiakan rahasia Anda

Kontrol shift-kiri penting. SAST, pemindaian repositori, dan pagar pembatas IDE menangkap masalah nyata dan mencegah paparan seluruh kelas. Namun seperti yang ditunjukkan oleh penelitian ini, mereka tidak mencakup semua jalur yang dapat diambil oleh sebuah rahasia dalam produksi.

Rahasia yang diperkenalkan selama pembangunan dan penerapan dapat melewati perlindungan tersebut dan berakhir di kode front-end, lama setelah kontrol shift-kiri dijalankan. Dan masalah ini hanya akan bertambah ketika otomatisasi dan kode yang dihasilkan AI menjadi lebih umum.

Itu sebabnya spidering aplikasi satu halaman diperlukan untuk menangkap rahasia sebelum mencapai produksi. Kami telah membuat deteksi rahasia SPA otomatis ke dalam Penyusup sehingga tim dapat menangkapnya.

Pelajari lebih lanjut.

Pengarang

Ben Marr, Insinyur Keamanan, Penyusup

Ben adalah Insinyur Keamanan di Intruder, tempat dia mengotomatiskan pemindaian keamanan ofensif dan melakukan penelitian keamanan. Latar belakangnya adalah sebagai penguji penetrasi bersertifikat OSWE dan insinyur perangkat lunak PHP.

Disponsori dan ditulis oleh Pengacau.

Exit mobile version