Dalam dunia bug bounty, tidak semua vulnerability harus berupa Remote Code Execution atau SQL Injection untuk mendapatkan validasi dan reward. Terkadang, kelemahan sederhana pada mekanisme authorization frontend juga dapat dianggap sebagai temuan yang valid apabila menyebabkan exposure terhadap internal application behavior.
Melalui platform YesWeHack, saya berhasil mendapatkan reward sebesar $200 setelah menemukan vulnerability berupa improper access control pada sebuah aplikasi registrasi bisnis.
Saat melakukan pengujian keamanan terhadap aplikasi berbasis Single Page Application (SPA), saya menemukan bahwa salah satu route internal frontend masih dapat diakses tanpa autentikasi.
Walaupun pengguna belum login, aplikasi tetap menampilkan beberapa komponen internal seperti:
- Dashboard layout
- Navigation sidebar
- Struktur frontend aplikasi
- Embedded survey form
Selain itu, terdapat external survey form yang dapat diakses langsung tanpa autentikasi.
Temuan ini dikategorikan sebagai:
Improper Access Control / Missing Frontend Authorization
Analisis Teknis
Dari hasil pengujian, backend API sebenarnya sudah menerapkan authorization dengan benar. Request tanpa session valid tetap menghasilkan response:
401 Unauthorized
Namun pada sisi frontend, route protection tidak diterapkan secara konsisten.
Frontend tetap merender dashboard components meskipun user belum memiliki session valid. Saat dilakukan pengujian menggunakan interception proxy seperti Burp Suite, perubahan response dari:
401 Unauthorized
menjadi:
200 OK
membuat frontend tetap menampilkan komponen internal aplikasi.
Hal ini menunjukkan adanya ketergantungan terhadap client-side response handling tanpa frontend route guard yang memadai.
Proof of Concept (PoC)
1. Akses Route Internal Tanpa Login
Dalam kondisi browser belum login, akses salah satu route internal aplikasi secara langsung.
2. Observe Frontend Behavior
Frontend tetap menampilkan:
- Sidebar dashboard
- Navigation menu
- Layout internal aplikasi
- Embedded survey form
meskipun user belum terautentikasi.
3. Akses Survey Form
Survey form eksternal dapat diakses secara publik tanpa validasi session.
4. Backend Tetap Aman
Ketika endpoint API diakses langsung tanpa autentikasi, backend tetap mengembalikan:
401 Unauthorized
yang menunjukkan backend authorization masih berjalan dengan benar.
Ancaman dan Risiko
Walaupun tidak ditemukan kebocoran data sensitif, vulnerability ini tetap memiliki dampak keamanan karena dapat menyebabkan:
- Exposure terhadap internal application structure
- Disclosure workflow aplikasi
- Enumerasi route internal
- Exposure terhadap external resource
- Membantu attacker dalam tahap reconnaissance
Dalam beberapa kasus, informasi kecil seperti struktur frontend dapat menjadi pijakan awal untuk chaining vulnerability lainnya.
Rekomendasi Perbaikan
Beberapa remediation yang direkomendasikan:
Implement Frontend Route Guards
Seluruh protected route harus melakukan validasi autentikasi sebelum dirender.
Sinkronisasi Authorization Frontend dan Backend
Frontend tidak boleh hanya mengandalkan response handling dari client-side.
Restrict External Resource Access
Survey form atau resource eksternal sebaiknya hanya tersedia untuk user terautentikasi.
Hide Protected Components
Dashboard components dan navigation menu tidak boleh muncul sebelum session diverifikasi.
Temuan ini menjadi pengingat bahwa keamanan frontend tetap merupakan bagian penting dalam pengembangan aplikasi modern, terutama pada arsitektur Single Page Application (SPA).
Walaupun backend telah aman, kelemahan kecil pada sisi frontend authorization tetap dapat menghasilkan information disclosure yang dianggap valid dalam program bug bounty.


