Fuzz Testi Nedir?

Fuzz testi veya fuzzing, bir bilgisayar programının veya sistemin çeşitli, bazen rastgele girişlere ve bilgilere nasıl yanıt vereceğini görmek için bir kontrol yöntemidir. İşlem, belirli sınırlamalar içinde tamamen rastgele veya rastgele bir tür veri üretilmesini ve ardından beklenmeyen bilgilerin nasıl işlendiğini test etmek için bu verileri programa beslemeyi içerir. Fuzz testlerinin en temel şekli, programa rasgele bir tuşa basma veya karakter dizisi göndermeyi ve bunları doğru şekilde işlediğini kontrol etmeyi içerir. Fuzz testinin daha karmaşık bir versiyonu daha sonra rasgele manipüle edilip programa gönderilen yapısal verileri kullanır. Veriler programa sistem olayları, klavye girişleri, sahte ağ sinyalleri veya hatta yüklenecek dosyalar olarak ulaşabilir.

Bir bilgisayar programının bir fuzz jeneratör ile test edilebilecek çeşitli kısımları vardır. Grafiksel kullanıcı arayüzü (GUI), rastgele bir fare ve klavye olayı dizisi oluşturularak ve GUI'nin girişi kilitlemeden, donmadan veya beklenmeyen bir görevi yerine getirmeden yürütebildiğini kontrol ederek test edilebilir. Ağ protokolleri, fuzz jeneratörünün geçerli bir veri paketinin bölümlerini rastgele değiştirmesine izin vererek ve ardından protokolün hatalı biçimlendirilmiş verileri aldıktan sonra çalışmaya devam edebilmesini sağlayarak test edilebilir. Neredeyse herhangi bir programın temel giriş öğeleri, depolama türü için çok uzun olan giriş, beklenenden farklı bir giriş ve beklenmeyen farklı bir giriş gibi hatalara direnç gösterebilme yetenekleri açısından kontrol edilebilir.

Bilgisayar güvenlik endüstrisi, bazı sistemlerde bariz güvenlik açıklarının bulunmamasını sağlamak için fuzz testini kullanabilir. Bu, bilgisayar güvenliğini test etmek için tasarlanmış bir fuzz üreteci kullanılarak yapılabilir. Bu programlar, sistem anahtar kelimelerini, bilinen varsayılan yönetici şifrelerini, programın kullandığı kütüphanelerdeki fonksiyonları ve programın nasıl tepki vereceğini görmek için rastgele sistem fonksiyonlarını çağırmaya çalışacaktır.

Farklı fuzz test türleri, belirli aralıklar dahilinde veya hatta yalnızca belirli girdi türlerini test etmek için özelleştirilebilir. Bu, bir programın kendisine gönderilen yalnızca geçerli komutları olabileceği, ancak saçma bir düzende olabileceği anlamına gelir. Hedef programın öğelerini alan ve kötü niyetli bir şekilde yararlanılabilecek durumları ortaya çıkarmak için onları manipüle edebilecek daha karmaşık fuzz test programları mevcuttur. Bu, ortaya çıkan işlemlerin sırasını değiştirmek, izinlerin veya temel verilerin ve kütüphane dosyalarının değiştirilmesini içerebilir.

Fuzz testinin sonucu, bir programın güvenli olup olmadığını ve beklenmedik bir durumla karşılaştığında olması gerektiği gibi davranıp yapmadığını görmektir. Profil oluşturma ve analiz yazılımı ile birlikte kullanıldığında, programın hata işleme veya performans darboğazları gibi alanlardaki bellek sızıntılarını da algılayabilir. Bilgisayar güvenliği durumunda, bir sistemi tehlikeye atabilecek taşmalar gibi tehlikeli sorunlar doğru kurulumla yakalanabilir. Bununla birlikte, Fuzz testi, tek yazılım testi yöntemi olarak kullanılamaz ve daha büyük bir kalite güvence ve yazılım denetimi sürecinin bir parçası olması gerekir.