Chromium Chronicle Nr. 9: ClusterFuzz

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

Es kann sein, dass Sie aufgefordert werden, von ClusterFuzz gefundene Sicherheitsfehler mit hoher Priorität zu beheben. Worum geht es? Solltest du diese Fehler ernst nehmen? Wie können Sie helfen?

Fuzzing-Flussdiagramm

ClusterFuzz speist Daten in Chrome ein und sucht nach Abstürzen. Bei einigen dieser Chrome-Builds sind zusätzliche Prüfungen aktiviert. So wird z. B. AddressSanitizer nach Sicherheitsfehlern des Arbeitsspeichers gesucht.

ClusterFuzz weist Komponenten basierend auf dem Absturzort zu und weist den Schweregrad basierend auf der Art des Absturzes und danach zu, ob er in einem Sandbox-Prozess aufgetreten ist. Ein Heap-Use-After-Free hat beispielsweise einen hohen Schweregrad, es sei denn, er befindet sich im Browserprozess. In diesem Fall ist es kritisch (keine Sandbox zum Einschränken der 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 von extern übermittelten Programmfehlern. Einige Fuzzer werden von libFuzzer unterstützt, das die Eingabe zur Erweiterung der Codeabdeckung weiterentwickelt. Einige verstehen die Grammatik der in protobufs konvertierten Eingabesprache. Sobald ClusterFuzz einen Absturz erkennt, versucht es, den Eingabetestfall zu minimieren und sogar den fehlerhaften Commit zu finden. Es findet viel...

Sie können dabei helfen:

  • Seien Sie paranoid in Bezug auf die Lebensdauer von Objekten und Überläufen von Ganzzahlen.
  • Fügen Sie neue Fuzzers hinzu, insbesondere wenn Sie nicht vertrauenswürdige Daten oder IPC verarbeiten (siehe Links unten, oft weniger als 20 Codezeilen).
  • Beheben Sie von ClusterFuzz gemeldete Programmfehler: Die Schwereheuristiken können vertrauenswürdig sein, da sie auf der realen Ausnutzungsfähigkeit basieren: Selbst ein Einzel-Byte-Überlauf hat zur willkürlichen Ausführung von Code durch einen Angreifer geführt.

Ressourcen

  • Fuzz-Tests in Chromium: Informationen zum Hinzufügen neuer Fuzzers zu ClusterFuzz für neue Datenformate oder einfach weil Sie das Potenzial toller Sicherheitslücken finden möchten
  • Update und Anleitung zum Chrome Fuzzer-Programm: Fuzzer werden auch von externen Mitwirkenden geschrieben. Hören Sie ihre Erfahrungen und wie einfach der Einstieg sein kann.