Chromium Chronicle #9: ClusterFuzz

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

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

Fuzzing akış grafiği

ClusterFuzz, Chrome'a giriş yapar ve kilitlenmeleri izler. Bunlardan bazıları Chrome derlemelerinde AddressSanitizer, yardımcı olan bir test programıdır.

ClusterFuzz, kilitlenme konumuna göre bileşenleri atar ve kilitlenmenin türüne ve korumalı alanda olup olmadığına göre işlemi hakkında daha fazla bilgi edinin. Örneğin, boşaltıldıktan sonra yığın kullanımı yüksek önem taşır. tarayıcı işlemindedir, bu durumda kritik önem taşır (sınırlanacak korumalı alan olmaması) bakın):

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, girdiyi aşağıdaki şekilde değiştiren libFuzzer tarafından desteklenmektedir. kod kapsamını artırır. Bazıları giriş dilinin dil bilgisini anlar protobufs biçimine dönüştürüldü. ClusterFuzz bir kilitlenme bulduğunda, giriş testi durumunu en aza indirin ve hatta rahatsız edici kaydı bulmak için ikiye ayırın. Çok şey buluyor...

Şu konularda yardımcı olabilirsiniz:

  • Nesnelerin yaşam süreleri ve tamsayı taşma işlemleri.
  • Özellikle güvenilir olmayan verileri veya IPC'yi işlerken yeni fuzzer'lar ekleyin (bkz. genellikle < 20 satır koddan oluşur).
  • ClusterFuzz tarafından bildirilen hataları düzeltin: Önem derecesi bulguları güvenilir olabilir çünkü gerçek dünyadaki suistimallere dayanıyor: Bir bilene tek bayt taşması, tek bir bayt kullanılarak rastgele kod yürütülmesine ele alacağız.

Kaynaklar