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?

  1. Hedef seçimi

    Dışarıdan girdi alan ve bellek güvenliği riski taşıyan fonksiyonları belirleriz.

  2. Harness ve girdi kümesi

    Her hedef için bir harness yazar, geçerli örneklerden başlangıç girdi kümesi hazırlarız.

  3. Ç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.

  4. 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