Společnost Google představila projekt ClusterFuzzLite, který umožňuje organizovat fuzzingové testování kódu pro včasné odhalování potenciálních zranitelností během práce systémů kontinuální integrace. V současné době lze ClusterFuzz použít k automatizaci fuzzingového testování pull-žádostí v GitHub Actions, v Google Cloud Build a v Prow, ale v budoucnu se očekává podpora i dalších CI systémů. Projekt je založen na platformě ClusterFuzz, vytvořené pro koordinaci práce klastrů fuzzingového testování, a šíří se pod licencí Apache 2.0.
Je zaznamenáno, že po zavedení služby OSS-Fuzz společností Google v roce 2016 bylo v programu kontinuálního fuzzingového testování přijato více než 500 důležitých otevřených projektů. Na základě provedených kontrol bylo odstraněno více než 6500 potvrzených zranitelností a opraveno více než 21 tisíc chyb. ClusterFuzzLite pokračuje ve vývoji mechanismů fuzzingového testování s možností včasného odhalení problémů v fázi přezkoumání navrhovaných změn. ClusterFuzzLite již byl implementován do procesů přezkoumání změn v projektech systemd a curl a umožnil odhalovat chyby, které byly přehlédnuty statickými analyzátory a lintery používanými v počáteční fázi kontroly nového kódu.
ClusterFuzzLite podporuje kontrolu projektů v jazycích C, C++, Java (a dalších jazycích na bázi JVM), Go, Python, Rust a Swift. Fuzzingové testování se provádí pomocí enginu LibFuzzer. K odhalení chyb v práci s pamětí a anomálií mohou být rovněž vyžádány nástroje AddressSanitizer, MemorySanitizer a UBSan (UndefinedBehaviorSanitizer).
Hlavní možnosti ClusterFuzzLite: rychlá kontrola navrhovaných změn k nalezení chyb před přijetím kódu; nahrávání zpráv o podmínkách vzniku pádů; možnost přechodu k podrobnějšímu fuzzingovému testování k odhalení hlubších chyb, které se neobjevily po kontrole změny kódu; generování coverage zpráv pro hodnocení pokrytí kódu během testování; modulární architektura umožňující výběr potřebné funkčnosti.
Připomínáme, že při fuzzingovém testování dochází k generování toku nejrůznějších náhodných kombinací vstupních dat, která jsou podobná skutečným datům (například html stránky s náhodnými parametry tagů, archivy nebo obrázky s anomálními hlavičkami atd.), a k zaznamenávání možných chyb během jejich zpracování. Pokud nějaká sekvence způsobí pád nebo neodpovídá očekávané reakci, pak to s vysokou pravděpodobností naznačuje chybu nebo zranitelnost.
Zdroj: opennet.ru
