Chromium Chronicle #9: ClusterFuzz

Bölüm 9:, Mountain View'dan Adrian Taylor tarafından (Aralık 2019)
Önceki bölümler

ClusterFuzz tarafından bulunan yüksek öncelikli güvenlik hatalarını düzeltmeniz istenebilir. Bu nedir? Bu hataları ciddiye almalı mısınız? Nasıl yardımcı olabilirsin?

Fuzzing akış grafiği

ClusterFuzz, Chrome'a girdi sağlar ve kilitlenmeleri izler. Bu Chrome derlemelerinin bazılarında ek kontroller açıktır. Örneğin, bellek güvenliği hatalarını arayan AddressSanitizer.

ClusterFuzz, bileşenleri kilitlenme konumuna göre atar ve kilitlenmenin türüne ve kilitlenmenin korumalı alana alınmış bir işlemde gerçekleşip gerçekleşmediğine bağlı olarak önem derecesini atar. Örneğin, boşaltıldıktan sonra yığın kullanımı, tarayıcı sürecinde olmadığı sürece çok önem taşır. Bu durumda, son derece önemlidir (etkiyi sınırlayacak korumalı alan yoktur!):

class Foo {
  Widget* widget;
};

void Foo::Bar() {
  delete widget;
  ...
  widget->Activate();  // Bad in the renderer process, worse in the
                       // browser process. Obviously, real bugs are
                       // more subtle. Usually.

ClusterFuzz, fuzzer'lardan veya harici olarak gönderilen hatalardan giriş oluşturur. Bazı fuzzer'lar, kod kapsamını genişletmek için girişi dönüştüren libFuzzer tarafından desteklenir. Bazı uzmanlar, protobufs diline dönüştürülen giriş dilinin dil bilgisini anlar. ClusterFuzz bir kilitlenme bulduğunda giriş test durumunu en aza indirmeye ve hatta ihlale neden olan kaydı bulmak için ikiye bölmeye çalışır. Pek çok şey buluyor...

Şu konularda yardımcı olabilirsiniz:

  • Nesnelerin kullanım ömürleri ve tamsayı taşmaları konusunda paranok olun.
  • Özellikle güvenilir olmayan verileri veya IPC'yi işlerken yeni fuzzer'lar ekleyin (aşağıdaki bağlantılara bakın. Bu genelde 20 satırdan azdır).
  • ClusterFuzz tarafından bildirilen hataları düzeltin: Önem derecesi bulgusal yöntemler, gerçek dünyadaki kötüye kullanıma dayalı oldukları için güvenilir olabilir: Tek bir baytlık taşma bile bir saldırgan tarafından rastgele kod yürütmeye neden olmuştur.

Kaynaklar