Zafiyet Araştırması
Fuzzing
Ürününüzün girdi işleyen kodunu otomatik olarak üretilmiş çok sayıda beklenmedik girdiyle test ediyoruz. Bulunan çökme ve bellek hatalarını kök nedenleriyle raporluyoruz.
Nedir?
Fuzzing, bir programa otomatik olarak üretilmiş geçersiz veya beklenmedik girdiler verilmesidir. Kapsama güdümlü fuzzing, kodun yeni bir dalına ulaşan girdileri saklar ve yeni girdileri bunlardan türetir. Derleyici bellek denetleyicileri, çökmeye yol açmayan bellek hatalarını da görünür kılar. Her hata, onu tetikleyen en küçük girdiyle kaydedilir.
Kapsam
- Dosya biçimi ayrıştırıcıları ve medya işleyicileri
- Ağ protokolü işleyicileri ve durum makineleri
- REST ve gRPC API'leri için şemaya dayalı fuzzing
- Her hedef için fuzzing harness'ı ve başlangıç girdi kümesi
- Fuzzing'in CI/CD hattına eklenmesi ve bulguların takibi
İhtiyaç
Hangi durumlarda ihtiyaç duyulur?
- Ürününüz C veya C++ gibi bellek güvenliği sağlamayan bir dilde dışarıdan girdi işlediğinde.
- Kendi geliştirdiğiniz bir ikili protokol veya dosya biçimi kullandığınızda.
- Sahadan gelen çökme raporları arttığında ve nedeni bulunamadığında.
Yöntem
Nasıl çalışıyoruz?
-
Hedef seçimi
Dışarıdan girdi alan ve bellek güvenliği riski taşıyan fonksiyonları belirleriz.
-
Harness ve girdi kümesi
Her hedef için bir harness yazar, geçerli örneklerden başlangıç girdi kümesi hazırlarız.
-
Çalıştırma
Fuzzing'i kapsama ölçümüyle yürütürüz. Ulaşılamayan kod bölümlerini harness'ı geliştirerek açarız.
-
Ayıklama
Çökmeleri tekilleştirir, her birinin kök nedenini ve istismar edilebilirliğini değerlendiririz.
Sonuç
Çalışmanın sonunda elinizde olan
Bulunan hatalar kök nedenleri ve tetikleyici girdileriyle elinizdedir. Harness'lar ve girdi kümesi sizde kalır, böylece fuzzing her yeni sürümde yeniden çalıştırılabilir.
Sık sorulan sorular
Fuzzing hangi dillerde işe yarar?
Bellek güvenliği sağlamayan dillerde en çok bellek hatası bulur. Rust, Go veya Java gibi dillerde de işlenmeyen istisnaları, sonsuz döngüleri ve aşırı kaynak tüketimini ortaya çıkarır.
Canlı sistemlerimiz etkilenir mi?
Fuzzing, canlı sistemlerden ayrı bir derleme veya test ortamında yürütülür. Canlı sistemlere girdi gönderilmez.
Fuzzing bir kez yapılıp bırakılabilir mi?
Tek bir çalışma da hata bulur. En çok değeri ise kod değiştikçe sürekli çalıştığında üretir. Bu nedenle harness'ların CI/CD hattınıza eklenmesini öneririz.
Zafiyet Araştırması
Bu alandaki diğer hizmetler
Bu hizmet için görüşelim.
İhtiyacınızı kısaca anlatın. Kapsamı ve takvimi ilk görüşmede birlikte netleştirelim.
Görüşme Planlayın

