Fuzzing
Fuzzing (Fuzz Testing) · Ayrıca şöyle bilinir: fuzz testing, fuzzer, mutation testing
Fuzzing, Barton Miller tarafından 1990'da öncülüğü yapılan ve bir programa rastgele veya yarı rastgele çok sayıda test girdisi göndererek hataları, çökmeleri ve güvenlik açıklarını bulmaya yarayan bir yazılım test tekniğidir. Fuzzing, karmaşık yazılımlardaki sıfır gün açıklarını keşfetmek için birincil bir yöntem haline gelmiştir. libFuzzer, AFL ve HoneyPot gibi modern fuzzing araçları, program yollarını verimli bir şekilde keşfetmek ve açıkları tetiklemek için kapsama-gidimli mutasyonu enstrümantasyonla birleştirir. Fuzzing, tarayıcılar, derleyiciler ve kriptografik kütüphaneler dahil olmak üzere büyük yazılımlarda binlerce kritik açığı ortaya çıkarmıştır.
Tam yöntemi oku
Bu bölümü okumak için ücretsiz hesapla giriş yapın.
Yöntem haritası
İlişkili yöntemlerin komşuluğu — keşfetmek için bir düğüm seçin.
Ne zaman kullanılır
Fuzzing, kenar durumlarının tahmin edilmesinin zor olduğu ayrıştırıcıları (parser), kod çözücüleri (decoder) ve karmaşık girdi işleme kodlarını test etmek için paha biçilmezdir. Geliştirme sırasında erken ve sık sık bir gerileme testi tekniği olarak fuzzing kullanın. Fuzzing, özellikle güvenlik açısından kritik bileşenler (kriptografi, girdi doğrulama, protokol ayrıştırıcıları) ve C/C++ kodundaki bellek bozulması açıklarını bulmak için etkilidir.
Güçlü yönler & sınırlılıklar
- Programın amaçlanan davranışı hakkında bilgi gerektirmeden otomatik olarak açıklar keşfeder
- Bellek bozulması hatalarını, çökme nedeni olan girdileri ve mantık hatalarını bulmada son derece etkilidir
- Günlerce veya haftalarca sürekli çalışabilir, kapsama alanını biriktirerek nadir görülen kenar durum hatalarını bulur
- Kapsama-gidimli fuzzerlar, çabayı umut vadeden alanlara odaklayarak program yollarını akıllıca keşfeder
- Çökmelere neden olmayan mantık veya algoritmalarla ilgili açıkları bulmada etkisizdir
- Karmaşık girdi biçimleri veya özel ortam kurulumu gerektiren programlarla mücadele eder
- Önemsiz olmayan programlar için özel arayüzler (harness) veya enstrümantasyon gerektirebilir
- Yanlış negatifler: çökme olmaması açıkların bulunmadığı anlamına gelmez
SSS
Kapsama-gidimli fuzzing nedir?
Kapsama-gidimli fuzzing, mutasyonu yönlendirmek için hangi kod yollarının çalıştırıldığına dair bilgiyi kullanır. Yeni kod yollarını çalıştıran girdiler başlangıç noktası olarak saklanır, bu da fuzzer'ı kapsanmayan alanları keşfetmeye odaklar. Bu, rastgele fuzzing'e göre verimliliği büyük ölçüde artırır.
Bir fuzzer ne kadar süreyle çalıştırılmalıdır?
İdeal olarak sürekli. Kapsama grafikleri, ilk yoğun fuzzing'den sonra azalan getiriler gösterse de, hatalar bulunmaya devam eder. Birçok kuruluş, kritik yazılımlarda fuzzer'ları 7/24 çalıştırır.
Fuzzing tüm açıkları bulabilir mi?
Hayır. Fuzzing, çökmeleri ve bellek bozulmalarını bulmada mükemmeldir ancak mantık hatalarını, kimlik doğrulama atlamalarını ve rastgele mutasyonla keşfedilemeyen belirli girdi dizileri gerektiren açıkları kaçırabilir.
Programım için fuzzing'i nasıl kurarım?
Dönüştürülmüş girdiyi kabul eden ve programı çalıştıran bir fuzz hedefi yazın. Bir fuzzing motoruyla (libFuzzer, AFL++) bağlayın. Başlangıç girdileri sağlayın. Bellek hatalarını tespit etmek için sanitizer'larla (AddressSanitizer, UndefinedBehaviorSanitizer) derleyin.
Diferansiyel fuzzing nedir?
Diferansiyel fuzzing, hataları bulmak için birden fazla uygulamanın (örneğin, farklı derleyici sürümleri) çıktılarını karşılaştırır. Farklılıklar genellikle doğruluk sorunlarını veya güvenlik açıklarını gösterir.
Kaynaklar
- Miller, B. P., Fredriksen, L., & So, B. (1990). An empirical study of the reliability of UNIX utilities. Communications of the ACM, 33(12), 32-44. DOI: 10.1145/96267.96279 ↗
- Böhme, M., Pham, V. T., Sharma, A., & Cichon, M. (2020). Fuzzing: Challenges and reflections. IEEE Security & Privacy, 19(2), 56-62. link ↗
Bu sayfayı kaynak gösterin
ScholarGate. (2026, June 3). Fuzzing (Fuzz Testing). ScholarGate. https://scholargate.app/tr/cryptography/fuzzing
Hangi yöntem?
Bu yöntemi en yakın akrabalarının yanına koyup yan yana okuyun — kütüphane kitapları masaya serer; seçim sizindir.
- Dinamik Uygulama Güvenliği TestiKriptografi↔ karşılaştır
- Sembolik YürütmeKriptografi↔ karşılaştır
- Bulaşma AnaliziKriptografi↔ karşılaştır