Fuzz testi için kapsamlı bir rehber

Yayınlanan: 2021-05-17

Güvenlik testi, ister iş amaçlı ister ticari kullanım için olsun, yazılımınızın resmi sürümüne hazır olmasını sağlamanın en hayati adımlarından biridir. Yazılımınızın sahip olabileceği güvenlik açıklarını tespit etmenize ve bir bilgisayar korsanının böyle bir kusurdan yararlanması durumunda bunlara karşı bir önlem geliştirmenize olanak tanır.

Güvenlik testiyle ilgileniyorsanız, şimdi burada gerçekleri öğrenebilirsiniz, ancak bilmeniz gereken bir şey, güvenlik testi yapmanın risk değerlendirmesi, sızma testi ve güvenlik açığı taraması gibi her türlü yolu olduğudur. Güvenlik testine zaten biraz aşinaysanız, muhtemelen 'fuzz testi' terimini duymuşsunuzdur.

Fuzz testi, özellikle Microsoft ve Google gibi kurumsal devlerin on yıldan fazla bir süredir kullanması nedeniyle, günümüzde endüstride nispeten yaygın bir test tekniğidir. Ancak şaşırtıcı olan, standart bir teknik olmasına rağmen, pek çok insanın bunu bilmemesidir. Bununla birlikte, bu kılavuz, tanımından başlayarak bulanıklık testinin ne olduğunu açıklamayı amaçlamaktadır.

Fuzz Testi Nedir?

Fuzz testi veya diğerlerinin 'fuzzing' dediği şey, istismar edilebilir hatalara yol açabilecek herhangi bir güvenlik açığını tespit etmek için bir programa geçersiz veya rastgele veriler girmeyi içerir. Bu girdi, bir dosya biçiminde veya kullanıcıdan doğrudan bir girdi şeklinde olabilir. Bu nedenle, örneğin, bir tür hesaplama programı oluşturuyorsanız, genellikle sayıları veya matematiksel işlemleri girmeniz gerekir. Ancak fuzz testi yapıyorsanız, harfler ve hatta özel karakterler gibi geçersiz bir giriş girmeniz gerekir.

Bunu yapmak programı çökertirse veya başka tür bir hataya neden olursa, programcı bir güvenlik açığı olduğunu varsayar ve bu nedenle sorunu çözme umuduyla kodlamayı değiştirmeye çalışabilir. İlk bakışta, fuzz testinin güvenlik açığı taraması veya sızma testi gibi diğer tekniklerle aynı olduğunu düşünebilirsiniz, ancak popülerliğinin bir nedeni var.

Şirketler Neden Fuzz Testini Kullanıyor?

Güvenlik testi söz konusu olduğunda, herkese uyan tek bir çözüm yoktur. Her yöntem, diğerlerinin tespit edemediği sorunları tespit edebilir; bazıları daha düşük işletme maliyetleri gerektirirken diğerlerinin gerçekleştirilmesi daha kolaydır. Her güvenlik testi tekniği gibi, fuzz testi de kendi yöntemleriyle benzersizdir. Aşağıda, şirketleri fuzz testini kullanmaya iten birkaç avantaj bulunmaktadır.

  • Basitlik: Tüy testinin nasıl çalıştığını zaten biliyorsunuz - bu, bir programa geçersiz girdi girmek meselesidir. Genel olarak sürecin basitliği, güvenlik testleri açısından beceri ve deneyimden yoksun kişi veya kuruluşlar için büyük bir avantaj olarak hizmet eder.
  • Otomasyon: Güvenlik testi, yazılım ve uygulama geliştirmede çok önemli bir adım olabilir, ancak çoğu zaman programı sürekli test etmenin dışında yapılacak başka şeyler de vardır. Ancak, fuzzer'ları kullanarak tüm süreci otomatikleştirebildiğiniz için, fuzz testi ile bu farklı bir hikaye.

Fuzzers, gerekli komut ve koşullar verildiğinde programa otomatik olarak veri girmekten sorumlu araçlardır. Bulanıklık testinin iş otomasyonunu mümkün kılması, onu şirketler için ideal bir test tekniği haline getirir.

  • Kullanışlı: Genellikle, test sırasında, hata olasılığını azaltmak ve programın güvenliğini en üst düzeye çıkarmak için mümkün olduğunca çok araç kullanılması gerekir. Bulanıklık testi otomatikleştirilebilir ve basit olduğundan, yazılımın güvenliğini arttırmanın uygun bir yoludur.

Fuzzing, genel olarak basit ve uygulaması kolaydır, ancak fuzz testi için her türlü yaklaşımın mevcut olduğunu belirtmekte fayda var. Kullandığınız türe bağlı olarak, test sürecinin zorluğu ve karmaşıklığı değişebilir. Bu notta, farklı tüylenme testi türleri hakkında konuşmak için iyi bir zaman olabilir.

Fuzz Testine Farklı Yaklaşımlar

Birkaç tür tüylenme testi olmasına rağmen, farklı girdi üretmeleri dışında çoğunlukla birbirine benzerler. Ne olursa olsun, fuzz testi için dört yaklaşım vardır:

  • Dumb Fuzzing: Tamamen rasgele girdi üretmek istediğinde, genellikle aptal bir fuzzer kullanırlar. Aptal fuzzer, programın ön bilgisi veya zekası olmadan girdi üreten bir araçtır, dolayısıyla adı.

Örneğin, bir dilbilgisi kontrol programı oluşturuyorsanız, aptal bir fuzzer, programın beklediğinden çok uzak bir görüntü üretebilir. Aptal fuzzing, fuzz testi için en kolay yaklaşımdır.

  • Akıllı Fuzzing: Madalyonun diğer tarafında akıllı fuzzing var. Aptal fuzzing'in aksine, smart fuzzing, programın ne almayı beklediğini bilerek girdi üretir. Ayrıca, akıllı bir fuzzer, programı kaçınılmaz olarak çökertecek girdi üretmeyecektir. Bunun yerine, beklenmedik davranışlara neden olabilecek girdiler bulacaktır.

Bu nedenle, önceki örnekte, akıllı bir fuzzer özel karakterler üretebilir, ancak asla bir görüntü veya uygun olmayan başka bir girdi üretemez. Akıllı fuzzer'ların uygulanması aptal fuzzer'lardan daha zor olsa da, çoğu zaman daha doğrudurlar.

  • Mutasyonel Fuzzing: Mutasyonel fuzzing, var olan bir geçerli girdiyi değiştirerek veya daha spesifik olarak 'mutasyona uğratarak' girdi üretmeyi içerir. Hesaplayıcı programlı örneğimizde, mutasyonel bir fuzzer mevcut bir geçerli girişi seçebilir.

Seçilen girişin '10+9' olduğunu varsayalım. Mutasyonel bir fuzzer, değeri artırıp '180+129'a çevirmek veya işlemi '10/9' ile sonuçlanacak şekilde değiştirmek gibi bu girdinin bir kısmını ekleyerek, çıkararak veya değiştirerek bu girdiyi değiştirmeye çalışacaktır.

  • Nesil Fuzzing: Son olarak, nesil fuzzing, var olanlardan girdi üreten mutasyonel fuzzing'in tersi olan sıfırdan girdi üretir. Referans olmadığı için, nesil fuzzer'ları uygulamak mutasyon fuzzer'larından çok daha zordur, ancak test cihazı için daha fazla veri sağlayabilirler.

Tüy testini diğer tekniklerden biraz daha ilginç yapan şey, test aracını geliştirmek için farklı türleri birleştirebilmenizdir. Örneğin, programınızın neye ihtiyacı olduğuna bağlı olarak akıllı mutasyonlu bir fuzzer veya aptal nesil bir fuzzer oluşturabilirsiniz. Belki de fuzz testi ile gerçekleştirebileceğiniz sayısız kombinasyon, şirketlerin diğer yöntemlere göre fuzz testini tercih etmesinin bir başka nedenidir.

Toplama

Tüylenme testi hakkında daha fazla bilgi edindikten sonra, neden şimdi olduğu kadar popüler hale geldiğini anlamak kolay. Bununla birlikte, diğer teknikler gibi, tüy testinin de bazı dezavantajları olduğunu belirtmekte fayda var. Bu nedenle, fuzz testinin uygulamanıza veya yazılımınıza zarar vermekten daha iyi yapıp yapamayacağını belirlemek önemlidir. Daha önce de belirtildiği gibi, yazılım güvenlik testi için herkese uyan tek bir çözüm yoktur ve tüy testi kesinlikle bu çözüm olmayacaktır.

Bu konuda herhangi bir fikriniz var mı? Aşağıdaki yorumlarda bize bildirin veya tartışmayı Twitter veya Facebook'a taşıyın.

Editörün Önerileri: