Tutorial Pengujian Fuzz (Fuzzing).

Apa itu Pengujian Fuzz?

Pengujian Fuzz atau Fuzzing adalah teknik pengujian perangkat lunak dengan memasukkan data yang tidak valid atau acak yang disebut FUZZ ke dalam sistem perangkat lunak untuk menemukan kesalahan pengkodean dan celah keamanan. Tujuan dari pengujian fuzz adalah memasukkan data menggunakan teknik otomatis atau semi-otomatis dan menguji sistem untuk berbagai pengecualian seperti sistem mogok atau kegagalan kode bawaan, dll.

Pengujian fuzz pada awalnya dikembangkan oleh Barton Miller di University of Wisconsin pada tahun 1989. Pengujian fuzz atau fuzzing adalah teknik pengujian Perangkat Lunak, dan merupakan salah satu jenis pengujian fuzz. Pengujian Keamanan.

Pengujian Fuzz

Mengapa melakukan Pengujian Fuzz?

  • Biasanya, pengujian Fuzzy menemukan kesalahan atau cacat keamanan yang paling serius.
  • Pengujian fuzz memberikan hasil yang lebih efektif bila digunakan bersama Black Box pengujian, Pengujian Beta, dan metode debugging lainnya.
  • Pengujian fuzz digunakan untuk memeriksa Kerentanan perangkat lunak. Ini adalah teknik pengujian yang sangat hemat biaya.
  • Pengujian fuzz merupakan salah satu teknik pengujian black box. Fuzzing merupakan salah satu metode yang paling umum digunakan oleh para hacker untuk menemukan kerentanan suatu sistem.

Bagaimana melakukan Pengujian Fuzz

Langkah-langkah pengujian fuzzy meliputi langkah-langkah pengujian dasar-

Langkah 1) Identifikasi sistem target

Langkah 2) Identifikasi masukan

Langkah 3) Hasilkan data Fuzzed

Langkah 4) Jalankan pengujian menggunakan data fuzzy

Langkah 5) Pantau perilaku sistem

Langkah 6) Cacat log

Contoh Fuzzer

  • Fuzzer Berbasis Mutasi mengubah sampel data yang ada untuk membuat data uji baru. Ini adalah pendekatan yang sangat sederhana dan lugas, ini dimulai dengan sampel protokol yang valid dan terus merusak setiap byte atau file.
  • Fuzzer Berbasis Generasi mendefinisikan data baru berdasarkan masukan model. Itu mulai menghasilkan masukan dari awal berdasarkan spesifikasi.
  • Fuzzer BERBASIS PROTOKOL, fuzzer yang paling sukses adalah memiliki pengetahuan mendetail tentang format protokol yang sedang diuji. Pemahamannya tergantung pada spesifikasi. Ini melibatkan penulisan serangkaian spesifikasi ke dalam alat kemudian dengan menggunakan teknik pembuatan pengujian berbasis model, melalui spesifikasi dan menambahkan ketidakteraturan dalam konten data, urutan, dll. Ini juga dikenal sebagai pengujian sintaksis, pengujian tata bahasa, pengujian ketahanan, dll. Fuzzer dapat menghasilkan kasus uji dari yang sudah ada, atau mereka dapat menggunakan input yang valid atau tidak valid.

Ada dua batasan fuzzing berbasis protokol:

  1. Pengujian tidak dapat dilanjutkan sampai spesifikasinya matang.
  2. Banyak protokol berguna yang merupakan perpanjangan dari protokol yang diterbitkan. Jika pengujian fuzz didasarkan pada spesifikasi yang dipublikasikan, Cakupan tes untuk protokol baru akan dibatasi.

Bentuk paling sederhana dari teknik fuzzing adalah mengirimkan input acak ke perangkat lunak baik sebagai paket protokol atau sebagai suatu peristiwa. Teknik meneruskan input acak ini sangat ampuh untuk menemukan bug di banyak aplikasi dan layanan. Teknik lain juga tersedia dan sangat mudah diterapkan. Untuk mengimplementasikan teknik tersebut kita hanya perlu mengubah input yang ada. Kita dapat mengubah masukan hanya dengan menukar bit masukan.

Jenis bug yang terdeteksi oleh Fuzz Testing

  • Kegagalan pernyataan dan kebocoran memori metodologi ini banyak digunakan untuk aplikasi besar dimana bug mempengaruhi keamanan memori, yang merupakan kerentanan parah.
  • Masukan tidak valid Dalam pengujian fuzz, fuzzer digunakan untuk menghasilkan masukan yang tidak valid yang digunakan untuk menguji rutinitas penanganan kesalahan, dan ini penting untuk perangkat lunak yang tidak mengontrol masukannya. Fuzzing sederhana dapat dikenal sebagai cara untuk mengotomatiskan pengujian negatif.
  • Bug kebenaran Fuzzing juga dapat digunakan untuk mendeteksi beberapa jenis bug “kebenaran”. Seperti database yang rusak, hasil pencarian yang buruk, dll.

Alat Pengujian Fuzz

Alat yang digunakan dalam keamanan web dapat digunakan secara luas dalam pengujian fuzz seperti Burp Suite, Fuzzer Persik, dll.

  • Fuzzer Persik: Peach Fuzzer memberikan cakupan yang lebih kuat dan keamanan dibandingkan pemindai. Alat pengujian lainnya hanya dapat mencari thread yang dikenal sedangkan Peach Fuzzer memungkinkan pengguna menemukan thread yang dikenal dan tidak dikenal.
  • Proksi Lonjakan: Ini adalah alat tingkat profesional yang mencari kerentanan tingkat aplikasi dalam aplikasi web. SPIKE Proxy mencakup dasar-dasar, seperti SQL Injeksi dan skrip lintas situs, tetapi sepenuhnya terbuka Python infrastruktur. Proksi SPIKE tersedia untuk Linux dan Windows.
  • jaring laba-laba: Webscarab ditulis dalam Java sehingga portabel untuk banyak platform. Untuk menganalisis aplikasi digunakan kerangka Webscarab yang berkomunikasi menggunakan protokol HTTP dan HTTPS.Ex: Webscarab berfungsi sebagai proxy penyadapan, memungkinkan operator meninjau dan mengubah permintaan yang dibuat oleh browser sebelum diterima oleh server. Dan memungkinkan untuk meninjau dan memperbarui respons yang dihasilkan oleh server sebelum diterima oleh browser. Dengan cara ini, jika web scarab menemukan celah apa pun, ia akan masuk dalam daftar masalah yang dilaporkan.
  • OWASP WSFuzzer: WSFuzzer adalah program GPL yang ditulis dalam Python. Program berlisensi GPL saat ini menargetkan Layanan Web. Dalam versi OWASPWSFuzzer berbasis HTTP saat ini layanan sabun adalah sasaran utamanya.

Keuntungan Pengujian Fuzz

  • Pengujian fuzz meningkatkan perangkat lunak Pengujian Keamanan.
  • Bug yang ditemukan di fuzzing terkadang parah dan sering kali digunakan oleh peretas termasuk crash, kebocoran memori, pengecualian yang tidak tertangani, dll.
  • Jika salah satu bug gagal diperhatikan oleh penguji karena keterbatasan waktu dan sumber daya, bug tersebut juga ditemukan dalam pengujian Fuzz.

Kekurangan Pengujian Fuzz

  • Pengujian fuzz saja tidak dapat memberikan gambaran lengkap tentang ancaman atau bug keamanan secara keseluruhan.
  • Pengujian fuzz kurang efektif untuk menangani ancaman keamanan yang tidak menyebabkan crash program, seperti beberapa virus, worm, Trojan, dll.
  • Pengujian fuzz hanya dapat mendeteksi kesalahan atau ancaman sederhana.
  • Untuk dapat bekerja secara efektif, diperlukan waktu yang tidak sedikit.
  • Menetapkan kondisi nilai batas dengan masukan acak sangat bermasalah tetapi sekarang menggunakan algoritma deterministik berdasarkan masukan pengguna, sebagian besar penguji memecahkan masalah ini.

Kesimpulan

Pada Rekayasa Perangkat Lunak, pengujian Fuzz menunjukkan adanya bug pada suatu aplikasi. Fuzzing tidak dapat menjamin terdeteksinya bug secara menyeluruh pada suatu aplikasi. Namun dengan menggunakan teknik Fuzz, ini memastikan bahwa aplikasi tersebut kuat dan aman, karena teknik ini membantu mengungkap sebagian besar kerentanan umum.