Podjetje Google je predstavilo projekt ClusterFuzzLite, ki omogoča organizacijo fuzzing-testiranja kode za zgodnje odkrivanje potencialnih ranljivosti v fazi delovanja sistemov neprekinjene integracije. Trenutno se lahko ClusterFuzz uporablja za avtomatizacijo fuzzing-testiranja pull-prošenj v GitHub Actions, Google Cloud Build in Prow, v prihodnje pa pričakujemo podporo tudi za druge CI-sisteme. Projekt temelji na platformi ClusterFuzz, ki je bila ustvarjena za koordinacijo delovanja klastrskih fuzzing-testov, in je licencirana pod Apache 2.0.
Opozarja se, da je po uvedbi storitve OSS-Fuzz podjetja Google leta 2016 v program neprekinjenega fuzzing-testiranja bilo sprejetih več kot 500 pomembnih odprtih projektov. Na podlagi opravljenih pregledov je bilo odpravljeno več kot 6500 potrjenih ranljivosti in več kot 21 tisoč napak. ClusterFuzzLite nadaljuje razvoj mehanizmov fuzzing-testiranja z možnostjo zgodnejšega odkrivanja težav v fazi pregleda predlaganih sprememb. ClusterFuzzLite je že vključen v procese pregleda sprememb v projektih systemd in curl ter omogoča odkrivanje napak, ki so jih spregledali statični analizatorji in linterji, uporabljeni v začetni fazi pregleda nove kode.
ClusterFuzzLite podpira preverjanje projektov v jeziku C, C++, Java (in drugih jezikih, temelječih na JVM), Go, Python, Rust in Swift. Fuzzing-testiranje poteka z uporabo motorja LibFuzzer. Za odkrivanje napak pri delu s pomnilnikom in anomaliij se lahko tudi pokličejo orodja AddressSanitizer, MemorySanitizer in UBSan (UndefinedBehaviorSanitizer).
Glavne možnosti ClusterFuzzLite: hitra preveritev predlaganih sprememb za odkrivanje napak pred sprejemanjem kode; nalaganje poročil o pogojih, ki povzročajo zrušitve; možnost prehoda na bolj obsežno fuzzing-testiranje za odkrivanje globljih napak, ki se niso pojavile med preverjanjem spremembe kode; generiranje coverage-poročil za oceno pokritosti kode med testiranjem; modularna arhitektura, ki omogoča izbiro potrebne funkcionalnosti.
Spomnimo, da fuzzing-testiranje vključuje generiranje toka vseh mogočih naključnih kombinacij vhodnih podatkov, ki so blizu realnim podatkom (na primer, html-strani z naključnimi parametri oznak, arhivi ali slikami z nenormalnimi glavi in tako naprej) ter beleženje morebitnih napak pri obdelavi. Če neka zaporedja povzroči zrušitev ali ne ustreza pričakovani reakciji, to vedenje z visoko verjetnostjo kaže na napako ali ranljivost.
Izvor: opennet.ru
