Google-ը ներկայացրել է ClusterFuzzLite fuzzing թեստավորման համակարգը

Google-ը ներկայացրել է ClusterFuzzLite նախագիծը, որը թույլ է տալիս կազմակերպել կոդի fuzzing թեստավորում՝ շարունակական ինտեգրացիոն համակարգերի շահագործման ընթացքում հնարավոր խոցելիության վաղ հայտնաբերման համար։ Ներկայումս ClusterFuzz-ը կարող է օգտագործվել GitHub Actions-ում, Google Cloud Build-ում և Prow-ում ձգվող հարցումների fuzz փորձարկումն ավտոմատացնելու համար, սակայն ապագայում սպասվում է աջակցություն այլ CI համակարգերի համար: Նախագիծը հիմնված է ClusterFuzz հարթակի վրա, որը ստեղծվել է fuzzing փորձարկման կլաստերների աշխատանքը համակարգելու համար և տարածվում է Apache 2.0 լիցենզիայի ներքո:

Նշվում է, որ այն բանից հետո, երբ Google-ը 2016 թվականին ներկայացրեց OSS-Fuzz ծառայությունը, ավելի քան 500 բաց կոդով կարևոր նախագծեր ընդունվեցին շարունակական fuzzing թեստավորման ծրագրում։ Իրականացված թեստերի հիման վրա վերացվել է ավելի քան 6500 հաստատված խոցելիություն և շտկվել է ավելի քան 21 հազար սխալ։ ClusterFuzzLite-ը շարունակում է զարգացնել անորոշ փորձարկման մեխանիզմներ՝ առաջարկվող փոփոխությունների վերանայման փուլում ավելի վաղ խնդիրները հայտնաբերելու ունակությամբ: ClusterFuzzLite-ն արդեն ներդրվել է systemd և curl նախագծերում փոփոխությունների վերանայման գործընթացներում և հնարավորություն է տվել բացահայտել նոր կոդի ստուգման սկզբնական փուլում օգտագործվող ստատիկ անալիզատորների և լինտերների կողմից բաց թողնված սխալները:

ClusterFuzzLite-ն աջակցում է նախագծերի վերանայմանը C, C++, Java (և JVM-ի վրա հիմնված այլ լեզուներով), Go, Python, Rust և Swift լեզուներով: Fuzzing-ի փորձարկումն իրականացվում է LibFuzzer շարժիչի միջոցով: AddressSanitizer, MemorySanitizer և UBSan (UndefinedBehaviorSanitizer) գործիքները կարող են օգտագործվել նաև հիշողության սխալներն ու անոմալիաները հայտնաբերելու համար:

ClusterFuzzLite-ի հիմնական առանձնահատկությունները. առաջարկվող փոփոխությունների արագ ստուգում սխալները գտնելու համար նախքան ծածկագրի ընդունումը; վթարի պայմանների մասին հաշվետվությունների ներբեռնում; ավելի առաջադեմ խճճված փորձարկման անցնելու ունակություն՝ ավելի խորը սխալներ հայտնաբերելու համար, որոնք չեն երևացել կոդի փոփոխությունները ստուգելուց հետո. ծածկույթի հաշվետվությունների ստեղծում՝ փորձարկման ընթացքում ծածկագրի ծածկույթը գնահատելու համար. մոդուլային ճարտարապետություն, որը թույլ է տալիս ընտրել անհրաժեշտ ֆունկցիոնալությունը:

Հիշենք, որ անորոշ թեստավորումը ներառում է մուտքային տվյալների բոլոր տեսակի պատահական համակցությունների հոսքի ստեղծում, որոնք մոտ են իրական տվյալներին (օրինակ՝ html էջեր՝ պատահական պիտակների պարամետրերով, արխիվներ կամ պատկերներ՝ անոմալ վերնագրերով և այլն) և հնարավոր գրանցում։ ձախողումներ դրանց մշակման գործընթացում: Եթե ​​հաջորդականությունը խափանում է կամ չի համընկնում ակնկալվող արձագանքին, ապա այս վարքագիծը մեծ հավանականություն ունի ցույց տալու վրիպակ կամ խոցելիություն:

Source: opennet.ru

Добавить комментарий