Chromium Chronicle Nr. 9: ClusterFuzz

Folge 9: von Adrian Taylor in Mountain View (Dezember 2019)
Vorherige Folgen

Möglicherweise werden Sie aufgefordert, sicherheitsrelevante Fehler mit hoher Priorität zu beheben, die von ClusterFuzz. Worum handelt es sich? Solltest du diese Programmfehler ernst nehmen? Wie können Sie Hilfe?

Fuzzing-Flussdiagramm

ClusterFuzz leitet Eingaben an Chrome weiter und sucht nach Abstürzen. Einige davon Für Chrome-Builds sind zusätzliche Prüfungen aktiviert, z. B. AddressSanitizer, die nach sicherheitsbezogenen Fehlern des Arbeitsspeichers sucht.

ClusterFuzz weist Komponenten basierend auf dem Absturzort zu und weist dem Schweregrad basierend auf der Art des Absturzes und darauf, ob er in einer Sandbox aufgetreten ist Beispielsweise hat die Heap-Nutzung nach der Freischaltung einen hohen Schweregrad, es sei denn, im Browserprozess. In diesem Fall ist es wichtig, Auswirkung!)

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 generiert Eingaben aus Fuzzers oder extern eingereichten Fehlern. Einige Fuzzer werden von libFuzzer unterstützt, wodurch die Eingabe in die Codeabdeckung zu erhöhen. Einige verstehen die Grammatik der Eingabesprache in protobufs umgewandelt. Sobald ClusterFuzz einen Absturz erkennt, Minimieren Sie den Eingabetestfall und halbieren Sie sogar, um den problematischen Commit zu finden. Es findet eine Menge...

Sie können dabei helfen:

  • Seien Sie paranoid hinsichtlich der Lebensdauer von Objekten Ganzzahlüberläufen.
  • Fügen Sie neue Fuzzer hinzu, insbesondere wenn Sie nicht vertrauenswürdige Daten oder IPC verarbeiten (siehe Links unten, oft < 20 Codezeilen).
  • Von ClusterFuzz gemeldete Fehler beheben: Die Heuristiken des Schweregrads können vertrauenswürdig sein, basieren sie auf einer realen Ausnutzbarkeit: Selbst Single-Byte-Überlauf hat zu einer beliebigen Codeausführung durch eine Angreifer.

Ressourcen

  • Fuzz-Tests in Chromium: So fügst du neue Fuzzer zu ClusterFuzz für neue Datenformate erstellen oder einfach nur, weil Sie auf der Suche nach tollen Sicherheitslücken.
  • Update und Anleitung zum Chrome Fuzzer-Programm: Fuzzer sind auch von externen Mitwirkenden. Hören Sie sich an, welche Erfahrungen sie gemacht haben und wie einfach kann es sein, zu beginnen.