OWASP API Security Top 10
OWASP API Security Top 10 berfokus pada risiko keamanan spesifik yang dihadapi oleh RESTful API dan layanan web modern. Seiring dengan pertumbuhan arsitektur microservices dan API-first development, API menjadi target utama serangan siber. Berikut adalah sepuluh risiko utama menurut OWASP API Security Top 10.
API1 - Broken Object Level Authorization (Otorisasi Level Objek Rusak)
Ini adalah risiko paling kritis pada API. Setiap endpoint API yang mengekspos identifier objek (seperti ID pengguna, ID transaksi) rentan jika tidak memverifikasi hak akses.
Deskripsi: Penyerang memanipulasi ID objek dalam request API (parameter path, query string, atau body) untuk mengakses data milik pengguna lain. Karena API sering menggunakan ID numerik yang dapat ditebak, eksploitasi menjadi sangat mudah.
Contoh: Endpoint
GET /api/v1/users/12345/profile mengembalikan data
profil pengguna 12345. Penyerang mengubahnya menjadi
/api/v1/users/12346/profile dan berhasil melihat data
pengguna lain karena tidak ada pemeriksaan otorisasi.
API2 - Broken Authentication (Autentikasi Rusak)
Mekanisme autentikasi yang lemah pada API membuka pintu bagi penyerang untuk mengambil alih akun pengguna.
Deskripsi: API sering menggunakan token (JWT, OAuth)
yang tidak divalidasi dengan benar, kredensial lemah, atau tidak
memiliki perlindungan terhadap credential stuffing. JWT dengan
algoritma none atau secret key yang lemah adalah contoh
umum.
Contoh: API menggunakan JWT dengan algoritma HS256
dan secret key "secret". Penyerang mendekode token,
mengubah payload menjadi
{"user":"admin","role":"admin"},
dan menandatanganinya ulang dengan secret key yang sama - atau
mengubah algoritma menjadi none untuk menghindari
verifikasi.
API3 - Broken Object Property Level Authorization (Otorisasi Properti Objek Rusak)
Risiko ini spesifik untuk API yang mengembalikan lebih banyak data daripada yang seharusnya atau mengizinkan modifikasi properti yang tidak seharusnya.
Deskripsi: API mungkin mengembalikan properti
sensitif (misalnya isAdmin, passwordHash)
yang tidak seharusnya terekspos ke klien. Juga terjadi ketika API
mengizinkan klien untuk memperbarui properti yang seharusnya
read-only (mass assignment).
Contoh: Endpoint
PATCH /api/v1/users/profile menerima body JSON.
Penyerang menambahkan field
"role": "admin" ke dalam request.
Karena API tidak memfilter properti yang dapat diupdate, penyerang
berhasil meningkatkan hak aksesnya menjadi administrator.
API4 - Unrestricted Resource Consumption (Konsumsi Sumber Daya Tidak Terbatas)
API yang tidak membatasi konsumsi sumber daya rentan terhadap serangan Denial of Service (DoS) dan eksploitasi biaya infrastruktur.
Deskripsi: Kurangnya rate limiting, pagination yang tidak dibatasi, ukuran request body yang tidak dibatasi, atau query yang mahal secara komputasi dapat menyebabkan API kewalahan.
Contoh: Endpoint
GET /api/v1/products?page=1&limit=10 tidak memiliki
batas maksimal pada parameter limit. Penyerang mengirim
request dengan limit=9999999, menyebabkan server harus
memproses dan mengembalikan jutaan record sekaligus, menghabiskan
memori dan CPU.
API5 - Broken Function Level Authorization (Otorisasi Level Fungsi Rusak)
API dengan kontrol akses berbasis peran (RBAC) yang tidak konsisten rentan terhadap eskalasi privilege horizontal maupun vertikal.
Deskripsi: Endpoint administratif atau fungsi sensitif yang tidak dilindungi dengan pemeriksaan peran yang memadai. Penyerang dapat mengakses endpoint admin hanya dengan mengetahui URL-nya.
Contoh: Endpoint
DELETE /api/v1/admin/users/123 digunakan oleh admin
untuk menghapus pengguna. API hanya memeriksa apakah token valid,
tidak memeriksa apakah pengguna memiliki peran admin. Pengguna biasa
dapat menghapus akun pengguna lain.
API6 - Unrestricted Access to Sensitive Business Flows (Akses Tidak Terbatas ke Alur Bisnis Sensitif)
Risiko ini berfokus pada eksploitasi alur bisnis yang tidak dilindungi - bukan kerentanan teknis.
Deskripsi: Alur bisnis seperti pemesanan tiket, voting, klaim promo, atau pendaftaran akun massal dapat dieksploitasi secara otomatis oleh bot. API yang tidak memiliki deteksi bot atau pembatasan akses memungkinkan penyalahgunaan ini.
Contoh: Sebuah situs konser menjual tiket melalui API. Bot mendaftar ribuan akun dan memborong semua tiket dalam hitungan detik saat penjualan dibuka, lalu menjualnya kembali dengan harga markup tinggi.
API7 - Server Side Request Forgery (SSRF)
Sama seperti di OWASP Top 10 Web, SSRF pada API memungkinkan penyerang memaksa server untuk membuat request ke resource internal.
Deskripsi: API yang menerima URL atau alamat sebagai input dan melakukan HTTP request ke alamat tersebut rentan. Penyerang mengarahkan request ke localhost, internal network, atau cloud metadata endpoint.
Contoh: API POST /api/v1/webhook
menerima parameter
{"url": "https://api.partner.com/callback"}.
Penyerang mengirim
{"url": "http://localhost:9200/_cat/indices"}
untuk mengakses Elasticsearch internal yang tidak dilindungi
autentikasi.
API8 - Security Misconfiguration (Konfigurasi Keamanan Salah)
Konfigurasi yang salah pada API dan infrastruktur pendukungnya membuka celah keamanan yang tidak perlu.
Deskripsi: Termasuk CORS yang terlalu permisif (mengizinkan semua origin), header keamanan yang hilang, error message yang verbose, TLS/SSL yang tidak diterapkan dengan benar, dan endpoint debug atau staging yang masih aktif di production.
Contoh: API mengembalikan response CORS header
Access-Control-Allow-Origin: *. Penyerang membuat situs
web jahat yang memanggil API dari browser korban - karena CORS
terbuka, data API dapat dibaca oleh situs penyerang.
API9 - Improper Inventory Management (Manajemen Inventaris Tidak Tepat)
Bertambahnya jumlah endpoint API, versi, dan environment menyulitkan manajemen inventaris yang efektif.
Deskripsi: Endpoint API lama yang masih aktif tetapi tidak terdokumentasi, versi API yang tidak terkelola, environment staging/test yang terekspos ke publik, atau dokumentasi yang tidak akurat. Endpoint yang terlupakan sering kali memiliki keamanan yang lebih lemah.
Contoh: API versioning menggunakan header
Accept: application/vnd.company.v1+json. Versi 1 (v1)
memiliki kerentanan keamanan yang sudah diperbaiki di v2, tetapi
endpoint v1 tetap aktif. Penyerang menemukan endpoint v1 dan
mengeksploitasi kerentanan yang sudah diketahui tersebut.
API10 - Unsafe Consumption of APIs (Konsumsi API yang Tidak Aman)
API yang mengonsumsi API pihak ketiga tanpa validasi yang memadai rentan terhadap serangan melalui rantai kepercayaan.
Deskripsi: Ketika aplikasi mengambil data dari API eksternal (mungkin dari pihak ketiga atau partner), data tersebut dipercaya tanpa validasi yang cukup. Jika API pihak ketiga disusupi, data berbahaya dapat masuk ke sistem.
Contoh: Aplikasi e-commerce menggunakan API pihak
ketiga untuk mendapatkan rating produk:
https://ratings-api.com/product/123. Jika API tersebut
diretas, ia dapat mengembalikan JSON yang mengandung script XSS atau
data yang memicu SQL Injection pada aplikasi utama, karena hasil
dari API eksternal dipercaya tanpa sanitasi.
Kesimpulan
OWASP API Security Top 10 melengkapi OWASP Top 10 Web dengan fokus pada keunikan arsitektur API modern. Setiap organisasi yang mengembangkan atau menggunakan API harus memahami risiko-risiko ini dan menerapkan kontrol keamanan yang sesuai pada setiap lapisan.