Yazılım açıkları siber güvenlikte önemli bir sorundur. Yazılım ürünlerinin saldırıya uğramasına izin verirler ve bu ürünler aksi takdirde güvenli ağlara bağlandığında, bilgisayar korsanları için bir giriş noktası sağlayabilirler.
Tüm profesyonel yazılım ürünleri, piyasaya sürülmeden önce kapsamlı bir şekilde test edilir. Ne yazık ki, güvenlik açıkları hala yaygın bir olaydır. Ek güvenlik açıklarını bulmanın bir yolu, fuzzing olarak bilinen bir yazılım test tekniği kullanmaktır.
Peki fuzzing nedir ve nasıl çalışır?
Fuzzing Nedir?
Fuzzing, rastgele girdiler kullanarak güvenlik açıklarını bulmaya çalışan otomatik bir yazılım test tekniğidir.
Kullanıcı istenenden farklı bir girdi girdiğinde yazılım genellikle öngörülemez davranır. Bulanıklaştırma, büyük miktarlarda beklenmedik girdi girme ve ne olduğunu kaydetme uygulamasıdır. Buradaki fikir, kullanıcının yazılımı izleyebilmesi ve herhangi bir güvenlik açığının olup olmadığını belirleyebilmesidir.
Fuzzing, yazılım ürünlerini test etmek ve güvenlik uzmanları tarafından bir ağın güvenli olup olmadığını belirlemek için kullanılır. Ayrıca, kendilerinin kullanabilecekleri güvenlik açıklarını bulmak için fuzzing uygulayan bilgisayar korsanları tarafından da kullanılır.
Fuzzing tarafından keşfedilen güvenlik açıkları çok çeşitlidir. Beklenmeyen bir giriş, yazılımın basitçe çökmesine neden olabilir. Ancak, özel bilgileri de döndürebilir veya kullanıcının yazılımın aksi halde limit dışı olacak bölümlerine erişmesine izin verebilir.
Fuzzing’in Avantajları Nelerdir?
Fuzzing, yazılım ürünlerinin güvenlik açıkları için test edilebileceği birçok yoldan yalnızca biridir. Popüler çünkü:
- Fuzzing tamamen otomatiktir. Fuzzing programı kurulduktan sonra, insan girdisi olmadan güvenlik açıklarını aramaya devam edebilir.
- Fuzzing, diğer yazılım test tekniklerinin bulamadığı güvenlik açıklarını bulabilir. Bu nedenle, genellikle manuel tekniklere ek olarak kullanılır.
- Fuzzing genellikle bilgisayar korsanları tarafından sıfırıncı gün güvenlik açıklarını bulmak için kullanılır . Bilgisayar korsanlarıyla aynı teknikleri kullanmak, geliştiricilerin sıfırıncı gün güvenlik açıklarını yapmadan önce bulmasını sağlar.
Fuzzing Nasıl Çalışır?
Fuzzing için kullanılan bir aracın tipik olarak üç bileşeni vardır. Genellikle Şair, Kurye ve Kahin olarak anılırlar.
Şair
Şair süreci başlatır ve bir test senaryosu oluşturmaktan sorumludur. Test durumu, potansiyel girdilerin uzun bir listesidir.
Kurye
Kurye, tüm rastgele girdileri hedeflenen yazılıma ekler. Fuzzer’lar bunu otomatik olarak yapacak şekilde tasarlanmıştır ve büyük miktarda girdinin toplu olarak test edilmesine olanak tanır.
Kahin
Oracle, girdilerden herhangi birinin yazılımın tasarlandığından farklı bir şey yapmasına neden olup olmadığını kontrol eder. Fuzzing meşru amaçlar için yapılıyorsa, davranış tekrarlanabilir ve düzeltilebilir. Veya fuzzing bir bilgisayar korsanı tarafından yapılıyorsa ve beklenmeyen davranış faydalıysa, kötü amaçlar için kullanılabilir.
Saldırganlar Fuzzing’i Nasıl Kullanıyor?
Fuzzing, bilgisayar korsanları arasında popüler bir tekniktir çünkü kaynak koduna erişmeden yazılımdaki güvenlik açıklarını bulmalarına olanak tanır. Fuzzing otomatik olduğundan, gerçekleştirilmesi de kolaydır. Bir bilgisayar korsanı bir güvenlik açığı keşfederse, aşağıdaki saldırıları gerçekleştirebilir.
DDoS Saldırıları
Fuzzing, belirli girdilerin işlenmesinin uzun zaman gerektirdiğini keşfederse, bu bilgi bir DDoS saldırısı başlatmak için kullanılabilir. Bir DDoS saldırısı, bir sisteme o kadar çok istek göndermeyi içerir ki, çalışmayı durdurur. Fuzzing, isteklerin yanıtlanması için en fazla sistem kaynağına ihtiyaç duyacak şekilde uyarlanmasına olanak tanır.
SQL Enjeksiyonu
Bir SQL enjeksiyon saldırısı, bir uygulamaya kötü niyetli SQL ifadelerinin gönderilmesidir. Bu ifadeler uygun şekilde sterilize edilmezse, bir saldırganın veritabanıyla etkileşime girmesine izin verebilir. Bu, verileri çalmalarına veya değiştirmelerine izin verebilir. Fuzzing, büyük miktarda SQL deyimi denemek ve herhangi birinin olumlu bir yanıt üretip üretmediğini belirlemek için etkili bir araçtır.
Tampon Taşması
Bir arabellek taşması saldırısı , bir programın arabelleğine işleyebileceğinden daha fazla veri eklendiğinde gerçekleşir. Bu senaryoda, bir bilgisayar korsanının bu programın kötü amaçlı kod yürütmesine neden olması mümkündür. Bu, verileri çalmak veya yetkisiz erişim elde etmek için kullanılabilir. Fuzzing, arabellek taşmasına neden olabilecek girdileri bulmak için kullanılır.
Fuzzing Türleri
Fuzzing araçları, hem test senaryolarının nasıl oluşturulduğuna hem de sistem hakkında ne kadar bilindiğine göre sınıflandırılabilir.
Aptal vs Akıllı
Aptal fuzzing basitçe büyük miktarlarda rastgele girdiler ekler. Uygulama tarafından kabul edilme olasılığı en yüksek olan girdileri seçmez. Bu, yazılım hakkında hiçbir şey bilmeden uygulamayı kolaylaştırır; ancak, çoğu girdi reddedileceğinden, aynı zamanda oldukça verimsizdir.
Akıllı fuzzing, uygulamanın kabul etmesi muhtemel girdiler üretir. Kullanıcının hangi girdi biçiminin kabul edilebilir olduğunu anlamasını ve ardından bu biçim içinde büyük miktarda girdi üretmesini gerektirir. Akıllı fuzzing, uygulamak için daha fazla çaba ve ürün bilgisi gerektirir, ancak önemli ölçüde daha verimlidir.
Mutasyon ve Nesil
Mutasyonel fuzzerlar daha önce kabul edilmiş bir girdi alır ve onda küçük değişiklikler yapar. Bu, kabul edilen format bilgisi olmadan kabul edilmesi muhtemel girdilerin üretilmesine izin verir.
Nesil fuzzer’lar, kabul edilen format hakkında bilinenlere dayalı olarak tamamen yeni girdiler yaratır.
Beyaz Kutu ve Kara Kutu
Kara kutu fuzzing, test edilen uygulama hakkında herhangi bir bilgi olmadan kullanılır. Beyaz kutu bulanıklaştırmadan daha az etkilidir ancak kaynak koduna erişim olmadan herhangi bir uygulamaya uygulanabilir. Bu, onu bilgisayar korsanları arasında popüler hale getirir.
Beyaz kutu fuzzing, kabul edilmesi ve güvenlik açıkları oluşturması en olası girdiler oluşturmak için test edilen uygulama hakkındaki bilgileri kullanır. Kara kutu bulanıklaştırmadan daha etkili olduğu için öncelikle yazılım geliştiricileri tarafından kullanılır.
Fuzzing, Zero-Day Exploitleri Önlemek İçin Önemli Bir Araçtır
Fuzzing, yazılım geliştiriciler, güvenlik uzmanları ve bilgisayar korsanları tarafından kullanılan güçlü bir yazılım test yöntemidir. Uygulamak için minimum çaba gerektirir ve diğer yazılım test tekniklerinin yapmadığı güvenlik açıklarını bulma yeteneğine sahiptir.
Güvenlik açısından özellikle önemlidir çünkü genellikle sıfırıncı gün güvenlik açıklarını keşfetmek için kullanılır. Bu güvenlik açıkları, güvenlik uzmanları tarafından keşfedilebilir ve düzeltilebilir veya bilgisayar korsanları tarafından keşfedilebilir ve kullanılabilir.