kamu mungkin pernah mendengar tentang Top 10 OWASP atau sepuluh kerentanan teratas yang mengancam Webapps
. OWASP juga secara berkala memilih daftar sepuluh besar kerentanan yang mengancam API, yang disebut OWASP API Security Top 10. Sepuluh besar API saat ini adalah :
- Broken Object Level Authorization
- Broken User Authentication
- Excessive Data Exposure
- Lack of Resources & Rate Limiting
- Broken Function Level Authorization
- Mass Assignment
- Security Misconfiguration
- Injection
- Improper Assets Management
- Insufficient Logging & Monitoring
Banyak dari kerentanan ini memengaruhi komponen aplikasi selain API, tetapi cenderung memanifestasikan dalam API. Terakhir kali, saya berbicara tentang salah satu kerentanan API yang paling umum: Broken Object Level Authorization.
API Security
OWASP API Security Broken User Authentication
Dari pengalaman saya meretas API, saya yakin bahwa sebagian besar implementasi API mengalami setidaknya satu contoh Broken Object Level Authorization. Kali ini, mari kita bicara tentang OWASP API #2
: OWASP API Security Broken User Authentication.
Otentikasi untuk API. Seringkali, meminta kredensial user atau menggunakan autentikasi multi-faktor tidak mungkin dilakukan selama panggilan API. Jadi otentikasi dalam sistem API sering diimplementasikan menggunakan akses token: token yang disematkan ke dalam panggilan API individual untuk mengautentikasi user. Jika otentikasi tidak diterapkan dengan benar, penyerang dapat mengeksploitasi kesalahan konfigurasi untuk menyamar sebagai orang lain.
OWASP API Security tanpa otentikasi
Pertama-tama, API dapat kekurangan mekanisme otentikasi sama sekali. Terkadang, pengembang API berasumsi bahwa API hanya akan diakses oleh aplikasi resmi dan tidak akan ditemukan oleh orang lain. Jadi API tersedia bagi siapa saja yang mengetahui dan struktur query nya. Dalam hal ini, siapa pun bebas meminta data atau menjalankan tindakan melalui API
jika mereka mengetahui struktur query nya.
Implementasi otentikasi yang salah
API yang tidak memiliki autentikasi menjadi kurang umum. Sebagian besar waktu, OWASP API Security Broken User Authentication disebabkan oleh desain atau implementasi Broken User Authentication token yang salah.
Satu kesalahan umum adalah tidak menghasilkan akses token dengan benar. Pertama-tama, jika token pendek, sederhana, atau dapat diprediksi, penyerang mungkin dapat melakukan brute force token. Ini dapat terjadi ketika token dihasilkan dengan entropi yang tidak mencukupi atau berasal dari informasi user menggunakan enkripsi atau algoritma hashing yang lemah. Misalnya, apa yang salah dengan token API berikut?
1
access_token=RW5v==
Token hanyalah pengkodean base64 dari nama user, “Eno”!
API yang tidak menggunakan string akses token sederhana juga bisa tidak aman. Misalnya, JSON Web Tokens (JWTs) juga dapat ditandatangani dengan tidak benar atau tidak ada tanda tangan sama sekali. Masalah ini sangat berbahaya jika token tidak aman digunakan untuk mengautentikasi admin
atau orang lain dengan hak akses ke dalam API. Jika kamu tertarik untuk mempelajari lebih lanjut tentang potensi jebakan JWT, baca posting saya di sini: Token Web JSON
Token berumur panjang
Bahkan jika token dihasilkan dengan benar, pembatalan token yang tidak tepat juga dapat menyebabkan masalah. Token berumur panjang adalah masalah keamanan besar di banyak implementasi API.
Token API
harus kedaluwarsa secara berkala dan setelah tindakan sensitif seperti logout
, perubahan sandi, pemulihan akun, dan penghapusan akun. Jika akses token tidak divalidasi dengan benar, penyerang dapat mempertahankan akses ke sistem tanpa batas waktu setelah mencuri token.
Kebocoran token
Terkadang, pengembang mengirimkan akses token secara tidak aman, seperti di URL atau melalui trafic yang tidak terenkripsi.
Jika token dikirimkan melalui URL, siapa pun yang memiliki akses ke URL melalui ekstensi browser atau riwayat penelusuran dapat mencuri token tersebut.
1
https://api.example.com/v1.1/users/payment/show?user_id=1337&access_token=360f91d065e56a15a0d9a0b4e170967b
Dan jika token ditransmisikan melalui trafic yang tidak terenkripsi, penyerang dapat meluncurkan serangan Man in the Middle MITM untuk menyadap trafic korban dan mencuri token API
.
Mencegah Broken User Authentication
User Authentication sangat merusak API karena satu kesalahan dapat memungkinkan penyerang mengambil alih akun user, mengakses data dan fungsionalitas yang dibatasi.
Mencegah masalah ini membutuhkan pendekatan yang komprehensif. Pertama, Kamu perlu memastikan bahwa kamu menerapkan akses kontrol untuk semua data dan fungsi sensitif. Ini dibahas dalam posting blog terakhir saya tentang Broken Object Level Authorization. Lagi pula, otentikasi sia-sia kecuali kamu menggunakannya untuk membatasi akses ke sistem!
Selanjutnya, pastikan API token
kamu berupa string yang panjang
, acak
, dan tidak dapat diprediksi
. Jika kamu menggunakan token yang berasal dari informasi user, gunakan algoritme yang kuat dan secret key untuk memastikan bahwa user tidak dapat memalsukan token mereka sendiri. Terakhir, jika API kamu menggunakan autentikasi berbasis tanda tangan seperti JWT, terapkan tanda tangan yang kuat pada token dan validasikan dengan benar.
Batalkan token secara berkala dan setelah tindakan seperti logout
, reset kata sandi
, pemulihan akun
, dan penghapusan akun
. Terakhir, perlakukan akses token sebagai key dan jangan pernah mengirimkannya dalam URL
atau trafic yang tidak terenkripsi.
Broken User Authentication dapat menyebabkan insiden keamanan yang serius, jadi mencegahnya harus menjadi prioritas utama kamu sebagai pengembang. Lain kali, mari kita lihat sepuluh besar API OWASP #3, Excessive Data Exposure, kerentanan yang paling sering saya temukan di API.