Nedávno Google představen prostřednictvím příspěvku na blogu projekt ClusterFuzzLite, který umožňuje organizovat fuzzing testy kódu pro včasnou detekci potenciálních zranitelností ve fázi provozu systémů kontinuální integrace.
V současné době ClusterFuzz lze použít k automatizaci fuzz testování požadavků na stažení v akcích GitHubu, Google Cloud Build and Prow, ale očekává se, že v budoucnu bude kompatibilní s dalšími IC systémy. Projekt je založen na platformě ClusterFuzz vytvořené pro koordinaci práce fuzzing testovacích clusterů a je distribuován pod licencí Apache 2.0.
Je třeba poznamenat, že po představení služby OSS-Fuzz společností Google v roce 2016 bylo do programu kontinuálního testování fuzzing přijato více než 500 velkých open source projektů. Z provedených kontrol bylo odstraněno více než 6.500 21.000 potvrzených zranitelností a opraveno více než XNUMX XNUMX chyb.
O ClusterFuzzLite
ClusterFuzzLite pokračuje ve vývoji fuzzing testovacích mechanismů se schopností identifikovat problémy dříve ve fázi vzájemného hodnocení navrhovaných změn. ClusterFuzzLite již byl představen v procesech revize změn v projektech systemd a curla umožnila identifikovat chyby, které nebyly zjištěny ve statických analyzátorech a lintrech, které byly použity v počáteční fázi ověřování nového kódu.
Dnes s potěšením oznamujeme ClusterFuzzLite, kontinuální fuzzing řešení, které běží jako součást pracovních postupů CI / CD, aby nalezlo zranitelnosti rychleji než kdy předtím. Pomocí několika řádků kódu mohou uživatelé GitHubu integrovat ClusterFuzzLite do svého pracovního postupu a fuzz pull požadavky zachytit chyby ještě před jejich vytvořením, čímž se zlepší celková bezpečnost dodavatelského řetězce softwaru.
Od jeho spuštění v roce 2016 bylo do programu Google OSS-Fuzz integrováno více než 500 kritických open source projektů, což vedlo k opravě více než 6.500 21.000 zranitelností a XNUMX XNUMX funkčních chyb. ClusterFuzzLite jde ruku v ruce s OSS-Fuzz a detekuje regresní chyby mnohem dříve ve vývojovém procesu.
ClusterFuzzLite podporuje ověřování projektů v C, C++, Java (a další jazyky založené na JVM), Go, Python, Rust a Swift. Fuzzing testy se provádějí pomocí enginu LibFuzzer. K detekci chyb a anomálií paměti lze také zavolat nástroje AddressSanitizer, MemorySanitizer a UBSan (UndefinedBehaviorSanitizer).
Z klíčových funkcí ClusterFuzzLite zdůrazňuje například rychlé ověření navrhovaných změn najít chyby ve fázi před přijetím kódu, stejně jako stahování zpráv o podmínkách výskytu havárií, schopnost přestěhovat se pokročilejší fuzzing testy pro identifikaci hlubších chyb, které se neobjevily po ověření změny kódu, také generování reportů pokrytí pro vyhodnocení pokrytí kódu během testů a modulární architektura, která umožňuje zvolit požadovanou funkcionalitu.
Velké projekty včetně systemd a curlya používají ClusterFuzzLite během kontroly kódu s pozitivními výsledky. Podle Daniela Stenberga, autora curl, „Když se lidští recenzenti dohodnou a schválí kód a jejich statické analyzátory kódu a linters nemohou detekovat žádné další problémy, fuzzing je to, co vás posune na další úroveň vyspělosti a robustnosti kódu. OSS-Fuzz a ClusterFuzzLite nám pomáhají udržovat curl jako kvalitní projekt po celý den, každý den a při každém zapojení.
Musíme si pamatovat, že fuzzing testy generují proud všech druhů náhodných kombinací vstupních dat blízkých skutečným datům (např. html stránky s náhodnými parametry tagů, soubory nebo obrázky s abnormálními hlavičkami atd.) a opravují případné chyby v procesu.
Pokud některá sekvence selže nebo neodpovídá očekávané reakci, toto chování s největší pravděpodobností znamená chybu nebo zranitelnost.
Konečně pokud máte zájem o tom vědět více, můžete zkontrolovat podrobnosti Na následujícím odkazu.