Bagaimana APISIX melindungi dari 10 ancaman keamanan API teratas OWASP

Bobur Umurzokov

Bobur Umurzokov

October 6, 2023

Technology

Dengan meningkatnya penggunaan dan ketergantungan pada API dalam lanskap digital yang saling terhubung saat ini, ancaman keamanan yang menargetkan API juga telah berkembang selama bertahun-tahun. Pada tahun 2023, Open Web Application Security Project (OWASP) mengidentifikasi 10 ancaman teratas baru terhadap keamanan API. Dalam posting blog ini, kita akan menjelajahi setiap ancaman dan mempelajari bagaimana APISIX dapat melindungi terhadapnya dengan contoh.

OWASP adalah komunitas yang diakui secara global yang secara teratur menerbitkan penelitian terkait keamanan siber.

Berikut adalah daftar risiko keamanan yang disebutkan oleh OWASP:

  1. Broken Object Level Authorization
  2. Broken Authentication
  3. Broken Object Property Level Authorization
  4. Unrestricted Resource Consumption
  5. Broken Function Level Authorization
  6. Unrestricted Access to Sensitive Business Flows
  7. Server-Side Request Forgery
  8. Security Misconfiguration
  9. Improper Inventory Management
  10. Unsafe Consumption of APIs

1. Broken Object Level Authorization

Ancaman: API sering mengekspos endpoint yang menangani pengidentifikasi objek, yang dapat menyebabkan masalah Kontrol Akses Tingkat Objek. Penyerang dapat mengeksploitasi kerentanan ini untuk mendapatkan akses tidak sah ke data.

Broken Object Level Authorization

Contoh: Sebuah institusi kesehatan menawarkan portal pasien online. Karena cacat dalam desain portal, setelah seorang pasien diautentikasi, mereka dapat memodifikasi URL atau parameter permintaan untuk mengakses rekam medis yang terkait dengan ID pasien yang berbeda. Misalnya, seorang pasien bernama Steve masuk ke portal pasien untuk melihat rekam medisnya. Rekam medisnya dapat diakses melalui URL https://healthportal.com/patient/123. Karena penasaran, Steve mengubah URL menjadi https://healthportal.com/patient/124 dan menemukan bahwa dia sekarang dapat melihat rekam medis pasien lain. Ini mengekspos pelanggaran privasi yang signifikan dan melanggar peraturan seperti Health Insurance Portability and Accountability Act (HIPAA).

Rekomendasi: Terapkan mekanisme otorisasi yang tepat yang mengandalkan kebijakan pengguna dan hierarki. Gateway APISIX mendukung alur otorisasi berbasis OAuth2 atau JWT dengan bantuan plugin. Anda dapat menggunakan kebijakan OAuth2 untuk memverifikasi token pada setiap permintaan.

Gunakan kontrol akses yang terperinci melalui sistem Role-Based Access Control (RBAC) APISIX dengan mengintegrasikan Open Policy Agent (OPA). Dengan menyiapkan peran dan izin tertentu di APISIX dan mengaitkan peran ini dengan pengguna atau token tertentu, Anda dapat memastikan bahwa permintaan ke endpoint sensitif diotorisasi dengan benar.

2. Broken Authentication

Ancaman: Mekanisme autentikasi yang diimplementasikan dengan tidak benar dapat memungkinkan penyerang untuk mengkompromikan token autentikasi atau penyerang dapat melakukan serangan brute-force pada endpoint login karena tidak ada pembatasan kecepatan.

Broken Authentication

Contoh: Sistem perbankan mengimplementasikan mekanisme autentikasi kustom. Namun, karena kurangnya tinjauan dan pengujian keamanan yang tepat, terdapat kerentanan dalam alur autentikasi. Secara khusus, setelah pengguna memasukkan nama pengguna dan kata sandi, sistem menghasilkan token sesi yang dapat diprediksi, seperti kombinasi nama pengguna dan stempel waktu. Seorang penyerang, yang mengetahui cacat ini, dapat dengan mudah memprediksi token sesi pengguna lain.

Rekomendasi: Pertama, pahami semua alur autentikasi yang mungkin ke API, dan jangan menciptakan kembali roda dalam autentikasi! APISIX mendukung alur otorisasi OpenID Connect (OIDC) standar. Alih-alih token sesi yang dapat diprediksi, APISIX dapat diintegrasikan dengan penyedia identitas eksternal seperti Keycloak atau sistem manajemen sesi menggunakan plugin untuk memastikan bahwa token sesi acak, dienkripsi, dan memiliki masa berlaku terbatas.

Untuk mencegah serangan brute force pada akun pengguna, plugin pembatasan kecepatan APISIX dapat digunakan. Ini memastikan bahwa jika ada beberapa upaya login yang gagal dalam waktu singkat, IP atau pengguna akan diblokir sementara. Untuk memastikan privasi dan integritas data, APISIX mendukung enkripsi SSL/TLS. Ini memastikan bahwa kredensial pengguna dan data sensitif lainnya dienkripsi selama transmisi.

3. Broken Object Property Level Authorization

Ancaman: Ancaman ini muncul dari kurangnya atau validasi otorisasi yang tidak tepat pada tingkat properti objek, yang mengakibatkan paparan atau manipulasi informasi yang tidak sah.

Broken Object Property Level Authorization

Contoh: API platform belanja online memungkinkan pengguna terdaftar untuk memperbarui detail profil mereka seperti nama, email, alamat pengiriman, dan detail pembayaran. Selain itu, setiap profil pengguna memiliki properti yang disebut userType, yang dapat berupa regular atau admin. Karena masalah dalam desain API, pengguna juga dapat memodifikasi properti userType dalam permintaan pembaruan profil mereka. Misalkan Alice, seorang pengguna biasa, menemukan cacat ini ketika dia memeriksa permintaan API menggunakan alat pengembang browser. Dia memperhatikan bahwa ketika memperbarui profilnya, payload JSON dikirim ke server. Alice mengubah nilai userType menjadi admin dan mengirim permintaan. Dia terkejut ketika profilnya diperbarui, dan dia sekarang memiliki hak administratif di platform, memungkinkannya untuk mengakses data sensitif, memodifikasi daftar produk, dan bahkan melihat riwayat pesanan pengguna lain.

Rekomendasi: Pastikan bahwa properti objek yang diekspos dapat diakses oleh pengguna dan pertahankan struktur data yang dikembalikan seminimal mungkin, berdasarkan kebutuhan bisnis. Untuk mencapai ini, Anda dapat menggunakan plugin validasi permintaan APISIX yang dapat memvalidasi permintaan masuk terhadap skema yang telah ditentukan. Atau gunakan sistem RBAC APISIX untuk menyiapkan peran untuk pengguna biasa dan admin. Untuk menghapus data yang tidak perlu yang diekspos ke klien, APISIX menyediakan plugin penulisan ulang respons yang dapat memodifikasi respons API secara dinamis.

4. Unrestricted Resource Consumption

Ancaman: Penyerang dapat mengeksploitasi API untuk mengonsumsi sumber daya yang berlebihan, yang mengakibatkan serangan Denial of Service atau peningkatan biaya operasional.

Unrestricted Resource Consumption

Contoh: Layanan penyimpanan file berbasis cloud memungkinkan pengguna untuk mengunggah dan menyimpan file, membagikannya dengan orang lain, dan mengaksesnya dari mana saja. Layanan ini tidak memiliki batasan pada jumlah file yang dapat diunggah oleh pengguna secara bersamaan atau ukuran setiap file. Akibatnya, pengguna jahat atau bot dapat mengunggah sejumlah besar file yang sangat besar secara berturut-turut, mengonsumsi sumber daya server yang signifikan. Ini dapat menyebabkan waktu respons yang lebih lambat untuk pengguna lain, potensi crash server, dan peningkatan biaya infrastruktur untuk penyedia layanan.

Rekomendasi:

  • Tentukan dan terapkan ukuran data maksimum untuk semua parameter dan payload yang masuk. Gunakan plugin kontrol klien untuk mengatur ukuran maksimum badan permintaan sehingga pengguna tidak dapat mengunggah file yang terlalu besar. Atau gunakan plugin validasi permintaan untuk memvalidasi string kueri, terutama yang mengontrol jumlah catatan yang dikembalikan. Untuk memblokir bot, skrip, atau agen pengguna yang mengirim data yang tidak diinginkan, Anda dapat memanfaatkan plugin pembatasan agen pengguna.
  • Terapkan pembatasan kecepatan berdasarkan kebutuhan bisnis. APISIX menyediakan plugin limit-req, limit-conn, dan limit-count yang dapat membatasi kecepatan di mana pengguna individu atau alamat IP dapat membuat permintaan. Ini memastikan bahwa pengguna tidak dapat membanjiri sistem dengan sejumlah besar permintaan cepat.

5. Broken Function Level Authorization

Ancaman: Kebijakan kontrol akses terkadang terlalu kompleks, dengan berbagai tingkat, grup, dan peran, serta perbedaan yang kabur antara fungsi administratif dan standar, sering kali mengakibatkan kerentanan izin. Penyerang dapat memanfaatkan kelemahan ini untuk mengakses sumber daya pengguna lain atau fitur administratif.

Broken Function Level Authorization

Contoh: Platform pembelajaran online menawarkan berbagai kursus kepada siswa. Dengan masalah dalam desain platform, siswa dapat mengakses fungsi yang hanya untuk instruktur dengan memanipulasi URL atau endpoint API. Misalnya, seorang siswa mungkin menemukan bahwa dengan mengubah URL dari /student/dashboard ke /instructor/dashboard, mereka dapat mengakses dashboard instruktur, memungkinkan mereka untuk memodifikasi konten kursus, menilai tugas, atau bahkan menambah/menghapus kursus.

Rekomendasi:

  • Tolak semua akses secara default dan memerlukan pemberian izin eksplisit untuk peran tertentu. Dengan APISIX, Anda dapat membuat konsumen atau grup konsumen untuk memberikan kontrol akses yang berbeda untuk pengguna. Kemudian, plugin autentikasi JWT dapat dikonfigurasi untuk menyertakan informasi peran dalam token JWT. Ketika pengguna masuk, token JWT yang mereka terima akan berisi peran mereka (siswa atau instruktur). APISIX kemudian dapat memverifikasi peran pengguna dari token JWT sebelum memberikan akses ke fungsi tertentu.
  • Pastikan kontroler administratif mewarisi dari kontroler yang mengimplementasikan pemeriksaan otorisasi berdasarkan peran pengguna. Jika Anda menggunakan API7 enterprise, ini memungkinkan admin untuk membatasi akses API ke pengguna/grup tertentu dan Anda dapat menyiapkan akses berdasarkan permintaan dan per pengguna.

6. Unrestricted Access to Sensitive Business Flows

Ancaman: Alur bisnis sensitif diekspos tanpa evaluasi risiko tentang bagaimana fungsionalitas tersebut dapat membahayakan bisnis jika digunakan secara otomatis dan berlebihan.

Unrestricted Access to Sensitive Business Flows

Contoh: Menggunakan kombinasi proxy dan skrip otomatis (bot), penyerang mensimulasikan beberapa pengguna nyata yang melakukan pembelian. Skrip dengan cepat menambahkan produk ke keranjang dan menyelesaikan proses checkout, menghabiskan stok sebelum pelanggan nyata memiliki kesempatan untuk melakukan pembelian. Penyerang kemudian menjual kembali produk ini dengan harga yang lebih tinggi di platform lain. Platform penjual kehilangan potensi pendapatan karena mereka tidak dapat menjual produk kepada pelanggan nyata dengan harga yang dimaksud.

Rekomendasi:

  • Terapkan fingerprinting perangkat untuk menolak layanan ke perangkat klien yang tidak terduga. APISIX dapat diintegrasikan dengan platform manajemen identitas dan akses seperti Auth0, Authgear, dan sebagainya untuk mengaktifkan mekanisme autentikasi yang berbeda termasuk fitur login biometrik pada perangkat.
  • Gunakan mekanisme deteksi manusia seperti captcha atau solusi biometrik lanjutan. Sama seperti di atas.
  • Analisis alur pengguna untuk mendeteksi pola non-manusia. Anda dapat menggunakan API7 enterprise untuk menerapkan faktor autentikasi tambahan ketika permintaan dikaitkan dengan pola non-manusia, seperti kecepatan tinggi antara lokasi login yang berbeda atau mendeteksi bot.
  • Blokir alamat IP dari sumber yang diketahui jahat. APISIX memiliki plugin pembatasan IP untuk memblokir akses dari satu atau beberapa alamat IP.

7. Server Side Request Forgery (SSRF)

Ancaman: Serangan SSRF memungkinkan penyerang untuk membuat permintaan ke sumber daya internal server, berpotensi mendapatkan akses ke jaringan internal, sistem file, atau bahkan menjalankan perintah. Ini terjadi ketika endpoint API menerima URL atau sebagian darinya sebagai input dan mengambilnya tanpa validasi yang tepat.

Server Side Request Forgery (SSRF)

Contoh: Sebuah endpoint API menerima URL untuk mengambil gambar dari internet. Seorang pengguna jahat mengirimkan URL seperti http://169.254.169.254/latest/meta-data/ (endpoint metadata khas di lingkungan cloud). Layanan mengambil URL, mengira itu adalah gambar, tetapi malah mengambil data sensitif seperti peran IAM, kunci rahasia, atau detail konfigurasi internal lainnya. Penyerang kemudian menggunakan informasi ini untuk serangan lebih lanjut, seperti eskalasi hak istimewa atau pelanggaran data.

Rekomendasi:

  • Validasi Input - Selalu validasi dan bersihkan input. Hindari menerima URL lengkap dari sumber yang tidak tepercaya. Dengan APISIX, Anda dapat menyiapkan plugin pemblokir URI untuk menerapkan aturan pemblokiran ke sumber daya internal.
  • Whitelisting - Hanya izinkan koneksi ke domain atau IP yang dikenal dan tepercaya. Anda dapat menggunakan plugin pembatasan IP APISIX atau mengaktifkan pembatasan referer untuk daftar putih domain atau pola URL yang dapat diterima. URL apa pun yang tidak cocok dengan daftar putih akan ditolak.
  • Segmentasi Jaringan - Pastikan server Anda tersegmentasi, dan sumber daya internal sensitif tidak dapat diakses langsung.

8. Security Misconfiguration

Ancaman: Ini terjadi ketika API tidak dikonfigurasi dengan aman, berpotensi mengekspos informasi sensitif atau memberikan izin yang tidak perlu. Contohnya termasuk pesan kesalahan yang mengekspos detail server, metode HTTP yang tidak perlu diaktifkan, atau kredensial default yang tidak diubah.

Security Misconfiguration

Contoh: Contoh sederhana bisa berupa API yang tidak sengaja mengekspos direktori .git, mengungkapkan kode sumber dan riwayat commit. Contoh lain, seorang pengguna jahat, saat menggunakan platform Anda, menemukan pesan kesalahan. Alih-alih pesan kesalahan generik, dia melihat jejak tumpukan yang mendetail yang mengungkapkan struktur database, versi perangkat lunak, dan jalur file. Dengan informasi ini, dia mengidentifikasi kerentanan potensial di platform. Selain itu, setelah meneliti konfigurasi yang salah umum untuk platform semacam itu, dia mencoba masuk dengan akun tes dan berhasil, memberinya akses administratif.

Rekomendasi:

  • Audit Rutin - Secara rutin tinjau dan perbarui konfigurasi. Gunakan alat otomatis untuk memindai konfigurasi yang salah umum. Dengan plugin logging APISIX, semua aktivitas akses dan sistem dicatat. Aktivitas yang tidak biasa, seperti kegagalan login berulang atau akses ke endpoint yang dibatasi, dapat ditandai untuk ditinjau.
  • Prinsip Hak Istimewa Minimal - Hanya berikan izin yang diperlukan dan hindari menggunakan pengaturan yang terlalu permisif.
  • Header Keamanan Default - APISIX memberlakukan default yang aman dengan header keamanan penting, seperti Content Security Policy (CSP) dan HTTP Strict Transport Security (HSTS), yang telah ditetapkan. Ini mengurangi risiko serangan berbasis web tertentu.
  • Masking Kesalahan - Pastikan pesan kesalahan bersifat generik dan tidak membocorkan informasi sensitif. APISIX dapat dikonfigurasi untuk menyamarkan pesan kesalahan yang mendetail menggunakan plugin penulisan ulang respons atau plugin mask data kustom.

9. Improper Inventory Management

Ancaman: Saat organisasi berkembang, mereka sering kehilangan jejak semua API mereka, terutama jika tidak ada manajemen terpusat. Ini dapat menyebabkan API yang terlupakan, kedaluwarsa, atau tidak terlindungi yang dapat dieksploitasi.

Improper Inventory Management

Contoh: Adalah umum bagi beberapa versi API untuk dibiarkan tidak dipantau. Penyerang mungkin menargetkan versi API yang kedaluwarsa atau titik akses yang tidak ditambal. Mereka juga dapat mendapatkan akses tidak sah melalui kerentanan dalam koneksi pihak ketiga.

Rekomendasi: Gunakan Admin API APISIX untuk secara rutin meninjau dan menonaktifkan rute yang tidak lagi diperlukan dan untuk melacak semua versi API tanpa mengganggu aplikasi klien. API7 Portal menyediakan dashboard manajemen terpusat di mana semua API dapat dipantau dan dikelola. Versi lama dari API mungkin masih berjalan dan tidak lagi digunakan. Melalui dashboard, API ini dapat diidentifikasi dan dimatikan tanpa perubahan kode di layanan backend itu sendiri.

10. Unsafe Consumption of APIs

Ancaman: Saat mengintegrasikan API pihak ketiga atau bahkan mengonsumsi API internal, jika tidak dilakukan dengan aman, tindakan tersebut dapat mengekspos aplikasi ke kerentanan yang ada di API hulu.

Unsafe Consumption of APIs

Contoh: Mari kita pikirkan aplikasi seluler yang memungkinkan pengguna untuk memantau metrik kesehatan mereka, seperti detak jantung, pola tidur, dan aktivitas fisik. Aplikasi ini tidak memiliki validasi dan pemeriksaan keamanan yang ketat saat mengonsumsi API pihak ketiga ini. Seorang penyerang mengidentifikasi bahwa salah satu API pelacak nutrisi yang terintegrasi rentan dan dapat mengembalikan data berbahaya. Ketika aplikasi mengambil saran rencana makan dari API ini, aplikasi secara tidak sengaja mengambil dan memproses payload berbahaya, yang mengakibatkan potensi pelanggaran data atau malfungsi aplikasi.

Rekomendasi: Sebelum mengintegrasikan API pihak ketiga, periksa apakah itu berasal dari sumber yang terpercaya dan telah menjalani penilaian keamanan.

  • Penanganan Kesalahan - Tangani respons atau perilaku yang tidak terduga dari API yang dikonsumsi tanpa mengekspos kerentanan.
  • Validasi Data - Selalu validasi dan bersihkan data yang diterima dari API pihak ketiga. APISIX dapat diintegrasikan dengan Web Application Firewalls (WAF) untuk memeriksa dan memfilter data masuk dari API pihak ketiga. Ini dapat mendeteksi dan memblokir pola atau payload berbahaya yang diketahui. Anda juga dapat mengaktifkan TLS/mTLS untuk layanan hulu untuk menjamin keamanan lalu lintas saat bepergian melalui jaringan internal.

Ringkasan

Menerapkan panduan keamanan yang disarankan dari OWASP API 2023 memberikan titik awal dasar untuk melindungi API. Menggunakan fitur Gateway APISIX menyederhanakan proses ini dan secara signifikan mengurangi biaya implementasi mekanisme pencegahan yang direkomendasikan oleh OWASP.

Sumber terkait

Tags: