Google представив систему fuzzing-тестування ClusterFuzzLite

Компанія Google представила проект ClusterFuzzLite, що дозволяє організувати fuzzing-тестування коду для раннього виявлення потенційних уразливостей на етапі роботи систем безперервної інтеграції. В даний час ClusterFuzz може використовуватися для автоматизації fuzzing-тестування pull-запитів у GitHub Actions, Google Cloud Build і Prow, але надалі очікується поява підтримки та інших CI-систем. Проект базується на платформі ClusterFuzz, створеній для координації кластерів fuzzing-тестування, і поширюються під ліцензією Apache 2.0.

Зазначається, що після впровадження у 2016 році компанією Google сервісу OSS-Fuzz у програму безперервного fuzzing-тестування було прийнято понад 500 відкритих проектів. На основі проведених перевірок було усунено понад 6500 підтверджених уразливостей та виправлено понад 21 тисячу помилок. ClusterFuzzLite продовжує розвиток механізмів fuzzing-тестування можливістю раннього виявлення проблем на стадії рецензування запропонованих змін. ClusterFuzzLite вже впроваджений у процеси рецензування змін у проектах systemd та curl, і дозволив виявляти помилки, пропущені статичними аналізаторами та linter-ами, що застосовувалися на початковому етапі перевірки нового коду.

ClusterFuzzLite підтримує перевірку проектів мовами C, C++, Java (та інших мов на базі JVM), Go, Python, Rust та Swift. Fuzzing-тестування проводиться за допомогою движка LibFuzzer. Для виявлення помилок роботи з пам'яттю та аномалій також можуть викликатися інструменти AddressSanitizer, MemorySanitizer та UBSan (UndefinedBehaviorSanitizer).

Основні можливості ClusterFuzzLite: швидка перевірка пропонованих змін для знаходження помилок на етапі до прийняття коду; завантаження звітів про умови виникнення крахів; можливість переходу до більш розширеного fuzzing-тестування для виявлення глибших помилок, які не спливли після перевірки зміни коду; генерація coverage-звітів для оцінки охоплення коду під час тестування; модульна архітектура, що дозволяє вибирати потрібну функціональність.

Нагадаємо, що при fuzzing-тестуванні здійснюється генерація потоку всіляких випадкових комбінацій вхідних даних, наближених до реальних даних (наприклад, html-сторінки з випадковими параметрами тегів, архіви або зображення з аномальними заголовками тощо), і фіксація можливих збоїв у процесі їхня обробка. Якщо якась послідовність призводить до краху або не відповідає очікуваної реакції, така поведінка з високою ймовірністю свідчить про помилку чи вразливість.

Джерело: opennet.ru

Додати коментар або відгук