Spoločnosť Google predstavila projekt ClusterFuzzLite, ktorý umožňuje organizovať fuzzingové testovanie kódu na včasné odhaľovanie potenciálnych zraniteľností počas prevádzky systémov nepretržitej integrácie. V súčasnosti môže byť ClusterFuzz využívaný na automatizáciu fuzzingového testovania pull požiadaviek v GitHub Actions, v Google Cloud Build a v Prow, pričom sa očakáva, že v budúcnosti pribudne podpora aj pre iné CI systémy. Projekt je založený na platforme ClusterFuzz, vytvorenej na koordináciu práce klastrov fuzzingového testovania, a je šírený pod licenciou Apache 2.0.
Je pozoruhodné, že po zavedení služby OSS-Fuzz spoločnosťou Google v roku 2016 bolo do programu nepretržitého fuzzingového testovania zapojených viac ako 500 dôležitých otvorených projektov. Na základe vykonaných kontrol bolo odstránených viac ako 6500 potvrdených zraniteľností a opravených viac ako 21 tisíc chýb. ClusterFuzzLite pokračuje vo vývoji mechanizmov fuzzingového testovania s možnosťou včasného odhaľovania problémov v štádiu recenzovania navrhovaných zmien. ClusterFuzzLite už bol implementovaný do procesov recenzovania zmien v projektoch systemd a curl a umožnil odhaľovať chyby, ktoré boli prehliadnuté statickými analyzátormi a lintermi používanými v počiatočnej fáze kontroly nového kódu.
ClusterFuzzLite podporuje testovanie projektov v jazykoch C, C++, Java (a iných jazykoch na báze JVM), Go, Python, Rust a Swift. Fuzzingové testovanie sa vykonáva pomocou enginu LibFuzzer. Na odhaľovanie chýb v správe pamäte a anomálií môžu byť tiež využívané nástroje AddressSanitizer, MemorySanitizer a UBSan (UndefinedBehaviorSanitizer).
Hlavné možnosti ClusterFuzzLite: rýchla kontrola navrhovaných zmien na odhaľovanie chýb pred akceptovaním kódu; nahrávanie správ o podmienkach vzniku pádov; možnosť prechodu k podrobnejšiemu fuzzingovému testovaniu na odhaľovanie hlbších chýb, ktoré sa neobjavili po kontrole zmien kódu; generovanie reportov o pokrytí na posúdenie pokrytia kódu pri testovaní; modulárna architektúra umožňujúca výber potrebnej funkcionality.
Pripomíname, že pri fuzzingovom testovaní sa generuje tok všetkých možných náhodných kombinácií vstupných údajov, približných k reálnym dátam (napríklad html stránky s náhodnými parametrami značiek, archívy alebo obrázky s anomálnymi záhlaviami atď.), a zaznamenávajú sa možné zlyhania počas ich spracovania. Ak nejaká sekvencia vedie k pádu alebo nezodpovedá očakávanej reakcii, takéto správanie pravdepodobne naznačuje chybu alebo zraniteľnosť.
Zdroj: opennet.ru
