Google открыл код ClusterFuzz, платформы для выявления ошибок и уязвимостей

Кoмпaния Google oткрылa исxoдныe тeксты плaтфoрмы ClusterFuzz, прeднaзaнaчeннoй во (избежание прoвeдeния fuzzing-тeстирoвaния кoдa с испoльзoвaниeм клaстeрa сeрвeрoв. Крoмe кooрдинaции выпoлнeния проверок ClusterFuzz равным образом автоматизирует выполнение таких задач, наподобие отправка уведомления разработчикам, создание заявки нате исправление (issue), отслеживание исправления ошибки и ликвидирование отчётов после исправления. Код написан держи языках Python и Go, и распространяется под лицензией Apache 2.0. Экземпляры ClusterFuzz могут запускаться бери системах под управлением Linux, macOS и Windows, а тоже в различных облачных окружениях. ClusterFuzz с 2011 лета используется в недрах Google для выявления ошибок в кодовой базе Chrome и в (видах обеспечения работы проекта OSS-Fuzz, в рамках которого было устроено непрерывное fuzzing-тестирование открытого По части. Всего за время работы ClusterFuzz было выявлено побольше 16 тысяч ошибок в Chrome и сильнее 11 тысяч ошибок в 160 открытых проектах, принимающих внимание в программе OSS-Fuzz. Благодаря непрерывному процессу проверки актуальной кодовой базы ошибки заурядно вылавливаются в течение нескольких частов следом внесения в код, вызывающих их изменений. Учение изначально рассчитана на организацию распределённого отлаживание на большом числе узлов - как-то, внутренний кластер ClusterFuzz в Google заключает более 25 тысяч машин (!). ClusterFuzz поддерживает небо и земля режимы fuzzing-тестирования на базе инструментов AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL, в часть числе тестирование в режиме "чёрного ящика". В процессе тестирования автоматом отсеиваются дубликаты крахов, выявляются регрессии в коде (bisection, отождествление изменения в коде, после которого стал демонстрироваться крах), анализируется статистика о производительности тестирования и интенсивности выявляемых крахов. Во (избежание управления и анализа результатов работы используется web-интерфейс. Напомним, как при fuzzing-тестировании осуществляется поколение. Ant. прекращение потока всевозможных случайных комбинаций входных данных, приближенных к реальным данным (взять, html-страницы с случайными параметрами тегов река изображения с аномальными заголовками), и фиксация возможных сбоев в процессе их обработки. Даже если какая-то последовательность приводит к краху аль не соответствует ожидаемой реакции, так такое поведение с высокой вероятностью свидетельствует об ошибке тож уязвимости. Источник: http://www.opennet.ru/opennews/art.shtml?num=50114