Chromium Chronicle n°9: ClusterFuzz

Épisode 9: par Adrian Taylor à Mountain View (décembre 2019)
Épisodes précédents

Vous serez peut-être invité à corriger des bugs de sécurité à priorité élevée détectés par ClusterFuzz. De quoi s'agit-il ? Devez-vous prendre ces bugs au sérieux ? Comment ?

Organigramme de simulation

ClusterFuzz transmet les données d'entrée à Chrome et surveille les plantages. Quelques exemples Les builds Chrome comportent des vérifications supplémentaires, par exemple AddressSanitizer, qui recherche les erreurs de sécurité de la mémoire.

ClusterFuzz attribue les composants en fonction de l'emplacement du plantage et attribue selon le type de plantage et s'il s'est produit dans un environnement processus. Par exemple, l'utilisation après libération de tas de mémoire est de gravité élevée, sauf si dans le processus du navigateur, auquel cas c'est essentiel (pas de bac à sable pour limiter impact!):

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 génère des données à partir de fuzzers ou de bugs envoyés en externe. Certains fuzzers sont optimisés par libFuzzer, qui fait évoluer l'entrée pour augmenter la couverture du code. Certains comprennent la grammaire du langage de saisie convertie en protobufs. Quand ClusterFuzz détecte un plantage, il essaie réduire le scénario de test d'entrée et même le diviser pour identifier le commit incriminé. Elle en trouve beaucoup...

Vous pouvez nous aider à:

  • Soyez paranoïaque concernant la durée de vie des objets et Dépassements d'entiers.
  • Ajoutez de nouveaux fuzzers, en particulier lorsque vous traitez des données ou des IPC non fiables (voir liens ci-dessous, souvent < (20 lignes de code).
  • Correction des bugs signalés par ClusterFuzz: son heuristique de gravité est fiable, car elles sont basées sur une exploitabilité réelle: même un le dépassement de capacité sur un octet a entraîné l'exécution de code arbitraire par ou d'un pirate informatique.

Ressources

  • Tests Fuzz dans Chromium: Ajouter de nouveaux fuzzers à ClusterFuzz pour de nouveaux formats de données, ou simplement pour obtenir à la recherche de failles géniales.
  • Mise à jour et guide du programme Chrome Fuzzer: les Fuzzers sont également rédigés par des contributeurs externes. Découvrez leur expérience et la facilité avec laquelle ils se sont déroulés. pour commencer.