Итоги пяти месяцев изучения безопасности СПО проектом OSS-Fuzz
Компания Google подвела первые итоги работы проекта OSS-Fuzz, созданного для организации непрерывного fuzzing-тестирования открытого ПО с целью выявления возможных проблем с безопасностью. За пять месяцев существования проекта было организовано тестирование 47 открытых проектов, в результате которого было выявлено более тысячи ошибок, из которых 264 являются потенциальными уязвимостями.
Из подтверждённых уязвимостей отмечается 10 проблем во FreeType2, 17 в FFmpeg, 33 в LibreOffice, 8 в SQLite, 10 в GnuTLS, 25 в PCRE2, 9 в gRPC и 7 в Wireshark. Благодаря организации непрерывного тестирования некоторые из ошибок удалось обнаружить спустя лишь несколько часов после внесения регрессивных изменений в кодовую базу. Кроме ошибок, которые непосредственно могут привести к уязвимостям, в ходе применения OSS-Fuzz также выявлено более 300 проблем, приводящих к прекращению обработки из-за истечения таймаута или исчерпания доступной памяти, которые не всегда рассматриваются как ошибки, но могут служить как отправная точка для поиска более серьёзных проблем.
Для стимулирования разработки сценариев проверки в OSS-Fuzz новых открытых проектов, компания Google объявила о введении в строй программы выплаты вознаграждений за интеграцию значимых и популярных открытых проектов. Компания Google готова заплатить $1000 за начальную интеграцию и до $20,000 за расширенную интеграцию, подразумевающую организацию автоматизированную проверку кода из репозиториев с охватом (code coverage) проверкой более 80% кода и интеграцией с основной инфраструктурой тестирования и обработки ошибок.
Напомним, что при fuzzing-тестировании осуществляется генерация потока всевозможных случайных комбинаций входных данных, приближенных к реальным данным (например, html-страницы с случайными параметрами тегов или изображения с аномальными заголовками), и фиксация возможных сбоев в процессе их обработки. Если какая-то последовательность приводит к краху или не соответствует ожидаемой реакции, то такое поведение с высокой вероятностью свидетельствует об ошибке или уязвимости.
© OpenNet