Panduan komprehensif untuk pengujian fuzz

Diterbitkan: 2021-05-17

Pengujian keamanan adalah salah satu langkah paling penting untuk memastikan bahwa perangkat lunak Anda siap untuk rilis resminya, baik untuk tujuan bisnis atau penggunaan komersial. Ini memungkinkan Anda untuk mendeteksi kerentanan apa pun yang mungkin dimiliki perangkat lunak Anda dan mengembangkan tindakan balasan jika peretas memanfaatkan kelemahan tersebut.

Jika Anda tertarik dengan pengujian keamanan, Anda dapat mempelajari faktanya di sini sekarang, tetapi satu hal yang harus Anda ketahui adalah bahwa ada berbagai cara untuk melakukan pengujian keamanan, seperti penilaian risiko, pengujian penetrasi, dan pemindaian kerentanan. Dan jika Anda sudah sedikit familiar dengan pengujian keamanan, Anda mungkin pernah mendengar istilah 'pengujian kabur'.

Pengujian Fuzz adalah teknik pengujian yang relatif umum di industri saat ini, terutama karena perusahaan raksasa seperti Microsoft dan Google telah menggunakannya selama lebih dari satu dekade. Namun yang mengejutkan adalah meskipun merupakan teknik standar, tidak banyak orang yang mengetahuinya. Karena itu, panduan ini bertujuan untuk menjelaskan apa itu pengujian fuzz, dimulai dengan definisinya.

Apa itu Pengujian Fuzz?

Pengujian fuzzy, atau yang disebut orang lain 'fuzzing', melibatkan memasukkan data yang tidak valid atau acak ke dalam program untuk mendeteksi kerentanan apa pun yang dapat menyebabkan kesalahan yang dapat dieksploitasi. Input ini dapat berupa file atau input langsung dari pengguna. Jadi, misalnya, jika Anda sedang membangun semacam program penghitungan, Anda biasanya perlu memasukkan angka atau operasi matematika. Tetapi jika Anda melakukan pengujian fuzzy, Anda harus memasukkan input yang tidak valid seperti huruf atau bahkan karakter khusus.

Jika melakukan hal itu membuat program mogok atau menyebabkan kesalahan jenis lain, pemrogram berasumsi bahwa ada kerentanan dan oleh karena itu dapat bekerja untuk memodifikasi pengkodean dengan harapan dapat memperbaiki masalah. Pada pandangan pertama, Anda akan berpikir bahwa pengujian fuzz sama dengan teknik lain seperti pemindaian kerentanan atau pengujian penetrasi, tetapi ada alasan untuk popularitasnya.

Mengapa Perusahaan Menggunakan Pengujian Fuzz?

Tidak ada solusi satu ukuran untuk semua dalam hal pengujian keamanan. Setiap metode dapat mendeteksi masalah yang tidak dapat dilakukan orang lain; beberapa memerlukan biaya operasi yang lebih rendah, sementara yang lain lebih mudah dilakukan. Sama seperti setiap teknik pengujian keamanan, pengujian fuzz unik dengan caranya sendiri. Berikut adalah beberapa keuntungan yang mendorong perusahaan untuk menggunakan pengujian fuzz.

  • Kesederhanaan: Anda sudah tahu cara kerja pengujian fuzz—ini soal memasukkan input yang tidak valid ke dalam program. Kesederhanaan proses secara umum berfungsi sebagai keuntungan besar bagi individu atau organisasi yang kurang memiliki keterampilan dan pengalaman dalam hal pengujian keamanan.
  • Otomasi: Pengujian keamanan mungkin merupakan langkah penting dalam pengembangan perangkat lunak dan aplikasi, tetapi seringkali, ada hal lain yang harus dilakukan selain dari pengujian program secara terus-menerus. Namun, ini adalah cerita yang berbeda dengan pengujian fuzz karena Anda dapat mengotomatiskan seluruh proses menggunakan fuzzer.

Fuzzer adalah alat yang bertanggung jawab untuk memasukkan data ke dalam program secara otomatis jika diberikan perintah dan kondisi yang diperlukan. Fakta bahwa pengujian fuzz memungkinkan otomatisasi bisnis menjadikannya teknik pengujian yang ideal bagi perusahaan.

  • Nyaman: Biasanya, saat pengujian, seseorang perlu menggunakan alat sebanyak mungkin untuk mengurangi kemungkinan bug dan memaksimalkan keamanan program. Karena pengujian fuzz dapat diotomatisasi dan langsung, ini adalah cara yang nyaman untuk meningkatkan keamanan perangkat lunak.

Fuzzing, secara umum, sederhana dan mudah diterapkan, tetapi perlu dicatat bahwa ada berbagai macam pendekatan untuk pengujian fuzz. Tergantung pada jenis apa yang Anda gunakan, kesulitan dan kerumitan proses pengujian dapat bervariasi. Pada catatan itu, ini mungkin saat yang tepat untuk membicarakan berbagai jenis pengujian bulu halus.

Pendekatan Berbeda Untuk Pengujian Fuzz

Meskipun ada beberapa jenis pengujian fuzz, sebagian besar mirip satu sama lain, kecuali bahwa mereka menghasilkan input yang berbeda. Terlepas dari itu, ada empat pendekatan untuk pengujian fuzz:

  • Dumb Fuzzing: Ketika seseorang ingin menghasilkan input sepenuhnya secara acak, mereka biasanya menggunakan fuzzer bodoh. Fuzzer bodoh adalah alat yang menghasilkan input tanpa pengetahuan sebelumnya atau kecerdasan program, oleh karena itu namanya.

Misalnya, jika Anda membuat program pemeriksaan tata bahasa, fuzzer yang bodoh mungkin akan menghasilkan gambar, yang jauh dari yang diharapkan oleh program. Fuzzing bodoh adalah pendekatan termudah untuk pengujian fuzz.

  • Smart Fuzzing: Di sisi lain koin adalah smart fuzzing. Tidak seperti dumb fuzzing, smart fuzzing menghasilkan input yang mengetahui apa yang diharapkan program untuk diterima. Selain itu, fuzzer pintar tidak akan menghasilkan input yang pasti akan merusak program. Sebaliknya, itu akan datang dengan masukan yang dapat menyebabkan perilaku tak terduga.

Jadi dalam contoh sebelumnya, fuzzer pintar mungkin menghasilkan karakter khusus tetapi tidak pernah berupa gambar atau input lain yang tidak sesuai. Meskipun fuzzer pintar lebih menantang untuk diterapkan daripada fuzzer bodoh, mereka lebih akurat di sebagian besar waktu.

  • Fuzzing Mutational: Fuzzing Mutational melibatkan menghasilkan input dengan memodifikasi atau, lebih khusus, 'mutasi' input valid yang ada. Dalam contoh kita dengan program kalkulator, fuzzer mutasi dapat memilih input valid yang ada.

Misalkan input yang dipilih adalah '10+9.' Fuzzer mutasi akan mencoba untuk mengubah input ini dengan menambahkan, menghapus, atau mengubah bagian dari input ini, seperti meningkatkan nilai dan mengubahnya menjadi '180+129′ atau mengubah operasi untuk menghasilkan '10/9.'

  • Generasi Fuzzing: Terakhir, generasi fuzzing menghasilkan input dari awal, yang merupakan kebalikan dari mutasional fuzzing yang menghasilkan input dari yang sudah ada. Karena tidak ada referensi, fuzzer generasi jauh lebih sulit untuk diterapkan daripada fuzzer mutasi, tetapi mereka dapat menghasilkan lebih banyak data untuk penguji.

Apa yang membuat pengujian fuzz sedikit lebih menarik daripada teknik lainnya adalah Anda dapat menggabungkan berbagai jenis untuk menyempurnakan alat pengujian. Misalnya, Anda dapat membuat fuzzer mutasi pintar atau fuzzer generasi bodoh, tergantung pada kebutuhan program Anda. Mungkin kombinasi tak terhitung yang dapat Anda lakukan dengan pengujian fuzz adalah alasan lain mengapa perusahaan lebih memilih pengujian fuzz daripada metode lain.

Membungkus

Setelah Anda mengetahui lebih banyak tentang pengujian fuzz, mudah untuk melihat mengapa itu menjadi sepopuler sekarang. Namun, perlu juga dicatat bahwa, seperti teknik lainnya, pengujian fuzz memiliki beberapa kelemahan. Oleh karena itu, penting untuk menentukan apakah pengujian fuzz dapat lebih bermanfaat daripada merugikan aplikasi atau perangkat lunak Anda. Seperti yang dikatakan sebelumnya, tidak ada solusi satu ukuran untuk semua untuk pengujian keamanan perangkat lunak, dan pengujian fuzz pasti tidak akan menjadi solusi itu.

Punya pemikiran tentang ini? Beri tahu kami di bawah di komentar atau bawa diskusi ke Twitter atau Facebook kami.

Rekomendasi Editor: