Google har præsenteret projektet ClusterFuzzLite, som muliggør fuzzing-testning af kode til tidlig opdagelse af potentielle sårbarheder under arbejdet med kontinuerlig integration. I øjeblikket kan ClusterFuzz anvendes til at automatisere fuzzing-testning af pull-anmodninger i GitHub Actions, Google Cloud Build og Prow, men der forventes senere støtte til andre CI-systemer. Projektet er baseret på ClusterFuzz-platformen, der er oprettet til at koordinere arbejdet i klustre til fuzzing-testning og distribueres under Apache 2.0-licensen.
Det bemærkes, at efter implementeringen af OSS-Fuzz-tjenesten i 2016 har Google modtaget mere end 500 vigtige åbne projekter i programmet for kontinuerlig fuzzing-testning. På baggrund af de udførte kontroller blev mere end 6500 bekræftede sårbarheder fjernet og mere end 21.000 fejl rettet. ClusterFuzzLite fortsætter med at udvikle mekanismer til fuzzing-testning med mulighed for tidligere opdagelse af problemer under gennemgangsfasen af de foreslåede ændringer. ClusterFuzzLite er allerede implementeret i gennemgangsprocesserne for ændringer i projekterne systemd og curl, og har gjort det muligt at opdage fejl, der blev overset af statiske analysatorer og linters, der blev anvendt i den indledende kontrol af ny kode.
ClusterFuzzLite understøtter testning af projekter skrevet i C, C++, Java (og andre JVM-baserede sprog), Go, Python, Rust og Swift. Fuzzing-testning udføres ved hjælp af LibFuzzer-motoren. For at opdage hukommelsesfejl og anomalier kan værktøjerne AddressSanitizer, MemorySanitizer og UBSan (UndefinedBehaviorSanitizer) også aktiveres.
De primære funktioner i ClusterFuzzLite: hurtig kontrol af de foreslåede ændringer for at finde fejl før godkendelse af koden; indsendelse af rapporter om årsager til systemnedbrud; mulighed for at overgå til mere udvidet fuzzing-testning for at opdage dybere fejl, der ikke fremkom efter kontrol af kodeændringen; generering af dækningen-rapporter for vurdering af kodeoverdækning under testning; modulær arkitektur, der muliggør valg af nødvendig funktionalitet.
Lad os minde om, at der ved fuzzing-testning genereres en strøm af forskellige tilfældige kombinationer af inputdata, der ligner reelle data (for eksempel html-sider med tilfældige tagparametre, arkiver eller billeder med abnormale overskrifter osv.), og mulige fejl under behandlingen registreres. Hvis en bestemt sekvens fører til nedbrud eller ikke svarer til den forventede reaktion, indikerer denne adfærd med høj sandsynlighed en fejl eller sårbarhed.
Kilde: opennet.ru
