De Chromiumkroniek #9: ClusterFuzz

Aflevering 9: door Adrian Taylor in Mountain View (december 2019)
Vorige afleveringen

Mogelijk wordt u gevraagd beveiligingsbugs met hoge prioriteit op te lossen die door ClusterFuzz zijn ontdekt. Wat is het? Moet je deze bugs serieus nemen? Hoe kunt u helpen?

Vaag stroomschema

ClusterFuzz stuurt invoer naar Chrome en let op crashes. Bij sommige van deze Chrome-builds zijn extra controles ingeschakeld, bijvoorbeeld AddressSanitizer , dat zoekt naar geheugenveiligheidsfouten.

ClusterFuzz wijst componenten toe op basis van de crashlocatie en wijst de ernst toe op basis van het type crash en of deze in een sandbox-proces heeft plaatsgevonden . Een heap use-after-free zal bijvoorbeeld zeer ernstig zijn, tenzij deze zich in het browserproces bevindt, in welk geval het van cruciaal belang is (geen sandbox om de impact te beperken!):

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 genereert input van fuzzers of van extern ingediende bugs. Sommige fuzzers worden mogelijk gemaakt door libFuzzer , dat invoer ontwikkelt om de codedekking te vergroten. Sommigen begrijpen de grammatica van de invoertaal, omgezet in protobufs . Zodra ClusterFuzz een crash vindt, zal het proberen de invoertestcase te minimaliseren en zelfs in tweeën te delen om de overtredende commit te vinden . Er wordt veel gevonden...

Jij kunt helpen:

  • Wees paranoïde over de levensduur van objecten en overflows van gehele getallen.
  • Voeg nieuwe fuzzers toe, vooral als je onbetrouwbare data of IPC verwerkt (zie onderstaande links, vaak < 20 regels code).
  • Door ClusterFuzz gerapporteerde bugs repareren: de ernstheuristieken ervan kunnen worden vertrouwd omdat ze gebaseerd zijn op exploiteerbaarheid in de echte wereld : zelfs een overflow van één byte heeft geleid tot het uitvoeren van willekeurige code door een aanvaller.

Bronnen

  • Fuzz-testen in Chromium : hoe u nieuwe fuzzers aan ClusterFuzz kunt toevoegen voor nieuwe gegevensformaten, of gewoon omdat u de eer wilt hebben om geweldige kwetsbaarheden te vinden.
  • Chrome Fuzzer-programma-update en how-to : Fuzzers zijn ook geschreven door externe bijdragers. Luister naar hun ervaringen en hoe gemakkelijk het kan zijn om aan de slag te gaan.