Apa itu Fuzzing?

Apa yang kabur

Intro: Apa itu Fuzzing?

Pada 2014, peretas Cina diretas ke Sistem Kesehatan Masyarakat, jaringan rumah sakit nirlaba AS, dan mencuri 4.5 juta data pasien. Peretas mengeksploitasi bug bernama Heartbleed yang ditemukan di pustaka kriptografi OpenSSL beberapa bulan sebelum peretasan.

Heartbleed adalah contoh kelas vektor serangan yang memungkinkan penyerang mengakses target dengan mengirimkan permintaan cacat yang cukup valid untuk melewati pemeriksaan awal. Sementara profesional yang bekerja di berbagai bagian aplikasi melakukan yang terbaik untuk memastikan keamanannya, tidak mungkin memikirkan semua kasus sudut yang dapat merusak aplikasi atau membuatnya rentan selama pengembangan.

Di sinilah 'fuzzing' masuk.

Apa itu Fuzzing Attack?

Fuzzing, pengujian fuzz, atau serangan fuzzing, adalah teknik pengujian perangkat lunak otomatis yang digunakan untuk memasukkan data acak, tak terduga, atau tidak valid (disebut fuzz) ke dalam program. Program dipantau untuk perilaku yang tidak biasa atau tidak diharapkan seperti buffer overflows, crash, kebocoran memori, thread hang, dan pelanggaran akses baca/tulis. Alat fuzzing atau fuzzer kemudian digunakan untuk mengungkap penyebab perilaku yang tidak biasa.

Fuzzing didasarkan pada asumsi bahwa semua sistem mengandung bug yang menunggu untuk ditemukan, dan dapat diberikan waktu dan sumber daya yang cukup untuk melakukannya. Sebagian besar sistem memiliki parser yang sangat baik atau pencegahan validasi input penjahat cyber dari mengeksploitasi bug hipotetis apa pun dalam suatu program. Namun, seperti yang kami sebutkan di atas, mencakup semua kasus sudut selama pengembangan itu sulit.

Fuzzer digunakan pada program yang mengambil input terstruktur atau memiliki semacam batas kepercayaan. Misalnya, program yang menerima file PDF akan memiliki beberapa validasi untuk memastikan file tersebut memiliki ekstensi .pdf dan parser untuk memproses file PDF.

Fuzzer yang efektif dapat menghasilkan input yang cukup valid untuk melewati batas-batas ini namun cukup tidak valid untuk menyebabkan perilaku tak terduga jauh di bawah program. Ini penting karena hanya bisa melewati validasi tidak berarti banyak jika tidak ada kerusakan lebih lanjut yang disebabkan.

Fuzzers menemukan vektor serangan yang sangat mirip dengan dan termasuk injeksi SQL, skrip lintas situs, buffer overflow, dan serangan denial-of-service. Semua serangan ini adalah hasil dari memasukkan data yang tidak terduga, tidak valid, atau acak ke dalam sistem. 

 

Jenis Fuzzer

Fuzzer dapat diklasifikasikan berdasarkan beberapa karakteristik:

  1. Serang target
  2. Metode pembuatan fuzz
  3. Kesadaran akan struktur masukan
  4. Kesadaran akan struktur program

1. Serang Target

Klasifikasi ini didasarkan pada jenis platform yang digunakan fuzzer untuk menguji. Fuzzer biasanya digunakan dengan protokol jaringan dan aplikasi perangkat lunak. Setiap platform memiliki jenis input tertentu yang diterimanya, dan karenanya membutuhkan jenis fuzzer yang berbeda.

Misalnya, ketika berurusan dengan aplikasi, semua upaya fuzzing terjadi di berbagai saluran input aplikasi, seperti antarmuka pengguna, terminal baris perintah, input formulir/teks, dan unggahan file. Jadi semua masukan yang dihasilkan oleh fuzzer harus cocok dengan saluran ini.

Fuzzers berurusan dengan protokol komunikasi harus berurusan dengan paket. Fuzzers yang menargetkan platform ini dapat menghasilkan paket palsu, atau bahkan bertindak sebagai proxy untuk memodifikasi paket yang dicegat dan memutarnya kembali.

2. Metode Pembuatan Fuzz

Fuzzer juga dapat diklasifikasikan berdasarkan cara mereka membuat data untuk dibuat kabur. Secara historis, fuzzers membuat fuzz dengan menghasilkan data acak dari awal. Beginilah cara Profesor Barton Miller, penggagas teknik ini, melakukannya pada awalnya. Jenis fuzzer ini disebut a fuzzer berbasis generasi.

Namun, sementara seseorang secara teoritis dapat menghasilkan data yang akan melewati batas kepercayaan, akan membutuhkan banyak waktu dan sumber daya untuk melakukannya. Oleh karena itu metode ini biasanya digunakan untuk sistem dengan struktur masukan yang sederhana.

Solusi untuk masalah ini adalah memutasikan data yang diketahui valid untuk menghasilkan data yang cukup valid untuk melewati batas kepercayaan, namun cukup tidak valid untuk menimbulkan masalah. Contoh yang baik dari ini adalah a pengacau DNS yang mengambil nama domain dan kemudian menghasilkan daftar besar nama domain untuk mendeteksi domain yang berpotensi berbahaya yang menargetkan pemilik domain yang ditentukan.

Pendekatan ini lebih pintar dari yang sebelumnya dan secara signifikan mempersempit kemungkinan permutasi. Fuzzers yang menggunakan metode ini disebut fuzzer berbasis mutasi

Ada metode ketiga yang lebih baru yang memanfaatkan algoritme genetika untuk menyatukan data fuzz optimal yang diperlukan untuk membasmi kerentanan. Ini bekerja dengan terus menyempurnakan data fuzznya, dengan mempertimbangkan kinerja setiap data uji saat dimasukkan ke dalam program. 

Kumpulan data dengan kinerja terburuk akan dihapus dari kumpulan data, sedangkan yang terbaik dimutasi dan/atau digabungkan. Data generasi baru kemudian digunakan untuk uji fuzz lagi. Fuzzers ini disebut sebagai fuzzers berbasis mutasi evolusioner.

3. Kesadaran Struktur Input

Klasifikasi ini didasarkan pada apakah fuzzer mengetahui dan secara aktif menggunakan struktur input dari suatu program dalam membangkitkan data fuzz. SEBUAH pecundang bodoh (fuzzer yang tidak mengetahui struktur input program) menghasilkan fuzz secara acak. Ini dapat mencakup fuzzer berbasis generasi dan mutasi. 


Jika fuzzer dilengkapi dengan model input dari suatu program, fuzzer kemudian dapat mencoba untuk menghasilkan atau memutasikan data sedemikian rupa sehingga cocok dengan model input yang disediakan. Pendekatan ini semakin mengurangi jumlah sumber daya yang dihabiskan untuk menghasilkan data yang tidak valid. Pemukul seperti itu disebut a penguntit yang cerdas.

4. Kesadaran Struktur Program

Fuzzer juga dapat diklasifikasikan berdasarkan apakah mereka mengetahui cara kerja internal program yang mereka fuzzing, dan menggunakan kesadaran itu untuk membantu pembuatan data fuzz. Ketika fuzzers digunakan untuk menguji program tanpa memahami struktur internalnya, itu disebut pengujian kotak hitam. 

Data fuzz yang dihasilkan selama pengujian kotak hitam biasanya acak kecuali fuzzer adalah fuzzer berbasis mutasi evolusioner, di mana fuzzer 'belajar' dengan memantau efek fuzzing-nya dan menggunakannya informasi untuk menyempurnakan kumpulan data fuzz-nya.

Pengujian kotak putih di sisi lain menggunakan model struktur internal program untuk menghasilkan data fuzz. Pendekatan ini memungkinkan fuzzer sampai ke lokasi kritis dalam sebuah program dan mengujinya. 

Alat Fuzzing Populer

Ada banyak fuzzing alat di luar sana digunakan oleh penguji pena. Beberapa yang paling populer adalah:

Keterbatasan Fuzzing

Sementara Fuzzing adalah teknik pengujian pena yang sangat berguna, bukan tanpa kesalahannya. Beberapa di antaranya adalah:

  • Dibutuhkan waktu yang cukup lama untuk dijalankan.
  • Gangguan dan perilaku tak terduga lainnya yang ditemukan selama pengujian kotak hitam suatu program dapat menjadi sulit, bahkan mustahil untuk dianalisis atau di-debug.
  • Membuat templat mutasi untuk fuzzer berbasis mutasi pintar bisa menghabiskan waktu. Kadang-kadang, bahkan mungkin tidak dapat dilakukan karena model masukan adalah hak milik atau tidak dikenal.

 

Namun demikian, ini adalah alat yang sangat berguna dan diperlukan bagi siapa saja yang ingin menemukan bug sebelum orang jahat.

Kesimpulan

Fuzzing adalah teknik pengujian pena yang kuat yang dapat digunakan untuk mengungkap kerentanan dalam perangkat lunak. Ada banyak jenis fuzzers, dan fuzzers baru sedang dikembangkan setiap saat. Meskipun fuzzing adalah alat yang sangat berguna, ia memiliki keterbatasan. Misalnya, fuzzers hanya dapat menemukan begitu banyak kerentanan dan sumber dayanya cukup intensif. Namun, jika Anda ingin mencoba sendiri teknik luar biasa ini, kami memiliki a DNS Fuzzer API gratis yang dapat Anda gunakan di platform kami. 

Jadi tunggu apa lagi? 

Mulai kabur hari ini!

Google dan Mitos Penyamaran

Google dan Mitos Penyamaran

Google dan Mitos Penyamaran Pada tanggal 1 April 2024, Google setuju untuk menyelesaikan gugatan dengan menghancurkan miliaran catatan data yang dikumpulkan dari mode Penyamaran.

Baca lebih lanjut »