Fuzz Testi
Fuzz Testing veya Fuzzing, kodlama hatalarını ve güvenlik boşluklarını keşfetmek için FUZZ adı verilen geçersiz veya rastgele verileri yazılım sistemine koymaya yönelik bir yazılım test tekniğidir. Bulanıklık testinin amacı, otomatik veya yarı otomatik teknikler kullanarak veri eklemek ve sistemi, sistemin çökmesi veya yerleşik kodun arızalanması gibi çeşitli istisnalara karşı test etmektir.
Fuzz testi, 1989 yılında Wisconsin Üniversitesi'nde Barton Miller tarafından geliştirilmiştir. Fuzz testi veya fuzzing, bir Yazılım test tekniğidir ve bir Güvenlik Testi türüdür .
Neden Fuzz Testi yapmalı?
- Genellikle, Fuzzy testi en ciddi güvenlik hatasını veya kusurunu bulur.
- Fuzz testi, Kara Kutu Testi, Beta Testi ve diğer hata ayıklama yöntemleriyle kullanıldığında daha etkili sonuç verir.
- Fuzz testi, yazılımın Güvenlik Açığını kontrol etmek için kullanılır. Çok uygun maliyetli test teknikleridir.
- Fuzz testi, kara kutu test tekniğinden biridir. Fuzzing, sistemin güvenlik açığını bulmak için kullanılan en yaygın yöntem bilgisayar korsanlarından biridir.
Fuzz Testi nasıl yapılır
Bulanık test için adımlar, temel test adımlarını içerir.
Adım 1) Hedef sistemi tanımlayın
Adım 2) Girişleri tanımlayın
Adım 3) Bulanık veri oluşturun
Adım 4) Bulanık verileri kullanarak testi yürütün
Adım 5) Sistem davranışını izleyin
Adım 6) Kusurları günlüğe kaydedin
Fuzzers Örnekleri
-
Mutasyona Dayalı Fuzzers, yeni test verileri oluşturmak için mevcut veri örneklerini değiştirir. Bu çok basit ve anlaşılır bir yaklaşımdır, bu geçerli protokol örnekleriyle başlar ve her baytı veya dosyayı karıştırmaya devam eder.
-
Nesil Tabanlı Fuzzers , modelin girdisine dayalı olarak yeni verileri tanımlar. Spesifikasyona göre sıfırdan girdi üretmeye başlar.
-
PROTOKOL TABANLI-fuzzer , en başarılı fuzzer test edilen protokol formatı hakkında detaylı bilgiye sahip olmaktır. Anlama, spesifikasyona bağlıdır. Araca bir spesifikasyon dizisi yazmayı ve daha sonra model tabanlı test oluşturma tekniğini kullanarak spesifikasyonu gözden geçirmeyi ve veri içeriklerinde, dizisinde vb. Düzensizlik eklemeyi içerir. Bu aynı zamanda sözdizimi testi, dilbilgisi testi, sağlamlık testi olarak da bilinir vb. Fuzzer, mevcut olandan test senaryoları oluşturabilir veya geçerli veya geçersiz girdiler kullanabilir.
Protokol tabanlı fuzzing'in iki sınırlaması vardır:
- Spesifikasyon olgunlaşana kadar teste devam edilemez.
- Birçok yararlı protokol, yayınlanmış protokollerin bir uzantısıdır. Bulanıklık testi yayınlanan spesifikasyonlara dayanıyorsa, yeni protokoller için test kapsamı sınırlı olacaktır.
Bulanıklaştırma tekniğinin en basit şekli, yazılıma ya protokol paketleri ya da bir olay olarak rastgele girdi göndermektir. Bu rastgele girdi geçirme tekniği, birçok uygulama ve hizmette hataları bulmak için çok güçlüdür. Diğer teknikler de mevcuttur ve uygulanması çok kolaydır. Bu teknikleri uygulamak için sadece mevcut girdileri değiştirmemiz gerekiyor. Girdiyi sadece girdi bitlerini değiştirerek değiştirebiliriz.
Fuzz Testing tarafından tespit edilen hata türleri
-
Onay hataları ve bellek sızıntıları Bu metodoloji, ciddi bir güvenlik açığı olan belleğin güvenliğini etkileyen hataların olduğu büyük uygulamalarda yaygın olarak kullanılmaktadır.
- Geçersiz Giriş
Fuzz testinde fuzzers, hata işleme rutinlerini test etmek için kullanılan geçersiz bir girdi oluşturmak için kullanılır ve bu, girdisini kontrol etmeyen yazılım için önemlidir. Basit tüylenme, negatif testi otomatikleştirmenin bir yolu olarak bilinir.
- Doğruluk hataları
Fuzzing ayrıca bazı "doğruluk" hatalarını tespit etmek için de kullanılabilir. Bozuk bir veritabanı, kötü arama sonuçları vb.
Fuzz Test Araçları
Web güvenliğinde kullanılan araçlar, Burp Suite, Peach Fuzzer gibi fuzz testlerinde yaygın olarak kullanılabilir.
- Şeftali Fuzzer
Peach Fuzzer, bir tarayıcıdan daha sağlam ve güvenlik sağlar. Diğer test araçları yalnızca bilinen konuları arayabilirken, Peach Fuzzer kullanıcıların bilinen ve bilinmeyen konuları bulmasını sağlar.
- Spike Proxy
Web uygulamalarında uygulama düzeyinde güvenlik açıkları arayan profesyonel düzeyde bir araçtır. SPIKE Proxy, SQL Enjeksiyonu ve siteler arası komut dosyası oluşturma gibi temel bilgileri kapsar, ancak tamamen açık Python altyapısıdır. SPIKE Proxy, Linux ve Windows için mevcuttur.
- Webscarab
Webscarab Java ile yazıldığından birçok platforma taşınabilir. Uygulamayı analiz etmek için HTTP ve HTTPS protokollerini kullanarak iletişim kuran Webscarab çerçevesi kullanılır.
Örn: Webscarab, yakalayan bir proxy olarak çalışır, operatörün tarayıcı tarafından oluşturulan talebi sunucu tarafından alınmadan önce gözden geçirmesine ve değiştirmesine izin verir. Tarayıcı tarafından alınmadan önce sunucu tarafından oluşturulan yanıtı gözden geçirmeye ve güncellemeye izin verin. Bu şekilde, ağ bokböceği herhangi bir boşluk bulursa, bildirilen sorunların listesini yapacaktır.
- OWASP WSFuzzer
WSFuzzer, Python ile yazılmış bir GPL programıdır. GPL'de bir program şu anda Web Hizmetlerini hedefliyor. OWASPWSFuzzer'in mevcut versiyonunda HTTP tabanlı SOAP servisleri ana hedeftir.
Fuzz Testinin Avantajları
- Fuzz testi, yazılım Güvenlik Testini iyileştirir.
- Bulanıklaştırmada bulunan hatalar bazen ciddidir ve çoğu zaman bilgisayar korsanları tarafından çökmeler, bellek sızıntısı, işlenmemiş istisna vb. Dahil olmak üzere kullanılır.
- Zaman ve kaynakların sınırlandırılması nedeniyle hatalardan herhangi biri test uzmanları tarafından fark edilmezse, bu hatalar Fuzz testinde de bulunur.
Fuzz Testinin Dezavantajları
- Fuzz testi tek başına genel bir güvenlik tehdidi veya hatalarının tam bir resmini sağlayamaz.
- Fuzz testi, bazı virüsler, solucanlar, Truva atı vb. Gibi program çökmelerine neden olmayan güvenlik tehditleriyle başa çıkmak için daha az etkilidir.
- Fuzz testi yalnızca basit hataları veya tehditleri tespit edebilir.
- Etkili bir performans sergilemek için önemli bir zaman gerekecektir.
- Rastgele girdilerle bir sınır değeri koşulunun belirlenmesi çok sorunludur, ancak şimdi kullanıcıların girdilerine dayalı deterministik algoritmalar kullanmak, test uzmanlarının çoğu bu sorunu çözmektedir.
Özet:
Yazılım Mühendisliğinde, Fuzz testi bir uygulamadaki hataların varlığını gösterir. Fuzzing, bir uygulamada hataların tamamen tespit edilmesini garanti edemez. Ancak Fuzz tekniğini kullanarak, bu teknik yaygın güvenlik açıklarının çoğunu ortaya çıkarmaya yardımcı olduğundan, uygulamanın sağlam ve güvenli olmasını sağlar.
Bu makale Priyanka Kothe tarafından hazırlanmıştır.