Chromium Chronicle #9: ClusterFuzz

Episode 9: oleh Adrian Taylor di Mountain View (Desember 2019)
Episode sebelumnya

Anda mungkin diminta untuk memperbaiki {i> bug<i} keamanan prioritas tinggi yang ditemukan oleh GugusFuzz. Apa ini? Haruskah Anda menanggapi bug itu dengan serius? Bagaimana cara bantuan?

Diagram alir fuzzing

ClusterFuzz mengirimkan input ke Chrome dan memantau error. Beberapa di antaranya Build Chrome mengaktifkan pemeriksaan tambahan, misalnya AddressSanitizer, yang mencari kesalahan keamanan memori.

ClusterFuzz menetapkan komponen berdasarkan lokasi error, dan menetapkan tingkat keparahan berdasarkan jenis error dan apakah error terjadi dalam {i>checkout<i}. Misalnya, penggunaan heap use-after-free akan memiliki tingkat keparahan tinggi, kecuali jika berada dalam proses browser, yang dalam hal ini sangat penting (tidak ada sandbox untuk membatasi dampak!):

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 menghasilkan input dari fuzzer atau dari bug yang dikirimkan secara eksternal. Beberapa fuzzer didukung oleh libFuzzer, yang mengembangkan input untuk meningkatkan cakupan kode. Beberapa orang memahami tata bahasa bahasa input dikonversi menjadi protobufs. Setelah menemukan tabrakan, ClusterFuzz akan mencoba meminimalkan kasus pengujian input dan bahkan membagi dua untuk menemukan commit yang bermasalah. Prototipe ini menemukan banyak hal...

Anda dapat membantu:

  • Paranoid tentang masa aktif objek & tambahan bilangan bulat.
  • Menambahkan fuzzer baru, terutama saat Anda memproses data atau IPC yang tidak dapat dipercaya (lihat link di bawah ini, sering kali < 20 baris kode).
  • Memperbaiki bug yang dilaporkan ClusterFuzz: heuristik tingkat keparahannya dapat dipercaya karena kunci ini didasarkan pada kemampuan eksploitasi di dunia nyata: Bahkan overflow byte tunggal telah menyebabkan eksekusi kode arbitrer penyerang.

Resource

  • Pengujian fuzz di Chromium: Cara menambahkan fuzzer baru ke ClusterFuzz untuk format data baru, atau hanya karena Anda ingin menemukan vuln yang mengagumkan.
  • Update Program dan Petunjuk Chrome Fuzzer: Fitur Fuzzer juga yang ditulis oleh kontributor eksternal. Dengarkan pengalaman mereka dan betapa mudahnya bisa jadi untuk memulainya.