Firewall aplikasi web

Firewall aplikasi web


Firewall aplikasi web (WAF) adalah jenis deteksi intrusi dan sistem pencegahan dan dapat berupa solusi perangkat keras atau perangkat lunak. Ini dirancang khusus untuk memeriksa HTTP (s) dan menganalisis permintaan GET dan POST menggunakan logika deteksi mengerikan dijelaskan di bawah ini. Perangkat lunak firewall aplikasi web umumnya tersedia sebagai plugin server web.

WAF telah menjadi sangat populer dan berbagai perusahaan menawarkan berbagai solusi dalam kategori harga yang berbeda, dari bisnis kecil hingga perusahaan besar. WAF Modern populer karena memiliki berbagai tugas yang dibahas, sehingga pengembang aplikasi web dapat mengandalkannya untuk berbagai masalah keamanan, tetapi dengan asumsi bahwa solusi ini tidak dapat menjamin perlindungan absolut. Alur kerja WAF dasar ditunjukkan di bawah ini.



Fungsi utamanya adalah deteksi dan pemblokiran kueri di mana, menurut analisis WAF, ada beberapa anomali, atau vektor serangan dilacak. Analisis seperti itu seharusnya tidak menyulitkan pengguna yang sah untuk berinteraksi dengan aplikasi web, tetapi, pada saat yang sama, itu harus secara akurat dan tepat waktu mendeteksi segala upaya serangan. Untuk mengimplementasikan fungsi ini, pengembang WAF biasanya menggunakan ekspresi reguler, token, analisis perilaku, analisis reputasi dan pembelajaran mesin, dan, seringkali, semua teknologi ini digunakan bersama-sama.



Selain itu, WAF juga dapat menyediakan fungsionalitas lain: perlindungan dari DDoS, pemblokiran alamat IP penyerang, pelacakan alamat IP yang mencurigakan, menambahkan tanda HTTP-only ke cookie, atau menambahkan fungsionalitas token CSRF. Setiap WAF bersifat individual dan memiliki pengaturan internal yang unik, tetapi ada beberapa metode khas yang digunakan untuk analisis.

Ekspresi reguler


Sebagian besar WAF yang ada didasarkan pada aturan berdasarkan ekspresi reguler. Untuk membuatnya, beberapa set serangan terkenal dipelajari oleh pengembang WAF dan, akibatnya, konstruksi sintaksis utama ditentukan, yang keberadaannya dapat diklaim untuk melakukan serangan. Berdasarkan hasil yang diperoleh, ekspresi reguler ditulis yang dapat menemukan konstruksi tersebut. Misalnya, dengan menganalisis tajuk HTTP seperti Server: Apache Tomcat / 7.0.x, WAF dapat memblokir respons dan dengan demikian mencegah kebocoran informasi server atau, sebagai alternatif, meningkatkan peringatan.

Namun, pendekatan ini memiliki sejumlah kelemahan. Kisaran penerapan ekspresi reguler terbatas pada satu kueri, dan seringkali bahkan parameter kueri tertentu, yang jelas mengurangi efektivitas permintaan tersebut. Kedua, sintaks ekspresi reguler, logika kompleks dari protokol teks, yang memungkinkan penggantian konstruksi yang setara dan penggunaan representasi simbol yang berbeda, menyebabkan kesalahan saat membuat aturan tersebut. Tabel di bawah ini menunjukkan teknik memotong yang paling umum.



Kebingungan SQL. Dimungkinkan untuk mengubah ekspresi sehingga, menggunakan sintaks bahasa, dapat menghilangkan spasi. Misalnya, dalam SQL, Anda dapat menggunakan tanda kurung dan bintang:
s / * / e / ** // * e * // * / l / * le * c * // * / dll ~~ / ** / 1 atau / id = 1 + un / ** / ion + sel / ** / dll + 1,2,3--

Yang lain didasarkan pada penggunaan pengkodean yang berbeda sedemikian rupa sehingga WAF tidak memecahkan kode data di tempat-tempat tertentu. Misalnya, setelah mengganti satu karakter dengan kode url-nya dalam proses normalisasi, WAF tidak akan dapat memahami bahwa perlu untuk men-decode data dan melewatkan permintaan, sementara parameter yang sama akan diterima dan berhasil didekodekan oleh web aplikasi.



Cari konstruksi sintaksis setara atipikal. Metode ini digunakan untuk menemukan cara operasi yang tidak dapat dipertimbangkan oleh pengembang WAF, atau vektor tidak ada dalam sampel studi untuk pembelajaran mesin. Salah satu konstruksi ini adalah representasi kode Javascript Non-alfanumerik, contohnya ditunjukkan di bawah ini.



Metode membangun skor


Pendekatan ini tidak mendeteksi serangan, tetapi melengkapi metode lain, membuatnya lebih tepat dan fleksibel. Alasan untuk pengenalan alat ini adalah bahwa keberadaan dalam permintaan beberapa desain yang mencurigakan tidak cukup untuk mendeteksi serangan, atau, sebaliknya, dapat menyebabkan sejumlah besar kesalahan positif palsu. Masalah ini diselesaikan dengan memperkenalkan sistem penilaian. Sebagai contoh, setiap aturan berdasarkan ekspresi reguler dilengkapi dengan informasi tentang kekritisan operasinya; Setelah mengidentifikasi semua aturan yang berlaku, kekritisannya dirangkum. Dalam hal mengatasi nilai ambang tertentu, serangan terdeteksi dan permintaan diblokir.

Analisis perilaku


Mendeteksi upaya untuk mengeksploitasi kerentanan dalam parameter kueri bukan satu-satunya tugas WAF. Penting untuk mengidentifikasi prosedur pencarian kerentanan itu sendiri, yang dapat memanifestasikan dirinya dalam upaya untuk memindai, kekuatan kasar direktori, fuzzing parameter, dan metode lain dari deteksi kerentanan yang sering digunakan oleh alat otomatis, dan bereaksi sesuai dengan mereka. WAF yang lebih maju bahkan tahu cara membuat file XML dengan rantai kueri yang khas untuk perilaku pengguna normal dan memblokir upaya untuk mengirim permintaan dalam urutan yang berbeda dari perilaku standar. Mekanisme ini tidak hanya menangkal serangan, tetapi juga mempersulit proses menemukan kerentanan.

Penganalisa parser Tokeniser


Pendekatan untuk mendeteksi serangan ini adalah konsep yang kompleks; Namun, tidak mudah untuk membongkar itu pada C ++ primer dari perpustakaan Libinjection, yang memungkinkan untuk dengan cepat dan akurat mendeteksi serangan injeksi SQL. Saat ini, untuk perpustakaan Libinjection, ada port untuk berbagai bahasa pemrograman, termasuk Java, C dan Python. Mekanisme dikurangi menjadi pencarian tanda tangan, direpresentasikan sebagai urutan token. Beberapa tanda tangan ditambahkan ke daftar hitam bawaan dan dianggap tidak dapat diterima atau berbahaya. Dengan kata lain, sebelum Anda menganalisis permintaan apa pun, terlebih dahulu mengarah ke satu set token. Token dibagi menjadi berbagai jenis, string, karakter, operator reguler, jumlah, komentar, variabel, dll.

Salah satu kelemahan utama dari metode ini adalah bahwa adalah mungkin untuk membangun desain seperti itu yang akan mengarah pada pembentukan token yang salah; karenanya, tanda tangan permintaan akan berbeda dari yang diharapkan.

Serangan yang diarahkan pada tokeniser terkait dengan upaya untuk mematahkan logika dengan memecah permintaan menjadi token menggunakan token-breaker. Ini adalah simbol yang memungkinkan Anda untuk memengaruhi pilihan elemen string agar cocok dengan token tertentu, dan, karenanya, memintas pencarian dengan tanda tangan. Dalam akses terbuka, ada beberapa lembar contekan, yang diperoleh oleh fuql fuzzing dan pemeriksaan kueri berikutnya di Libinjection.

Analisis reputasi


Mekanisme reputasi diwarisi langsung dari firewall dan antivirus. Saat ini, hampir semua WAF termasuk daftar alamat layanan VPN, anonimis, simpul jaringan Tor dan peserta botnet yang dapat digunakan untuk memblokir permintaan yang berasal dari alamat yang mencurigakan. WAF yang lebih maju dapat memperbarui database mereka secara otomatis dan membuat entri tambahan berdasarkan lalu lintas yang dianalisis.

Ringkasan


Secara umum, Aplikasi Web Firewall adalah alat perlindungan modern dan baik, dan tidak akan pernah berlebihan untuk aplikasi web. Gagasan utama untuk menemukan cara untuk memotong WAF adalah untuk membawa permintaan yang diminta ke bentuk di mana ia masih dapat dimengerti oleh aplikasi web yang diserang, tetapi tidak dapat dimengerti atau tampaknya tidak berbahaya bagi WAF.

Namun, ada beberapa kelas kerentanan yang tidak dapat dideteksi WAF. Ini bisa berupa kerentanan logis, dalam hal ini tidak ada perilaku abnormal dalam permintaan. Selain itu, beberapa penelitian yang dilakukan untuk mengoptimalkan aturan WAF juga menunjukkan metode mengecualikan permintaan yang sah dari proses inspeksi, yang dapat berpotensi berbahaya. WAF juga kemungkinan besar tidak berguna dalam mengidentifikasi saingan, seperti kondisi ras dan otentikasi pengguna yang tidak aman.

Referensi


Vladimir Ivanov (2016) Tabel simbol yang diperbolehkan dalam input ekspresi SQL yang berbeda, hasil parsing tabel fuzz. Tersedia di: www.blackhat.com/docs/us-16/materials/us- 16-Ivanov-Web-Application-Firewalls-Analysis-Of-Detection-Logic.pdf

Torrano-Gimenez, C., Perez-Villegas, A. dan Alvarez, G. (2009) 'Firewall Aplikasi Web Berbasis Anomali Belajar Sendiri', Springer, Berlin, Heidelberg. doi: doi.org/10.1007/978-3-642-04091-7_11 .

Ramsingh, C. dan Centonze, P. (2017) 'Analisis Program Untuk Suntikan Database', JURNAL INTERNASIONAL KOMPUTER & TEKNOLOGI, 16 (6), hlm. 6977–6986. Doi: 10.24297 / ijct.v16i6.6332.

Prokhorenko, V., Choo, KKR dan Ashman, H. (2016) 'Teknik perlindungan aplikasi web: A taksonomi', Jurnal Jaringan dan Aplikasi Komputer, 60, hal. 95-112. doi: 10.1016 / j.jnca.2015.11.11.017.

Prandl, S., Lazarescu, M. dan Pham, D. (2015). Studi Solusi Firewall Aplikasi Web. Keamanan Sistem Informasi, hlm. 501-510. doi: 10.1007 / 978-3-319-26961-0_29.

Positive-Technologies (2016a) 'Firewall Aplikasi Web: Menyerang mekanisme logika deteksi'. Tersedia di: www.blackhat.com/docs/us-16/materials/us-16-Ivanov- Aplikasi-Web-Firewall-Analisis-Deteksi-Logika.pdf.

OWASP (2017) SQL Injection Bypassing WAF. Tersedia di: www.owasp.org/index.php/SQL_Injection_Bypassing_WAF .

Source: https://habr.com/ru/post/id446518/


All Articles