Fuzz Testi (Fuzzing) Eğitimi
Fuzz Testi Nedir?
Tüy Testi veya Fuzzing, kodlama hatalarını ve güvenlik açıklarını keşfetmek için FUZZ adı verilen geçersiz veya rastgele verileri yazılım sistemine yerleştiren bir yazılım test tekniğidir. Fuzz testinin amacı, otomatik veya yarı otomatik teknikler kullanarak veri eklemek ve sistemi, sistemin çökmesi veya yerleşik kodun arızalanması vb. gibi çeşitli istisnalar açısından test etmektir.
Fuzz testi ilk olarak 1989 yılında Wisconsin Üniversitesi'nden Barton Miller tarafından geliştirildi. Fuzz testi veya fuzzing bir Yazılım test tekniğidir ve bir tür test yöntemidir. Güvenlik Testi.
Neden Fuzz Testi yapılmalı?
- Genellikle Bulanık test en ciddi güvenlik hatasını veya kusurunu bulur.
- Fuzz testi ile birlikte kullanıldığında daha etkili sonuç verir. Siyah Box Test yapmak, Beta Testi ve diğer hata ayıklama yöntemleri.
- Fuzz testi, yazılımın Güvenlik Açığı'nı kontrol etmek için kullanılır. Oldukça uygun maliyetli test teknikleridir.
- Fuzz testi, kara kutu test tekniklerinden biridir. Fuzzing, bilgisayar korsanlarının sistemin güvenlik açıklarını bulmak için kullandıkları en yaygın yöntemlerden biridir.
Fuzz Testi nasıl yapılır?
Bulanık test adımları temel test adımlarını içerir.
) 1 Adım Hedef sistemi tanımlayın
) 2 Adım Girişleri tanımlayın
) 3 Adım Bulanıklaştırılmış veriler oluştur
) 4 Adım Bulanık verileri kullanarak testi yürütün
) 5 Adım Sistem davranışını izleyin
) 6 Adım Kusurları günlüğe kaydet
Fuzzer Örnekleri
- Mutasyon Tabanlı Fuzzer'lar Yeni test verileri oluşturmak için mevcut veri örneklerini değiştirin. Bu çok basit ve anlaşılır bir yaklaşımdır; geçerli protokol örnekleriyle başlar ve her baytı veya dosyayı yönetmeye devam eder.
- Nesil Tabanlı Fuzzer'lar Modelin girdisine dayalı olarak yeni verileri tanımlayın. Spesifikasyona göre sıfırdan girdi üretmeye başlar.
- PROTOKOL TABANLI fuzzerEn başarılı fuzzer, test edilen protokol formatı hakkında ayrıntılı bilgiye sahip olmaktır. Anlayış spesifikasyona bağlıdır. Araca bir dizi spesifikasyon yazmayı, ardından model tabanlı test oluşturma tekniğini kullanarak spesifikasyonu gözden geçirmeyi ve veri içeriğinde, dizide vb. düzensizlik eklemeyi içerir. Bu aynı zamanda sözdizimi testi, dilbilgisi testi, sağlamlık testi olarak da bilinir. vb. Fuzzer mevcut bir senaryodan test senaryoları oluşturabilir veya geçerli veya geçersiz girişler kullanabilir.
Protokol tabanlı bulanıklaştırmanın iki sınırlaması vardır:
- Spesifikasyon olgunlaşana kadar test devam edemez.
- Birçok yararlı protokol, yayınlanmış protokollerin bir uzantısıdır. Fuzz testi yayınlanmış spesifikasyonlara dayanıyorsa, Test kapsamı yeni protokoller için sınırlı olacaktır.
Bulanıklaştırma tekniğinin en basit şekli, yazılıma rastgele girdilerin protokol paketleri veya olay olarak gönderilmesidir. Bu rastgele girdi aktarma tekniği, birçok uygulama ve hizmetteki hataları bulmak için çok güçlüdür. Başka teknikler de mevcuttur ve uygulanması çok kolaydır. Bu teknikleri uygulamak için sadece mevcut girdileri değiştirmemiz gerekiyor. Giriş bitlerini değiştirerek girişi değiştirebiliriz.
Fuzz Testi tarafından tespit edilen hata türleri
- Onaylama hataları ve bellek sızıntıları Bu metodoloji, ciddi bir güvenlik açığı olan hataların belleğin güvenliğini etkilediği büyük uygulamalarda yaygın olarak kullanılmaktadır.
- Geçersiz Giriş Fuzz testinde fuzzer'lar, 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 bulanıklaştırma, negatif testi otomatikleştirmenin bir yolu olarak bilinebilir.
- Doğruluk hataları Fuzzing aynı zamanda bazı "doğruluk" hata türlerini tespit etmek için de kullanılabilir. Bozuk bir veritabanı, zayıf arama sonuçları vb. gibi.
Fuzz Test Araçları
Web güvenliğinde kullanılan araçlar, bulanıklık testinde yaygın olarak kullanılabilir. Burp Suite, Şeftali Fuzzer, vb.
- Şeftali Fuzzer: Peach Fuzzer, bir tarayıcıya göre daha sağlam ve güvenlik kapsamı sağlar. Diğer test araçları yalnızca bilinen konuları arayabilirken Peach Fuzzer, kullanıcıların bilinen ve bilinmeyen konuları bulmasına olanak tanır.
- Spike Proxy'si: Web uygulamalarında uygulama düzeyindeki güvenlik açıklarını arayan profesyonel düzeyde bir araçtır. SPIKE Proxy aşağıdakiler gibi temel konuları kapsar: SQL Enjeksiyon ve siteler arası komut dosyası çalıştırma, ancak tamamen açık Python altyapı. SPIKE Proxy'si aşağıdakiler için kullanılabilir: Linux ve Windows.
- Websbokrabası: Webscarab dilinde yazılmıştır Java dolayısıyla birçok platforma taşınabilir. Uygulamayı analiz etmek için HTTP ve HTTPS protokollerini kullanarak iletişim kuran Webscarab çerçevesi kullanılır.Ex: Webscarab, engelleyici bir proxy olarak çalışır; operatörün, tarayıcı tarafından oluşturulan istekleri sunucu tarafından alınmadan önce incelemesine ve değiştirmesine olanak tanır. Ve tarayıcı tarafından alınmadan önce sunucu tarafından oluşturulan yanıtın gözden geçirilmesine ve güncellenmesine izin verin. Bu şekilde, web bok böceği herhangi bir boşluk bulursa, bildirilen sorunların listesini hazırlayacaktır.
- OWASP WSFuzzer: WSFuzzer, GPL ile yazılmış bir programdır. Python. GPL'li bir program şu anda Web Hizmetlerini hedefliyor. OWASPWSFuzzer'ın mevcut sürümünde HTTP tabanlı SABUN hizmetleri ana hedeftir.
Fuzz Testinin Avantajları
- Fuzz testi yazılımı geliştiriyor Güvenlik Testi.
- Fuzzing'de bulunan hatalar bazen ciddi olabilir ve çoğu zaman çökmeler, bellek sızıntısı, işlenmeyen istisnalar vb. dahil olmak üzere bilgisayar korsanları tarafından kullanılır.
- Zaman ve kaynak sınırlaması nedeniyle hatalardan herhangi biri testçiler tarafından fark edilemezse, bu hatalar Fuzz testinde de bulunur.
Fuzz Testinin Dezavantajları
- Fuzz testi tek başına genel bir güvenlik tehdidinin veya hatalarının tam bir resmini sağlayamaz.
- Fuzz testi, bazı virüsler, solucanlar, Truva atları vb. gibi program çökmelerine neden olmayan güvenlik tehditleriyle baş etmede daha az etkilidir.
- Fuzz testi yalnızca basit hataları veya tehditleri tespit edebilir.
- Etkili bir performans sergilemek için önemli miktarda zaman gerekecektir.
- Rastgele girdilerle bir sınır değeri koşulu belirlemek çok sorunludur ancak artık test uzmanlarının çoğu, kullanıcı girdilerine dayalı deterministik algoritmalar kullanarak bu sorunu çözmektedir.
ÖZET
Yazılım Mühendisliğinde Fuzz testi, bir uygulamadaki hataların varlığını gösterir. Fuzzing, bir uygulamadaki hataların tamamen tespit edilmesini garanti edemez. Ancak Fuzz tekniğini kullanarak uygulamanın sağlam ve güvenli olmasını sağlar, çünkü bu teknik yaygın güvenlik açıklarının çoğunun ortaya çıkarılmasına yardımcı olur.