Broken Access Control adalah salah satu celah keamanan paling berbahaya dalam dunia aplikasi web yang tercantum dalam OWASP Top 10 2021. Celah ini menempati posisi pertama karena ditemukan dalam 94% aplikasi yang diuji dan menyumbang lebih dari 318.000 insiden yang tercatat. Artikel ini akan membahas secara komprehensif mengenai Broken Access Control, penyebab, cara pencegahan, serta contoh kasus nyata yang menggambarkan dampak kerentanan ini.
Apa Itu Broken Access Control?
Access Control adalah mekanisme yang memastikan bahwa pengguna hanya dapat mengakses informasi dan melakukan aksi sesuai dengan hak dan izin mereka. Broken Access Control terjadi ketika ada kegagalan dalam penerapan kontrol akses, sehingga memungkinkan pengguna mengakses informasi, data, atau fitur di luar batasan yang seharusnya.
Beberapa Bentuk Kerentanan Broken Access Control:
- Prinsip Least Privilege yang Dilanggar:
Aplikasi memberikan akses lebih luas dari yang dibutuhkan pengguna, alih-alih menerapkan prinsip deny by default (menolak akses jika tidak secara eksplisit diberikan). - Parameter Tampering atau Force Browsing:
Pengguna bisa memodifikasi URL atau parameter HTTP untuk mengakses halaman atau data tanpa izin yang sah. - Insecure Direct Object References (IDOR):
Aplikasi memperbolehkan akses ke data orang lain hanya dengan menggunakan identifier unik (misalnya, ID akun) tanpa melakukan validasi otoritas. - Akses API yang Tidak Dilindungi:
Metode API seperti POST, PUT, DELETE tidak memiliki kontrol akses yang memadai, memungkinkan pengguna tak berizin melakukan aksi yang seharusnya dibatasi. - Privilege Escalation (Peningkatan Hak Akses):
Pengguna biasa dapat berperilaku seperti admin atau bahkan mengakses fitur yang hanya untuk pengguna login tanpa otentikasi yang benar. - Manipulasi Metadata:
Token seperti JWT (JSON Web Token) atau cookie dapat dimanipulasi untuk meningkatkan hak akses. - Kesalahan Konfigurasi CORS:
API dapat diakses dari domain asing yang tidak dipercaya, memungkinkan eksploitasi dari sumber luar. - Force Browsing:
Pengguna tak terautentikasi dapat mengakses halaman terbatas atau pengguna biasa dapat mengakses halaman khusus admin.
Contoh Kasus dan Studi Kasus Nyata
Contoh 1: Parameter Tampering (Manipulasi Parameter)
Seorang pengguna biasa mencoba mengakses data akun orang lain dengan mengubah parameter di URL.
https://example.com/app/accountInfo?acct=12345
Pengguna mengganti parameter acct menjadi 67890:
https://example.com/app/accountInfo?acct=67890
Jika aplikasi tidak memverifikasi otoritas pengguna, maka pengguna tersebut dapat mengakses data orang lain tanpa izin.
Dampak:
- Pelanggaran privasi.
- Potensi pencurian data sensitif (seperti informasi pribadi atau keuangan).
Contoh 2: Force Browsing (Akses Paksa ke Halaman Khusus)
Aplikasi memiliki dua halaman:
Halaman Informasi Aplikasi:
https://example.com/app/getappInfo
https://example.com/app/admin_getappInfo
Jika pengguna biasa atau bahkan pengguna tidak terautentikasi dapat mengakses halaman admin, maka ini adalah bentuk Broken Access Control.
Dampak:
- Pengguna biasa bisa mengakses atau memodifikasi data penting.
- Potensi pengambilalihan kontrol aplikasi.
Cara Mencegah Broken Access Control
- Terapkan Prinsip Deny by Default:
Semua akses harus ditolak kecuali secara eksplisit diberikan izin. - Kontrol Akses Terpusat:
Gunakan mekanisme kontrol akses yang terpusat dan seragam di seluruh aplikasi, termasuk API. - Model Akses Berdasarkan Kepemilikan Rekaman:
Validasi kepemilikan data pada setiap operasi (CRUD – Create, Read, Update, Delete). - Hindari Pengeksposan Metadata Sensitif:
Pastikan token JWT dan cookie tidak mudah dimanipulasi, dan buat token berumur pendek untuk mengurangi risiko penyalahgunaan. - Konfigurasi CORS dengan Tepat:
Batasi akses hanya ke domain yang diperlukan, dan hindari membuka API untuk sumber yang tidak dipercaya. - Rate Limiting dan Logging:
Terapkan pembatasan kecepatan akses dan catat kegagalan akses. Kirim peringatan kepada admin jika ada percobaan akses yang mencurigakan. - Pengujian Otomatis dan Manual:
Lakukan pengujian fungsional dan integrasi terhadap kontrol akses, dan pastikan mekanisme ini bekerja sesuai dengan spesifikasi.
Menurut Bruce Schneier, seorang ahli keamanan siber terkenal, celah seperti Broken Access Control mencerminkan kelemahan mendasar dalam implementasi keamanan. Schneier menekankan bahwa kontrol akses yang efektif tidak hanya memerlukan konfigurasi teknis yang benar, tetapi juga pemahaman mendalam tentang siapa yang seharusnya mengakses data dan kapan.
Schneier juga menyoroti bahwa serangan berbasis kontrol akses sering kali terjadi karena kepercayaan berlebih pada validasi sisi klien atau karena pengembang tidak cukup mempertimbangkan skenario eksploitasi. Ia merekomendasikan perusahaan untuk secara rutin melakukan penetration testing dan memastikan bahwa semua titik akses telah divalidasi dengan benar.
Kesimpulan
Broken Access Control adalah salah satu ancaman keamanan yang paling sering terjadi karena kelalaian dalam menerapkan kontrol akses yang tepat. Kerentanan ini bisa mengakibatkan pelanggaran privasi, pencurian data, dan eskalasi hak akses yang berbahaya.
Pengembang dan tim keamanan harus fokus pada penerapan kontrol akses dengan prinsip least privilege dan deny by default, serta meminimalkan penggunaan metadata yang bisa dimanipulasi. Selain itu, penting untuk melakukan pengujian keamanan secara berkala dan memonitor setiap kegagalan akses untuk mencegah serangan lebih lanjut.
Dengan langkah-langkah pencegahan yang tepat, risiko Broken Access Control dapat diminimalisir dan aplikasi bisa lebih aman dari eksploitasi oleh pihak yang tidak bertanggung jawab.















Comments are closed