Pengujian Fuzz
Fuzz Testing atau Fuzzing adalah teknik pengujian perangkat lunak untuk memasukkan data yang tidak valid atau acak yang disebut FUZZ ke dalam sistem perangkat lunak untuk menemukan kesalahan pengkodean dan celah keamanan. Tujuan pengujian fuzz adalah memasukkan data menggunakan teknik otomatis atau semi-otomatis dan menguji sistem untuk berbagai pengecualian seperti kerusakan sistem atau kegagalan kode internal, dll.
Fuzz testing awalnya dikembangkan oleh Barton Miller di University of Wisconsin pada tahun 1989. Fuzz testing atau fuzzing adalah teknik pengujian Software, dan ini adalah jenis Pengujian Keamanan .
Mengapa melakukan Pengujian Fuzz?
- Biasanya, pengujian Fuzzy menemukan kesalahan atau kerusakan keamanan yang paling serius.
- Pengujian fuzz memberikan hasil yang lebih efektif saat digunakan dengan Pengujian Kotak Hitam, 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 adalah salah satu metode paling umum yang digunakan peretas untuk menemukan kerentanan 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) Buat data fuzzed
Langkah 4) Jalankan pengujian menggunakan data fuzzy
Langkah 5) Pantau perilaku sistem
Langkah 6) Cacat log
Contoh Fuzzers
-
Fuzzers Berbasis Mutasi mengubah sampel data yang ada untuk membuat data uji baru. Ini adalah pendekatan yang sangat sederhana dan langsung, ini dimulai dengan sampel protokol yang valid dan terus merusak setiap byte atau file.
-
Generasi-Based Fuzzers mendefinisikan data baru berdasarkan input model. Ini mulai menghasilkan masukan dari awal berdasarkan spesifikasi.
-
PROTOCOL-BASED-fuzzer , fuzzer yang paling sukses adalah memiliki pengetahuan rinci tentang format protokol yang sedang diuji. Pemahamannya tergantung dari spesifikasinya. Ini melibatkan penulisan array 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 sintaks, pengujian tata bahasa, pengujian ketahanan, dll. Fuzzer dapat menghasilkan kasus uji dari yang sudah ada, atau mereka dapat menggunakan masukan yang valid atau tidak valid.
Ada dua batasan dari fuzzing berbasis protokol:
- Pengujian tidak dapat dilanjutkan hingga spesifikasinya matang.
- Banyak protokol yang berguna merupakan perpanjangan dari protokol yang diterbitkan. Jika pengujian fuzz didasarkan pada spesifikasi yang dipublikasikan, cakupan pengujian untuk protokol baru akan dibatasi.
Bentuk paling sederhana dari teknik fuzzing adalah mengirimkan input acak ke perangkat lunak baik sebagai paket protokol maupun sebagai peristiwa. Teknik melewatkan input acak ini sangat ampuh untuk menemukan bug di banyak aplikasi dan layanan. Teknik lain juga tersedia, dan sangat mudah diterapkan. Untuk mengimplementasikan teknik ini kita hanya perlu mengubah input yang ada. Kita dapat mengubah masukan hanya dengan menukar bit masukan.
Jenis bug yang terdeteksi oleh Pengujian Fuzz
-
Kegagalan pernyataan dan kebocoran memori , metodologi ini banyak digunakan untuk aplikasi besar di mana bug memengaruhi keamanan memori, yang merupakan kerentanan parah.
- Masukan tidak valid
Dalam pengujian fuzz, fuzzer digunakan untuk menghasilkan input yang tidak valid yang digunakan untuk menguji rutinitas penanganan kesalahan, dan ini penting untuk perangkat lunak yang tidak mengontrol inputnya. 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, Peach Fuzzer, dll.
- Peach Fuzzer
Peach Fuzzer memberikan cakupan yang lebih kuat dan keamanan daripada pemindai. Alat pengujian lainnya hanya dapat mencari utas yang dikenal sedangkan Peach Fuzzer memungkinkan pengguna menemukan utas yang dikenal dan tidak dikenal.
- Spike Proxy
Ini adalah alat tingkat profesional yang mencari kerentanan tingkat aplikasi dalam aplikasi web. SPIKE Proxy mencakup dasar-dasar, seperti SQL Injection dan cross-site-scripting, tetapi infrastruktur Python sepenuhnya terbuka. SPIKE Proxy tersedia untuk Linux dan Windows.
- Webscarab
Webscarab ditulis di Java sehingga portabel ke banyak platform. Untuk menganalisis aplikasi kerangka Webscarab digunakan yang berkomunikasi menggunakan protokol HTTP dan HTTPS.
Contoh: Webscarab berfungsi sebagai proxy intersep, memungkinkan operator untuk meninjau dan mengubah permintaan yang dibuat oleh browser sebelum diterima oleh server. Dan memungkinkan untuk mereview dan memperbarui respon yang dihasilkan oleh server sebelum diterima oleh browser. Dengan cara ini, jika web scarab menemukan celah, itu akan membuat daftar masalah yang dilaporkan.
- OWASP WSFuzzer
WSFuzzer adalah program GPL yang ditulis dengan Python. GPL akan sebuah program yang saat ini menargetkan Layanan Web. Dalam versi saat ini dari layanan SOAP berbasis HTTP OWASPWSFuzzer adalah target utama.
Keuntungan Pengujian Fuzz
- Pengujian fuzz meningkatkan Pengujian Keamanan perangkat lunak.
- Bug yang ditemukan dalam fuzzing terkadang parah dan sebagian besar waktu digunakan oleh peretas termasuk crash, kebocoran memori, pengecualian 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 keseluruhan ancaman keamanan atau bug.
- Pengujian fuzz kurang efektif untuk menangani ancaman keamanan yang tidak menyebabkan program crash, seperti beberapa virus, worm, trojan, dll.
- Pengujian fuzz hanya dapat mendeteksi kesalahan atau ancaman sederhana.
- Untuk bekerja secara efektif, dibutuhkan waktu yang tidak sedikit.
- Menetapkan kondisi nilai batas dengan input acak sangat bermasalah, tetapi sekarang menggunakan algoritme deterministik berdasarkan input pengguna, sebagian besar penguji memecahkan masalah ini.
Ringkasan:
Dalam Rekayasa Perangkat Lunak, pengujian Fuzz menunjukkan adanya bug dalam suatu aplikasi. Fuzzing tidak dapat menjamin deteksi bug sepenuhnya dalam aplikasi. Tetapi dengan menggunakan teknik Fuzz, ini memastikan bahwa aplikasi tersebut kuat dan aman, karena teknik ini membantu mengungkap sebagian besar kerentanan umum.
Artikel ini dikontribusikan oleh Priyanka Kothe