22 Kerentanan Aplikasi Web yang Umum untuk Diketahui

Diterbitkan: 2021-10-14

Bisnis terus-menerus "bergeser ke kiri" dan memanfaatkan pengalaman pelanggan dan karyawan yang inovatif yang diberikan oleh aplikasi berbasis cloud. Pada saat yang sama, pelaku kejahatan juga terus merevisi strategi serangan mereka agar sesuai dengan perubahan ini.

Untuk menjaga privasi dan keamanan data, bisnis harus mencari perlindungan terhadap 22 kerentanan aplikasi web yang umum ini .

  1. Kontrol akses yang rusak

    Kontrol akses bertanggung jawab atas bagaimana pengguna berinteraksi dengan sumber daya dan data, serta apa yang dapat mereka edit dan/atau baca. Kerentanan kontrol akses yang salah mungkin terjadi ketika pengguna dapat menggunakan data dengan cara yang benar-benar tidak perlu. Misalnya, jika pengguna seharusnya hanya mampu membaca detail pembayaran tetapi sebenarnya memiliki kemampuan untuk mengeditnya, situasi seperti itu menunjukkan kontrol akses yang rusak. Penyerang jahat memanfaatkan kerentanan ini untuk mendapatkan akses tidak sah ke perangkat lunak, jaringan, dan sistem. Mereka kemudian dapat mengeksploitasi situasi, memberikan ID pengguna lebih banyak akses dalam infrastruktur, untuk membahayakan ketersediaan data, kerahasiaan, atau integritas.

  1. Otentikasi rusak

    Kerentanan aplikasi web yang terkait dengan otentikasi yang rusak atau rusak juga berasal dari akses pengguna. Namun, dalam kasus ini, penyerang jahat berdampak negatif pada data yang mengonfirmasi identitas pengguna, seperti melalui pembajakan token sesi, kunci, atau kata sandi. Penyerang jahat memperoleh akses tidak sah ke perangkat lunak, sistem, dan jaringan karena organisasi tidak dapat menetapkan identitas yang memadai dan kontrol manajemen akses.

  1. Pengembalian Kereta dan Injeksi Umpan Garis (CRLF)

    Carriage return bertindak sebagai perintah yang menunjukkan awal baris kode, biasanya ditunjukkan sebagai /r. Umpan baris di sisi lain adalah perintah yang menunjukkan akhir dari baris kode, biasanya ditunjukkan sebagai /n. Seperti beberapa perangkat lunak lainnya, setiap sistem operasi menggunakan berbagai kombinasi antara carriage return dan line feed. Ketika penyerang jahat terlibat dalam injeksi CRLF, kode yang dimasukkan mengubah cara aplikasi web bereaksi terhadap perintah. Ini dapat digunakan untuk mengungkapkan data sensitif atau mengeksekusi kode.

  1. Transformasi sandi tidak aman

    Cipher, yang merupakan istilah standar untuk "algoritma enkripsi", sebenarnya adalah matematika di balik proses enkripsi atau dekripsi. Transformasi mengacu pada garis besar operasi yang dilakukan pada input untuk menghasilkan output yang diharapkan. Jadi, transformasi sandi mengacu pada jumlah operasi yang menyembunyikan data terenkripsi yang tidak dapat dibaca kembali ke data yang dapat dibaca dan didekripsi. Kerentanan tidak aman transformasi cipher menjelaskan bahwa algoritma enkripsi dapat dengan mudah dipatahkan, pada akhirnya menyabotase esensi enkripsi pada contoh pertama.

  1. Komponen dengan kerentanan yang jelas

    Setiap aplikasi web bergantung pada komponen lain untuk berfungsi. Misalnya, jika Anda mengoperasikan aplikasi di web atau server aplikasi yang belum ditambal, server adalah bagian dengan kerentanan yang jelas. Daftar Common Vulnerabilities and Exposures (CVE) terdiri dari semua kerentanan keamanan yang diketahui. Karena penyerang jahat memiliki pengetahuan tentang daftar tersebut, mereka sering mencari komponen tanpa pembaruan patch keamanan yang memadai. Saat mereka dapat menyusup ke salah satu komponen aplikasi web, mereka juga dapat memperoleh akses ke data aplikasi.

  1. Kebijakan Berbagi Sumber Daya Lintas Asal (CORS)

    Semua aplikasi berbasis web menggunakan URL sebagai media penghubung browser pengguna ke servernya. Kebijakan Asal yang Sama adalah salah satu perlindungan umum. Sejalan dengan ini, server hanya akan menanggapi URL dengan protokol, skema jalur, dan nama domain tingkat atas yang sama. Artinya, Anda dapat mengakses http://organization.com/page1 dan http://organization.com/page2 karena keduanya berbagi hal berikut:

    • Protokol: HTTP
    • Domain: Perusahaan.com
    • Skema jalur: /halaman#

    Meskipun aman, Kebijakan Asal yang Sama bersifat membatasi saat menangani aplikasi berbasis web yang memerlukan akses ke sumber daya yang terhubung ke pihak ketiga atau subdomain.

    Kebijakan CORS memberikan izin kepada browser untuk melihat sumber daya yang saling terkait ini dengan menetapkan sejumlah header HTTP yang diizinkan yang dianggap "tepercaya". Misalnya, sebuah aplikasi mungkin harus mengambil data dari dua database di server web yang terpisah. Menyusun daftar "diizinkan" tertentu menjadi pekerjaan yang berlebihan saat Anda menyertakan server tambahan. Karena kedua server "berbagi" aplikasi, perusahaan menulis kebijakan CORS yang memungkinkan browser terhubung ke keduanya. Namun, jika kebijakan CORS tidak ditentukan dengan benar, maka kebijakan tersebut dapat mengizinkan server untuk memberikan akses saat diminta oleh penyerang jahat.

  1. Manajemen kredensial

    Kredensial pengguna terdiri dari ID pengguna dan kunci sandi. Pengguna harus menyediakan kedua item informasi ke halaman login sebelum akses ke aplikasi diperoleh. Namun, basis data cenderung menggunakan enkripsi yang lemah atau menyimpan informasi dalam teks biasa. Manajemen kredensial yang buruk memungkinkan penyerang dengan mudah mencuri kredensial dan mengeksploitasinya untuk mendapatkan akses ke aplikasi web.

  1. Pemalsuan permintaan lintas situs (CSRF)

    Serangan CSRF menggunakan metodologi rekayasa sosial untuk mendorong pengguna mengubah informasi, seperti kata sandi atau nama pengguna, dalam suatu aplikasi. CSRF, tidak seperti serangan atau malware cross-site scripting (XXS), mengharuskan pengguna masuk ke aplikasi yang hanya menggunakan cookie sesi untuk memvalidasi permintaan pengguna atau sesi pelacakan. Saat pengguna melakukan tindakan yang diantisipasi, pelaku kejahatan menggunakan browser untuk mengeksekusi bagian serangan yang tersisa, seperti memindahkan dana, tanpa pengguna mengetahui apa yang terjadi.

  1. Pembuatan skrip lintas situs (XXS)

    Tidak seperti CSRF yang mengharuskan pengguna masuk ke aplikasi untuk ditipu agar mengubah informasi tertentu, serangan XXS mengharuskan penyerang jahat memasukkan kode ke dalam laman web, biasanya di beberapa komponen laman seperti gambar. Setelah pengguna meluncurkan halaman web di browser mereka, kode buruk mulai diunduh dan dijalankan di browser. Misalnya, kode berbahaya dapat mengarahkan pengguna dari situs yang kredibel ke situs yang tidak sah.

  1. Pengindeksan direktori

    Biasanya, server web menguraikan semua file yang disimpan di dalamnya dalam satu direktori. Ketika pengguna ingin mencari file tertentu dalam aplikasi web, mereka biasanya menambahkan nama file dalam permintaan. Jika file tidak tersedia, aplikasi akan menampilkan daftar semua file yang diindeks kepada pengguna, sehingga pengguna memiliki opsi untuk memilih yang lain.

    Namun, file secara otomatis diindeks oleh server web. Saat aplikasi menampilkan daftar semua file yang disimpan, penyerang jahat yang memanfaatkan kerentanan dalam indeks direktori dapat memperoleh akses ke data yang dapat memberi mereka lebih banyak informasi tentang sistem. Misalnya, mereka dapat mengetahui tentang akun pengguna pribadi atau konvensi penamaan. Kedua titik data ini dapat dimanfaatkan untuk melakukan serangan pencurian kredensial atau mengungkap informasi sensitif.

  1. traversal direktori

    Juga dikenal sebagai serangan balik, dot-dot-slash, dan pendakian direktori, kerentanan traversal direktori mengeksploitasi cara aplikasi menerima data dari server web. Access Control Lists (ACLs) umumnya membatasi akses pengguna ke file tertentu yang diberikan di dalam direktori root. Penyerang berbahaya yang menggunakan mode kerentanan traversal direktori mengetahui format URL yang digunakan aplikasi dalam meminta file.

  1. Enkapsulasi

    Berbeda dari beberapa kerentanan aplikasi web umum lainnya dalam daftar, kerentanan enkapsulasi memanfaatkan kelemahan dalam cara pengembang mengkodekan aplikasi. Enkapsulasi adalah istilah pemrograman yang mengacu pada bundling data dan tindakan yang dapat dilakukan pada data tersebut menjadi satu unit saja. Enkapsulasi mengamankan data dengan menyembunyikan informasi tentang bagaimana kode berjalan yang memberikan antarmuka pengguna yang lebih baik. Pengguna tidak perlu tahu bagaimana aplikasi mengirimkan data kepada mereka; yang mereka butuhkan hanyalah akses ke sana.

    Misalnya, pengembang aplikasi dapat menyertakan kontrol akses, seperti izin baca atau tulis, ke dalam kemampuan aplikasi untuk mengambil data. Jika pengguna meminta informasi di aplikasi, itu hanya memberikan data yang telah diizinkan untuk mereka akses.

    Tetapi jika pengembang gagal menetapkan batasan yang jelas antara data dan tindakan yang dilakukan di berbagai aspek aplikasi, aplikasi mengalami kerentanan enkapsulasi. Penyerang memanfaatkan ini dengan mengirimkan permintaan ke aplikasi, mengetahui tindakan tersebut akan menghasilkan pesan kesalahan. Pesan kesalahan ini kemudian memberikan informasi mengenai struktur aplikasi, membantu lebih banyak strategi serangan seperti DOS – penolakan layanan.

  1. Referensi objek langsung (IDOR) tidak aman

    URL aplikasi web mampu mengekspos pola atau format yang digunakan dalam mengarahkan pengguna ke lokasi penyimpanan back-end. Misalnya, URL mungkin menunjukkan pola/format untuk pengidentifikasi catatan dalam sistem penyimpanan seperti sistem file atau database.

    IDOR sendiri mungkin menjadi perhatian berisiko rendah. Namun, ketika IDOR digabungkan dengan pemeriksaan kontrol akses yang gagal, penyerang mendapatkan kesempatan untuk menyerang dengan sukses.

    Kerentanan aplikasi web umum lainnya yang harus Anda ketahui adalah:

  1. Pemisahan respons HTTP

    Ini adalah jenis serangan injeksi CRLF. HTTP adalah proses di mana browser mengirim kueri dan server mengirim kembali tanggapan. Dalam kerentanan aplikasi web ini, penyerang jahat menggunakan notasi CR dan LR untuk memanipulasi bagaimana browser dan server berkomunikasi satu sama lain yang mengirimkan permintaan tetapi memberi tahu server untuk "membagi" respons menjadi berbagai bagian. Membagi respons menjadi dua bagian yang berbeda memungkinkan aktor jahat untuk mendapatkan kendali atas informasi yang diberikan server sebagai respons terhadap bagian lain dari permintaan tersebut. Ketika data yang diminta tersebut adalah data ID pengguna atau informasi sensitif, pelaku kejahatan telah berhasil melakukan serangan.

  1. Cacat injeksi

    Cacat injeksi memungkinkan sejumlah besar berbagai teknik serangan. Aplikasi apa pun yang memungkinkan pengguna untuk memperbarui perintah shell, panggilan sistem operasi, atau database dapat mengalami cacat injeksi. Penyerang jahat memanfaatkan kelemahan injeksi untuk mengubah perintah yang berkembang menjadi tindakan baru dan tak terduga dalam aplikasi. Dengan memanfaatkan kerentanan ini, pelaku kejahatan dapat membuat, memperbarui, membaca, atau bahkan menghapus data.

  1. Kerentanan intisari pesan yang tidak aman

    Ini adalah kerentanan kriptografi yang membatasi efektivitas enkripsi. Intisari pesan harus terdiri dari fungsi hash kriptografik. Berbeda dengan enkripsi, fungsi hash tidak mengharuskan pengirim dan pengguna menggunakan kunci.

    Dengan demikian, penyerang jahat memanfaatkan kerentanan intisari yang tidak aman untuk mengabadikan "serangan tabrakan hash". Tujuan serangan adalah untuk mengetahui apakah pengiriman input mengarah ke generasi hash duplikat. Jika tindakan jahat secara paksa menghasilkan hash bersama, maka mereka dapat menggunakan hash ini untuk menyajikan file ganas untuk diunduh. Ini pada gilirannya meninggalkan pengguna akhir dengan asumsi bahwa file tersebut sah.

  1. Perlindungan lapisan transport tidak memadai

    Transport layer security (TLS) mengacu pada proses di mana aplikasi komputer dapat "berkomunikasi" dengan aman satu sama lain di internet. Sejumlah aplikasi hanya menggunakan TLS selama proses otentikasi, yang membuat data dan informasi sesi ID rentan ketika seseorang menggunakan aplikasi tersebut.

    Penyerang dapat memanfaatkan kerentanan ini untuk mengalihkan data saat bergerak melintasi internet antara perangkat pengguna dan server aplikasi.

  1. Eksekusi kode jarak jauh (RCE)

    Kerentanan eksekusi kode jarak jauh adalah kesalahan pengkodean dalam aplikasi web yang memungkinkan penyerang jahat untuk memasukkan kode terlepas dari lokasi geografis mereka. RCE termasuk dalam kategori kerentanan injeksi aplikasi web yang lebih luas di mana penyerang memasukkan kode mereka sendiri ke dalam aplikasi yang tidak akan mengonfirmasi input pengguna, membuat server melihatnya sebagai kode aplikasi asli. Biasanya, penyerang jahat akan memanfaatkan kerentanan umum yang belum ditambal dan memasukkan kode mereka ke dalam aplikasi.

  1. Inklusi file jarak jauh (RFI)

    Untuk menautkan direktori umum ke aplikasi, pengembang menambahkan pernyataan "sertakan" dalam kode mereka. Misalnya, aplikasi mungkin harus mengambil data dari database. Daripada mengkodekannya secara manual untuk mendapatkan setiap file, pernyataan "include" membantu menautkan seluruh direktori sumber sehingga semua yang disimpan di sana dapat digunakan.

    Ketika aplikasi web mengalami kerentanan RFI, penyerang dapat memanipulasi aplikasi untuk mengunggah kode berbahaya atau malware ke database, server, atau situs web.

  1. Kesalahan konfigurasi keamanan

    Kemungkinan kesalahan konfigurasi keamanan memang merupakan salah satu kerentanan aplikasi web yang paling umum saat ini. Kerentanan ini umumnya akan terjadi karena kegagalan organisasi untuk mengubah pengaturan keamanan default. Kesalahan konfigurasi keamanan yang umum adalah:

    • Memanfaatkan kata sandi atau akun default
    • Perangkat lunak yang belum ditambal
    • Tidak ada enkripsi
    • Kebijakan firewall tidak memadai
    • Mengabaikan tidak terpakai, sumber daya, fitur, dan komponen lainnya
  1. injeksi SQL

    SQL, yang berarti Structured Query Language, adalah bahasa pemrograman yang digunakan untuk database. Hal ini memungkinkan untuk pengambilan dan manipulasi data untuk database relasional. Kerentanan injeksi SQL berada di bawah kelompok yang lebih besar dari input pengguna yang tidak diverifikasi. Ketika aktor jahat dengan sengaja mengirim permintaan palsu, aplikasi web merespons dengan pesan kesalahan yang memberi mereka informasi tentang struktur dan perlindungan database.

  1. Aktivasi perpustakaan otomatis tidak divalidasi

    Untuk menghemat waktu saat pengkodean, pengembang cenderung menggunakan perpustakaan pihak ketiga. Dalam kebanyakan kasus, ini memungkinkan mereka untuk menggunakan kode yang telah diuji sebelumnya yang mempercepat proses pengembangan aplikasi. Namun, memanfaatkan kode sumber terbuka yang tersedia untuk umum, meningkatkan risiko keamanan, termasuk:

    • Tidak adanya kepemilikan yang terdokumentasi meningkatkan risiko penambahan kode maligna
    • Proyek yang diabaikan yang tidak diperbarui lagi

    Kerentanan khusus ini semakin umum, mengingat beberapa aplikasi melibatkan dependensi perpustakaan pihak ketiga.

Kami berharap isi postingan blog ini memang bermanfaat dan menambah wawasan bagi Anda. Memastikan Anda menemukan solusi untuk kerentanan aplikasi web mana pun yang berlaku untuk kasus Anda akan menjadi pengubah permainan dalam pengalaman karyawan dan pelanggan Anda.