OWASP 10 kerentanan teratas 2022: apa yang kita pelajari
Sumber: https://vulcan.io/blog/owasp-top-10-vulnerabilities-2022-what-we-learned/
Dalam lingkungan siklus cepat dari pengembangan saat ini, keamanan sering kali dibiarkan sebagai item kotak centang tanpa pertimbangan nyata. Memahami kerentanan yang dapat dibangun ke dalam aplikasi adalah tempat yang baik untuk meningkatkan kebersihan keamanan secara keseluruhan. OWASP Foundation mengeluarkan daftar OWASP Top 10 vulnerabilities untuk membantu organisasi dan pengembang mencapai hal ini.
OWASP Top 10 adalah kumpulan kerentanan keamanan yang dilaporkan dari data aplikasi web aktual dan sumber lainnya. Daftar ini memberikan informasi terperinci tentang kerentanan ini, termasuk contoh masing-masing.
Di artikel ini, kita akan menyelami setiap poin dalam daftar 10 Teratas OWASP 2022 dan melihat tindakan pencegahan keamanan yang dapat diadopsi organisasi untuk mencegah risiko ini.
Langkah selanjutnya
FAQ
Apa itu 10 Teratas OWASP?
OWASP Top 10 dikeluarkan oleh Open Web Application Security Project (OWASP) Foundation. OWASP adalah organisasi nirlaba dengan misi untuk meningkatkan keamanan perangkat lunak di seluruh industri. Untuk melanjutkan misi tersebut, OWASP mengelola dan membagikan OWASP Top 10 secara publik, sebuah dokumen kesadaran untuk kerentanan keamanan aplikasi web.
Untuk setiap periode pemeringkatan, OWASP mengumpulkan data aplikasi dari berbagai sumber dan melakukan survei untuk mengumpulkan informasi penting tentang kerentanan teratas yang dihadapi pengembang tetapi mungkin tidak dinyatakan dalam data aplikasi yang diterima. Ini biasanya tren yang diamati pengembang yang mungkin berpotensi menyebabkan kerusakan. Data aplikasi web yang dikirimkan dan hasil survei digunakan bersama untuk menentukan peringkat sepuluh besar kerentanan keamanan.
Bagaimana Metodologi pemeringkatan kerentanan?
Kerentanan diberi peringkat berdasarkan berbagai faktor, yang mencakup analisis data aplikasi web aktual yang dikirimkan oleh individu dan organisasi. Data yang dikontribusikan dapat diatributkan ke perusahaan/organisasi atau disimpan secara anonim semu. Sumber data juga mencakup program bug bounty, konsultan keamanan, dan vendor. Kontributor memberikan detail periode waktu untuk data, jumlah total aplikasi web, dan daftar pencacahan kelemahan umum (common weakness enumerations/CWEs) seperti yang didefinisikan oleh MITRE. Kontributor juga harus memberikan jumlah aplikasi yang berisi setiap CWE inti.
Selama analisis, OWASP menemukan jumlah aplikasi dengan satu atau lebih contoh CWE. Tingkat kejadian dihitung dengan menjumlahkan semua aplikasi yang diuji dan kemudian membandingkan jumlah tersebut dengan jumlah total aplikasi di mana CWE terjadi. Sepuluh hasil teratas kemudian diberi peringkat berdasarkan masukan tambahan dari survei yang menyertai pakar aplikasi dan keamanan. Analisis berfokus pada akar penyebab kerentanan di atas gejala jika memungkinkan.
10 Teratas OWASP untuk tahun 2021 berisi lebih banyak data aplikasi daripada laporan sebelumnya yang dikeluarkan oleh yayasan. Rekor 500.000 aplikasi diajukan. Daftar 2021 juga merupakan versi yang paling digerakkan oleh data. Volume data memerlukan perubahan dalam cara proyek mengkategorikan kerentanan.
Kategori kerentanan baru
Kategori baru ini dibuat untuk menyoroti tren dalam data aplikasi dan untuk memberikan manfaat pelatihan tambahan bagi perusahaan yang berfokus pada CWE tertentu yang terkait dengan bahasa atau kerangka kerja pemrograman yang mereka gunakan secara aktif.
Desain tidak aman (Insecure design): Kategori ini mengandung risiko terkait cacat desain dan infrastruktur. Dibedakan dari kerentanan lainnya, desain yang tidak aman tidak dapat diperbaiki melalui implementasi yang tepat.
Kegagalan perangkat lunak dan entri data (Software and data entry failures): Kategori ini mencakup risiko terkait menerima pembaruan perangkat lunak tanpa memverifikasi integritas. Kerentanan ini berfokus pada asumsi pembaruan ini selalu dapat dipercaya.
Pemalsuan permintaan sisi server (Server-side request forgery/SSRF): Risiko terkait pengambilan URL dari satu aplikasi ke aplikasi lainnya, atas permintaan pengguna, tanpa memverifikasi integritas URL dikelompokkan dalam kategori ini. Kerentanan sisi server ini dianggap berisiko karena permintaan yang dipalsukan dapat melewati tindakan keamanan seperti firewall, VPN, atau kontrol akses lainnya.
10 kerentanan aplikasi teratas OWASP 2022
Kontrol akses rusak (Broken access control)
Kontrol akses membatasi apa yang dapat diakses pengguna, membatasi mereka ke dalam sumber daya yang diberikan izin. Kegagalan kontrol akses (Access control failure) biasanya mengakibatkan pengguna menjalankan fungsi bisnis yang memerlukan izin berbeda dari yang ditetapkan, di antara aktivitas lainnya. Kegagalan juga menyebabkan pengungkapan informasi yang tidak sah, modifikasi, atau penghancuran data.
Kerentanan kontrol akses meliputi:
Melanggar prinsip hak istimewa terkecil (least privilege) dengan memberi semua pengguna akses ke sumber daya yang ditujukan untuk peran, pengguna, atau grup izin (permission group) tertentu.
Melewati pemeriksaan kontrol akses melalui modifikasi URL, modifikasi status aplikasi internal, atau modifikasi halaman HTML. Alat serangan API juga dapat digunakan untuk melewati pemeriksaan kontrol akses.
Kontrol akses API untuk PUT, POST, atau DELETE tidak ada.
Elevation of Privilege, di mana penyerang memiliki akses sebagai pengguna tanpa masuk atau dapat melakukan fungsi tingkat admin dari akun pengguna dengan hak istimewa lebih rendah.
Pencegahan
Batasi akses ke sumber daya dengan kontrol akses. Kontrol akses berfungsi di lingkungan server tepercaya di mana data tidak dapat dimodifikasi oleh penyerang. Metode perlindungan meliputi:
Akses harus ditolak secara default, kecuali item tersebut adalah sumber daya publik.
Gunakan kembali mekanisme kontrol akses di seluruh aplikasi
Menegakkan batasan bisnis aplikasi
Nonaktifkan daftar direktori untuk server web
Batasi akses ke API dan controller
Kegagalan kriptografi (Cryptographic failures)
Kegagalan kriptografi adalah gejala luas dari kerusakan atau kekurangan dalam kriptografi, yang dapat menyebabkan kompromi sistem atau pemaparan data sensitif. Data yang dapat diidentifikasi secara pribadi dan nomor kartu kredit adalah beberapa jenis data yang memerlukan perlindungan ekstra. Metode perlindungan data ditentukan oleh jenis data dan apakah data tersebut tunduk pada undang-undang privasi data seperti Peraturan Perlindungan Data Umum (General Data Protection Regulation/GDPR) UE atau tidak.
Kegagalan kriptografi meliputi:
Enkripsi yang tidak diterapkan di browser tempat header keamanan HTTP tidak ada.
Rantai kepercayaan sertifikat server tidak valid.
Data ditransmisikan dalam teks yang jelas melalui protokol browser seperti FTP, SMTP, dan HTTP.
Menyebarkan algoritma dan protokol kriptografi yang lemah; mengabaikan algoritme kriptografi yang lemah dalam kode lawas.
Pencegahan
Mencegah kegagalan kriptografi bergantung pada fungsionalitas aplikasi dan tipe data yang digunakan. Ada berbagai aspek untuk melindungi data dengan tepat. Pencegahan mencakup hal-hal berikut (dan banyak lagi yang tercakup dalam panduan referensi OWASP):
Mengklasifikasikan data yang telah diproses, dikirim, atau disimpan oleh aplikasi. Klasifikasikan data sensitif menurut undang-undang privasi yang berlaku, persyaratan bisnis, atau kewajiban peraturan.
Simpan hanya data yang dibutuhkan, lalu buang setelah tindakan selesai.
Enkripsi semua data selama transmisi dan saat istirahat.
Hindari menggunakan protokol lama untuk mengangkut data sensitif.
Injeksi
Kerentanan injeksi dapat dideteksi melalui peninjauan kode sumber. Kategori ini mencakup skrip lintas situs (cross-site scripting), injeksi SQL, dan injeksi XML di antara banyak lainnya. Otomasi dapat membantu di sini dengan memastikan semua parameter dan input data diuji untuk mengidentifikasi kerentanan.
Aplikasi rentan terhadap injeksi ketika:
Data yang dimasukkan pengguna diterima tanpa validasi, sanitasi, atau pemfilteran.
Data yang bermusuhan digunakan untuk mengekstrak informasi sensitif.
Pencegahan
Memisahkan kueri dan perintah dari data sangat penting untuk mencegah upaya injeksi:
Pastikan sintaks escape menyertakan karakter khusus untuk juru bahasa yang digunakan.
Gunakan kontrol kueri untuk mencegah input tak terduga melakukan tindakan yang tidak sah.
Gunakan pernyataan yang disiapkan dengan kueri berparameter melalui API yang aman, terpisah dari juru bahasa.
Desain tidak aman (Insecure design)
Desain yang tidak aman berbeda dengan implementasi yang tidak aman. Desain yang aman dapat diimplementasikan secara tidak sempurna yang mengakibatkan kerentanan. Desain yang tidak aman tidak dapat diperbaiki melalui penerapan karena desain itu sendiri tidak berisi kontrol keamanan yang sesuai. Kegagalan untuk secara akurat menilai risiko bisnis yang terkait dengan perangkat lunak atau sistem yang sedang dikembangkan menyebabkan tingkat keamanan yang tidak memadai.
Pencegahan
Budaya keamanan mencakup penggunaan metodologi desain aman yang mengevaluasi ancaman dan memastikan kode dirancang dan diuji terhadap metode serangan yang diketahui. Pencegahan termasuk metode yang memupuk budaya pembangunan yang aman:
Bermitra dengan ahli keamanan aplikasi profesional untuk membantu mengevaluasi dan merancang kontrol seputar privasi dan keamanan. Gunakan siklus hidup pengembangan yang aman.
Komponen harus siap digunakan dan pola desain yang aman.
Terapkan pemodelan ancaman terhadap kontrol akses, aliran data utama, logika bisnis, dan autentikasi penting.
Kesalahan konfigurasi keamanan
Kesalahan konfigurasi keamanan dapat disebabkan oleh rangkaian kontrol yang dikonfigurasi secara tidak tepat serta faktor lain yang berkontribusi terhadap kerentanan aplikasi. Kategori ini mencakup banyak kesalahan konfigurasi umum:
Konfigurasi izin yang salah (Misconfigured permissions) untuk layanan cloud.
Mengaktifkan fitur yang tidak perlu, yang dapat menyebabkan port terbuka yang tidak perlu, layanan, atau peningkatan hak istimewa yang tidak semestinya.
Kredensial login akun default tidak berubah.
Pencegahan
Pencegahan dimulai dengan proses konfigurasi keamanan menyeluruh yang dapat diulang di seluruh sistem dan sebaiknya otomatis:
Tetapkan proses penguatan keamanan yang berulang, idealnya melalui otomatisasi, untuk memastikan pengamanan lingkungan baru dengan tepat di setiap penerapan.
Gunakan hanya apa yang dibutuhkan. Uninstall atau hapus fitur dan komponen yang tidak dibutuhkan.
Terapkan proses otomatis untuk meninjau pengaturan keamanan di seluruh lingkungan.
Komponen yang rentan dan usang
Komponen yang belum ditambal dan lama yang tetap diproduksi dengan baik setelah kerentanan ditemukan dan diungkapkan dapat menjadi risiko besar. Aplikasi bisa menjadi rentan jika tidak menggunakan versi perangkat lunak terbaru. Jika tidak jelas versi pustaka atau komponen mana yang digunakan, aplikasi mungkin juga jadi rentan. Komponen yang tidak dipindai untuk kerentanan juga mungkin berisiko.
Pencegahan
Menetapkan proses manajemen patch (patch-management process) dapat membantu mengurangi potensi serangan dengan menutup kerentanan sebelum menjadi masalah. Ini harus mencakup:
Penghapusan pustaka, komponen, kerangka kerja, dokumentasi, dan file yang tidak digunakan atau tidak diperlukan.
Pemantauan berkelanjutan dan inventarisasi komponen sisi server dan sisi klien.
Gunakan hanya perpustakaan dan sumber resmi melalui tautan aman.
Memantau pustaka dan komponen yang tidak didukung yang tidak lagi dipertahankan atau telah mencapai akhir masa pakainya.
Kegagalan identifikasi dan otentikasi
Kegagalan otentikasi dan identifikasi terjadi ketika identitas pengguna, otentikasi, dan informasi sesi tidak dikonfirmasi sebelum pengguna diizinkan untuk mengakses sistem dan data. Faktor-faktor yang dapat membahayakan aplikasi karena kegagalan ini termasuk mengizinkan kata sandi yang lemah; menggunakan penyimpanan data kata sandi teks biasa dengan hash lemah; dan mengizinkan bot, yang dapat melakukan serangan otomatis seperti brute force dan credential stuffing.
Pencegahan
Pencegahan berfokus pada penyediaan penyimpanan dan pengambilan kata sandi yang aman dan mencakup:
Menerapkan otentikasi multi-faktor.
Menghindari penerapan menggunakan kredensial default, terutama untuk akun administratif.
Batasi eksposur ke pencacahan (enumeration) akun.
Kegagalan integritas perangkat lunak dan data
Yang baru dalam daftar OWASP adalah CWE tentang kegagalan perangkat lunak dan integritas data. Risikonya di sini adalah mempercayai pembaruan data dan perangkat lunak tanpa memeriksa integritasnya. Penyerang telah menggunakan rantai pasokan perangkat lunak untuk mengeluarkan malware melalui pembaruan perangkat lunak yang tampaknya sah. Banyak sistem menggunakan fitur pembaruan perangkat lunak otomatis yang tidak memverifikasi integritas pembaruan.
Pencegahan
Pencegahan dimulai dengan verifikasi dan meliputi:
Menggunakan tanda tangan digital atau metode verifikasi lainnya untuk menandatangani pembaruan perangkat lunak secara digital guna memastikan bahwa pembaruan tersebut berasal dari sumber yang diharapkan dan tiba secara utuh.
Memverifikasi bahwa perpustakaan pihak ketiga dan dependensi lainnya berasal dari sumber yang sah.
Memverifikasi bahwa sumber daya pihak ketiga tidak mengandung kerentanan dengan menggunakan alat keamanan otomatis yang dirancang untuk rantai pasokan perangkat lunak.
Pencatatan keamanan dan kegagalan pemantauan
Kategori kegagalan pencatatan dan pemantauan keamanan berfokus pada masalah dengan log audit dan pemantauan selama serangan. Pemantauan dan log keamanan sangat penting untuk mendeteksi dan mengurangi pelanggaran aktif. Kegagalan terjadi ketika:
Pencatatan tidak melacak transaksi dengan nilai tinggi, upaya login, dan upaya login yang gagal.
Kesalahan dan peringatan menghasilkan entri log yang tidak jelas, tidak memadai, atau tidak ada sama sekali.
API dan aplikasi tidak dipantau untuk aktivitas yang mencurigakan.
Log keamanan hanya tersedia secara lokal.
Aplikasi yang tidak dapat mendeteksi atau mengeluarkan peringatan tepat waktu untuk serangan yang sedang berlangsung.
Pencegahan
Pencegahan berfokus pada mengaktifkan logging dan pemantauan keamanan di seluruh aplikasi. Pengembang harus memastikan kontrol keamanan diterapkan jika sesuai. Kontrol keamanan harus mencakup hal-hal berikut:
Login, kontrol akses, dan kegagalan validasi sisi server harus dicatat dengan konteks pengguna untuk memastikan aktivitas berbahaya dan mencurigakan dapat dipertahankan cukup lama untuk memungkinkan analisis.
Log harus dibuat dalam format yang sesuai untuk dibaca alat manajemen log.
Aktifkan pemantauan dan peringatan untuk aktivitas yang mencurigakan.
Mengadopsi respons insiden dan rencana mitigasi.
Pemalsuan permintaan sisi server (server-side request forgery/SSRF)
Kategori pemalsuan permintaan sisi server berfokus pada kelemahan dalam fitur kenyamanan pengguna. Cacat SSRF terjadi saat aplikasi web mengambil sumber jarak jauh yang diminta pengguna tanpa memverifikasi tujuan terlebih dahulu. Permintaan khusus dapat dikirim ke aplikasi melalui sumber yang tidak terduga.
Aplikasi biasanya mengambil URL untuk mengaktifkan peralihan tugas yang lebih mudah bagi pengguna akhir, seringkali menyimpannya di dalam aplikasi sambil memberikan akses ke fitur lain melalui URL yang diambil. Kompleksitas arsitektur cloud yang terus meningkat berarti SSRF terjadi pada frekuensi yang lebih tinggi.
Pencegahan
SSRF terjadi di tingkat jaringan dan aplikasi. Lindungi jaringan dengan menggunakan segmentasi jaringan untuk memisahkan sumber daya jarak jauh. Blokir lalu lintas tidak penting lainnya dengan kebijakan "tolak secara default" (deny-by-default).
Metode perlindungan aplikasi harus mencakup:
Sanitasi input data, validasi, dan pemfilteran.
Menonaktifkan pengalihan HTTP di tingkat server
Memastikan respons server yang diterima sesuai dengan hasil yang diharapkan. Respons mentah dari server tidak boleh dikirim ke klien.
Cara melindungi dari kerentanan keamanan aplikasi
Secara tradisional, keamanan sulit untuk dimasukkan ke dalam proses pembangunan. Jika DevSecOps bukan opsi untuk organisasi atau proses/tahap pengembangan, alat keamanan dapat membantu memunculkan masalah lebih awal sehingga dapat ditangani.
Desain dengan mempertimbangkan keamanan. Keamanan berkontribusi pada keberhasilan keamanan keseluruhan aplikasi karena aplikasi yang dirancang dengan aman mencegah penyerang mendatangkan malapetaka, memastikan persyaratan kepatuhan terpenuhi, dan membantu membangun kepercayaan konsumen.
Praktik terbaik keamanan aplikasi berfokus pada pengendalian siapa yang memiliki akses ke informasi dan sistem sekaligus memperhitungkan penyimpanan dan transmisi data yang aman. Log aplikasi menyediakan catatan riwayat aktivitas sistem dan jaringan.
Otentikasi: Metode otentikasi harus kuat dan andal. Kata sandi, autentikasi multi-faktor (MFA), dan kode PIN adalah contoh metode autentikasi. Verifikasi aktivitas login harus cukup kuat untuk mencegah bypass verifikasi.
Otorisasi: Pengguna dan sistem tidak memerlukan akses yang sama, juga tidak seharusnya, karena mereka akan memiliki kebutuhan yang berbeda. Mengikuti prinsip least privilege membantu saat ada tugas yang membutuhkan data untuk diakses. Gunakan kebijakan berbasis peran untuk menetapkan batasan tentang siapa yang dapat melakukan jenis tugas yang mana.
Enkripsi: Mengenkripsi data saat istirahat dan selama transmisi sangat penting untuk melindungi aset. Data aman harus dapat diakses untuk melindungi integritasnya.
File log: Mempertahankan sistem penting dan log tingkat jaringan sangat penting untuk memastikan data historis disimpan untuk penyelidikan insiden keamanan. Log dapat mengungkap kelemahan yang dapat diatasi untuk memperkuat keamanan aplikasi.
Pemantauan, kesadaran kerentanan, dan peringatan: Karena aplikasi berkembang melalui siklus pengembangan yang cepat, mereka membutuhkan pemantauan berkelanjutan untuk memastikan kerentanan dan masalah keamanan lainnya ditangani. Kerentanan dapat berubah dari versi ke versi, jadi penting bagi tim pengembangan untuk memahami lanskap ancaman saat ini dan setiap kerentanan dalam pustaka kode dan sumber daya pihak ketiga yang mereka gunakan.
Tim pengembangan dan keamanan juga harus meninjau peringatan kerentanan keamanan terbaru secara teratur. Institut Standar dan Teknologi Nasional (National Institute of Standards and Technology/NIST) mengelola Database Kerentanan Nasional publik ( National Vulnerability Database). MITRE Corporation memelihara umpan data CVE publik.
Pemindaian keamanan aplikasi berbasis kerentanan: Pemindaian kerentanan dapat mengidentifikasi kelemahan keamanan aplikasi sejak dini untuk perbaikan yang lebih cepat. Alat pemindaian kerentanan keamanan dapat memprioritaskan kerentanan berdasarkan keamanan, jenis aplikasi (ditentukan pelanggan), kepentingan aset, popularitas kerentanan, tanggal pengungkapan, dan waktu untuk memulihkan. Memprioritaskan kerentanan berdasarkan tingkat keparahan membantu tim pengembangan fokus pada kerentanan prioritas tinggi.
.