Ipinakilala ng Google ang ClusterFuzzLite fuzzing testing system

Ipinakilala ng Google ang proyektong ClusterFuzzLite, na nagbibigay-daan sa pag-aayos ng fuzzing testing ng code para sa maagang pagtuklas ng mga potensyal na kahinaan sa panahon ng pagpapatakbo ng tuluy-tuloy na integration system. Sa kasalukuyan, magagamit ang ClusterFuzz para i-automate ang fuzz testing ng mga pull request sa GitHub Actions, Google Cloud Build, at Prow, ngunit inaasahan ang suporta para sa iba pang CI system sa hinaharap. Ang proyekto ay batay sa platform ng ClusterFuzz, na nilikha upang i-coordinate ang gawain ng mga fuzzing testing cluster, at ipinamamahagi sa ilalim ng lisensya ng Apache 2.0.

Napansin na pagkatapos ipakilala ng Google ang serbisyo ng OSS-Fuzz noong 2016, higit sa 500 mahahalagang open source na proyekto ang tinanggap sa tuluy-tuloy na programa ng pagsubok sa fuzzing. Batay sa mga pagsubok na isinagawa, higit sa 6500 kumpirmadong kahinaan ang naalis at higit sa 21 libong mga pagkakamali ang naitama. Ang ClusterFuzzLite ay patuloy na bumubuo ng mga mekanismo ng hindi kapani-paniwalang pagsubok na may kakayahang tumukoy ng mga problema nang mas maaga sa yugto ng pagsusuri ng mga iminungkahing pagbabago. Naipatupad na ang ClusterFuzzLite sa mga proseso ng pagsusuri ng pagbabago sa mga proyekto ng systemd at curl, at naging posible na matukoy ang mga error na hindi nakuha ng mga static na analyzer at linter na ginamit sa unang yugto ng pagsuri ng bagong code.

Sinusuportahan ng ClusterFuzzLite ang pagsusuri ng proyekto sa C, C++, Java (at iba pang mga wikang nakabatay sa JVM), Go, Python, Rust, at Swift. Isinasagawa ang fuzzing testing gamit ang LibFuzzer engine. Ang mga tool na AddressSanitizer, MemorySanitizer, at UBSan (UndefinedBehaviorSanitizer) ay maaari ding tawagan upang matukoy ang mga error at anomalya sa memorya.

Mga pangunahing tampok ng ClusterFuzzLite: mabilis na pagsusuri ng mga iminungkahing pagbabago upang mahanap ang mga error bago tanggapin ang code; pag-download ng mga ulat sa mga kondisyon ng pag-crash; ang kakayahang lumipat sa mas advanced na fuzzing testing upang matukoy ang mas malalalim na error na hindi lumabas pagkatapos suriin ang mga pagbabago sa code; pagbuo ng mga ulat sa saklaw upang masuri ang saklaw ng code sa panahon ng pagsubok; modular na arkitektura na nagpapahintulot sa iyo na piliin ang kinakailangang pag-andar.

Alalahanin natin na ang fuzzing testing ay kinabibilangan ng pagbuo ng stream ng lahat ng uri ng random na kumbinasyon ng input data na malapit sa totoong data (halimbawa, mga html page na may random na mga parameter ng tag, archive o mga larawang may mga maanomalyang pamagat, atbp.), at posibleng pag-record mga kabiguan sa proseso ng kanilang pagproseso. Kung ang isang sequence ay nag-crash o hindi tumutugma sa inaasahang tugon, ang pag-uugali na ito ay malamang na magpahiwatig ng isang bug o kahinaan.

Pinagmulan: opennet.ru

Magdagdag ng komento