Portal/Notes πŸ“
Programming

OWASP Top 10 2021

Sepuluh risiko keamanan web paling kritis versi OWASP 2021 β€” penjelasan, contoh, dan mitigasi untuk setiap kerentanan.

Versi Bahasa Indonesia. Baca dalam Bahasa Inggris

OWASP Top 10 adalah daftar yang diperbarui secara berkala dari risiko keamanan paling kritis untuk aplikasi web, diterbitkan oleh Open Web Application Security Project (OWASP). Ini dirancang untuk meningkatkan kesadaran akan kerentanan umum dan memberikan panduan untuk memitigasinya.

Top 10 2021 Map Sumber: https://owasp.org/www-project-top-ten/

Berikut adalah penjelasan mendalam untuk setiap item di OWASP Top 10 (2021):

Broken Access Control

  • Deskripsi: Terjadi ketika pengguna dapat mengakses data atau melakukan tindakan di luar izin yang ditentukan.
  • Contoh:
    • Memodifikasi URL atau request untuk mengakses sumber daya terbatas (misalnya /admin alih-alih /user).
    • Menggunakan insecure direct object references (IDOR) untuk mengakses data yang tidak sah.
  • Mitigasi:
    • Terapkan kontrol akses di sisi server.
    • Gunakan role-based access control (RBAC).
    • Catat dan pantau upaya akses yang gagal.

Cryptographic Failures

  • Deskripsi: Perlindungan data sensitif yang tidak memadai karena implementasi kriptografi yang lemah atau tidak tepat.
  • Contoh:
    • Menyimpan password dalam bentuk plain text.
    • Menggunakan algoritma enkripsi usang seperti MD5 atau SHA-1.
    • Gagal mengenkripsi data sensitif saat transit (misalnya HTTP alih-alih HTTPS).
  • Mitigasi:
    • Gunakan algoritma enkripsi yang kuat (misalnya AES-256 untuk data saat diam, TLS 1.2+ untuk data dalam transit).
    • Simpan password menggunakan algoritma yang dirancang untuk hashing, seperti bcrypt atau Argon2.
    • Terapkan manajemen key yang tepat.

Injection

  • Deskripsi: Terjadi ketika data yang tidak tepercaya dikirim ke interpreter sebagai bagian dari query atau perintah, memungkinkan penyerang mengeksekusi perintah berbahaya.
  • Contoh:
    • SQL Injection: SELECT * FROM users WHERE id = '$input'.
    • Command Injection: Mengeksekusi perintah OS melalui input pengguna.
  • Mitigasi:
    • Gunakan prepared statements (parameterized queries).
    • Validasi dan sanitasi input.
    • Gunakan library ORM (Object-Relational Mapping).

Insecure Design

  • Deskripsi: Cacat dalam desain aplikasi yang membuatnya rentan, bahkan jika diimplementasikan dengan aman.
  • Contoh:
    • Kurangnya threat modeling atau pola desain yang aman.
    • Gagal mengantisipasi kasus penyalahgunaan selama fase desain.
  • Mitigasi:
    • Adopsi secure development lifecycle (SDLC).
    • Lakukan threat modeling.
    • Terapkan prinsip security by design.

Security Misconfiguration

  • Deskripsi: Kesalahan dalam konfigurasi yang mengekspos aplikasi terhadap risiko.
  • Contoh:
    • Menggunakan kredensial default (misalnya admin/admin).
    • Kebijakan CORS yang terlalu permisif.
    • Mengekspos layanan atau endpoint debug yang tidak perlu.
  • Mitigasi:
    • Perkuat konfigurasi server (nonaktifkan layanan yang tidak digunakan, batasi hak istimewa).
    • Gunakan alat otomatis untuk mendeteksi misconfigurations.
    • Tinjau dan perbarui konfigurasi secara teratur.

Vulnerable and Outdated Components

  • Deskripsi: Menggunakan library, framework, atau perangkat lunak lain dengan kerentanan yang diketahui.
  • Contoh:
    • Mengandalkan versi lama library dengan celah keamanan.
    • Mengabaikan pembaruan dependensi perangkat lunak.
  • Mitigasi:
    • Perbarui dependensi secara teratur.
    • Gunakan alat pemeriksa dependensi (misalnya OWASP Dependency-Check, Snyk).
    • Pantau database kerentanan seperti NVD (National Vulnerability Database).

Identification and Authentication Failures

  • Deskripsi: Kelemahan dalam mekanisme autentikasi yang memungkinkan akses tidak sah.
  • Contoh:
    • Tidak menggunakan multi-factor authentication (MFA).
    • Session fixation atau manajemen sesi yang lemah.
    • Proses pemulihan password yang tidak aman.
  • Mitigasi:
    • Terapkan MFA yang kuat.
    • Gunakan manajemen sesi yang aman (misalnya hasilkan ulang session ID setelah login).
    • Terapkan kebijakan password yang kuat dan mekanisme pemulihan yang aman.

Software and Data Integrity Failures

  • Deskripsi: Kurangnya pemeriksaan integritas atau penggunaan komponen perangkat lunak yang tidak tepercaya.
  • Contoh:
    • Gagal memvalidasi pembaruan atau dependensi untuk integritas.
    • Menggunakan perangkat lunak atau library yang tidak ditandatangani.
  • Mitigasi:
    • Gunakan code-signing dan pemeriksaan integritas.
    • Verifikasi library pihak ketiga dan pastikan dari sumber tepercaya.
    • Terapkan langkah-langkah keamanan CI/CD.

Security Logging and Monitoring Failures

  • Deskripsi: Logging dan monitoring yang tidak memadai untuk mendeteksi dan merespons pelanggaran keamanan.
  • Contoh:
    • Tidak ada log untuk tindakan sensitif.
    • Tidak ada pemantauan untuk aktivitas mencurigakan.
  • Mitigasi:
    • Catat event yang relevan dengan keamanan (misalnya upaya autentikasi, perubahan hak istimewa).
    • Gunakan sistem logging terpusat dan alat SIEM.
    • Tinjau log secara teratur dan atur peringatan untuk anomali.

Server-Side Request Forgery (SSRF)

  • Deskripsi: Mengeksploitasi fungsionalitas server untuk mengirim request tidak sah ke sumber daya internal atau eksternal.
  • Contoh:
    • Mengakses API internal atau layanan metadata melalui SSRF.
    • Memanipulasi URL dalam input pengguna untuk mendapatkan akses tidak sah.
  • Mitigasi:
    • Batasi akses jaringan keluar dari server.
    • Validasi dan sanitasi URL dalam request sisi server.
    • Gunakan whitelist untuk tujuan yang diizinkan.

Referensi


Edit on GitHub

Last updated on

OWASP Top 10 2021 | Faisal Affan