Kerentanan perangkat lunak adalah masalah signifikan dalam keamanan siber. Mereka mengizinkan produk perangkat lunak untuk diserang dan ketika produk tersebut terhubung ke jaringan yang aman, mereka dapat memberikan titik masuk bagi peretas.
Semua produk perangkat lunak profesional diuji secara menyeluruh sebelum dirilis. Sayangnya, kerentanan masih sering terjadi. Salah satu cara untuk menemukan kerentanan tambahan adalah dengan menggunakan teknik pengujian perangkat lunak yang dikenal sebagai fuzzing.
Jadi apa itu fuzzing dan bagaimana cara kerjanya?
Apa itu Fuzzing?
Fuzzing adalah teknik pengujian perangkat lunak otomatis yang mencoba menemukan kerentanan menggunakan input acak.
Perangkat lunak sering berperilaku tidak terduga ketika pengguna memasukkan input selain dari yang diminta. Fuzzing adalah praktik memasukkan sejumlah besar input tak terduga dan merekam apa yang terjadi. Idenya adalah bahwa pengguna kemudian dapat memantau perangkat lunak dan menentukan apakah ada kerentanan atau tidak.
Fuzzing digunakan untuk menguji produk perangkat lunak dan oleh profesional keamanan untuk menentukan apakah jaringan aman. Ini juga digunakan oleh peretas yang mempraktikkan fuzzing untuk menemukan kerentanan yang dapat mereka gunakan sendiri.
Kerentanan yang ditemukan oleh fuzzing sangat bervariasi. Masukan yang tidak terduga dapat menyebabkan perangkat lunak mogok begitu saja. Tapi itu juga dapat mengembalikan informasi pribadi atau mengizinkan pengguna untuk mengakses bagian dari perangkat lunak yang seharusnya terlarang.
Apa Keuntungan Fuzzing?
Fuzzing hanyalah salah satu dari banyak cara produk perangkat lunak dapat diuji untuk kerentanan. Ini populer karena:
- Fuzzing sepenuhnya otomatis. Setelah program fuzzing diatur, ia dapat terus mencari kerentanan tanpa masukan manusia.
- Fuzzing mungkin menemukan kerentanan yang tidak dimiliki oleh teknik pengujian perangkat lunak lainnya. Karena itu, sering digunakan selain teknik manual.
- Fuzzing sering digunakan oleh hacker untuk temukan kerentanan zero-day. Menggunakan teknik yang sama seperti peretas memungkinkan pengembang menemukan kerentanan zero-day sebelum mereka melakukannya.
Bagaimana Fuzzing Bekerja?
Sebuah alat yang digunakan untuk fuzzing biasanya memiliki tiga komponen. Mereka sering disebut sebagai penyair, kurir dan, oracle.
Penyair
Penyair memulai proses dan bertanggung jawab untuk menghasilkan kasus uji. Kasus uji adalah daftar panjang input potensial.
Kurir
Kurir memasukkan semua input acak ke dalam perangkat lunak yang ditargetkan. Fuzzer dirancang untuk melakukan ini secara otomatis, memungkinkan sejumlah besar input untuk diuji secara massal.
Oracle
Oracle memeriksa apakah ada input yang menyebabkan perangkat lunak melakukan sesuatu selain yang dirancang untuk dilakukan. Jika fuzzing dilakukan untuk tujuan yang sah, perilaku tersebut kemudian dapat direplikasi dan diperbaiki. Atau jika fuzzing sedang dilakukan oleh seorang hacker, dan perilaku tak terduga berguna, mungkin digunakan untuk tujuan jahat.
Bagaimana Penyerang Menggunakan Fuzzing?
Fuzzing adalah teknik populer di kalangan peretas karena memungkinkan mereka menemukan kerentanan dalam perangkat lunak tanpa akses ke kode sumber. Karena fuzzing dilakukan secara otomatis, ini juga mudah dilakukan. Jika peretas menemukan kerentanan, mereka mungkin dapat melakukan serangan berikut.
Serangan DDoS
Jika fuzzing menemukan bahwa input tertentu memerlukan waktu lama untuk diproses, informasi ini dapat digunakan untuk meluncurkan serangan DDoS. Serangan DDoS melibatkan pengiriman begitu banyak permintaan ke sistem yang berhenti berfungsi. Fuzzing memungkinkan permintaan untuk disesuaikan sehingga mereka membutuhkan sebagian besar sumber daya sistem untuk ditanggapi.
Injeksi SQL
Serangan injeksi SQL adalah ketika pernyataan SQL berbahaya dikirim ke aplikasi. Jika pernyataan ini tidak dibersihkan dengan benar, mereka dapat mengizinkan penyerang untuk berinteraksi dengan database. Ini memungkinkan mereka untuk mencuri data atau memodifikasinya. Fuzzing adalah alat yang efektif untuk mencoba sejumlah besar pernyataan SQL dan menentukan apakah ada yang menghasilkan respons yang menguntungkan.
Buffer Overflow
Serangan buffer overflow adalah ketika lebih banyak data ditambahkan ke buffer program daripada yang dapat ditanganinya. Dalam skenario ini, peretas mungkin menyebabkan program itu mengeksekusi kode berbahaya. Ini dapat digunakan untuk mencuri data atau untuk mendapatkan akses yang tidak sah. Fuzzing digunakan untuk mencari input yang dapat menyebabkan terjadinya buffer overflow.
Jenis Fuzzing
Alat fuzzing dapat diklasifikasikan berdasarkan bagaimana kasus uji dihasilkan dan seberapa banyak yang diketahui tentang sistem.
Bodoh vs. Cerdas
Fuzzing bodoh hanya menambahkan sejumlah besar input acak. Itu tidak memilih input yang paling mungkin diterima oleh aplikasi. Ini membuatnya lebih mudah untuk diimplementasikan tanpa mengetahui apa pun tentang perangkat lunak; namun, ini juga sangat tidak efisien karena sebagian besar input akan ditolak.
Fuzzing pintar menghasilkan input yang kemungkinan besar akan diterima oleh aplikasi. Ini mengharuskan pengguna memahami format input apa yang dapat diterima dan kemudian menghasilkan input dalam jumlah besar dalam format itu. Fuzzing cerdas membutuhkan lebih banyak upaya dan pengetahuan produk untuk diterapkan, tetapi secara signifikan lebih efisien.
Mutasi vs. Generasi
Fuzzers mutasi mengambil input yang sebelumnya diterima dan membuat perubahan kecil padanya. Hal ini memungkinkan input dihasilkan yang kemungkinan besar akan diterima tanpa mengetahui format yang diterima.
Fuzzer generasi membuat input yang sama sekali baru berdasarkan apa yang diketahui tentang format yang diterima.
Kotak Putih vs. Kotak hitam
Fuzzing kotak hitam digunakan tanpa informasi tentang aplikasi yang sedang diuji. Ini kurang efektif daripada fuzzing kotak putih tetapi dapat diterapkan ke aplikasi apa pun tanpa akses ke kode sumber. Ini membuatnya populer di kalangan peretas.
Fuzzing kotak putih menggunakan informasi tentang aplikasi yang sedang diuji untuk membuat input yang paling mungkin diterima dan menghasilkan kerentanan. Ini terutama digunakan oleh pengembang perangkat lunak karena lebih efektif daripada fuzzing kotak hitam.
Fuzzing adalah metode pengujian perangkat lunak yang kuat yang digunakan oleh pengembang perangkat lunak, profesional keamanan, dan peretas. Ini membutuhkan upaya minimal untuk diterapkan dan mampu menemukan kerentanan yang tidak dimiliki oleh teknik pengujian perangkat lunak lainnya.
Ini sangat penting dari sudut pandang keamanan karena sering digunakan untuk menemukan kerentanan zero-day. Kerentanan ini dapat ditemukan dan diperbaiki oleh profesional keamanan, atau ditemukan dan dieksploitasi oleh peretas.