nixp.ru v3.0

21 ноября 2024,
четверг,
13:28:24 MSK

6 декабря 2016, 08:10

Google выпустила инструмент OSS-Fuzz для постоянного fuzz-тестирования Open Source-проектов

1
Open Source-проекты, принятые в OSS-Fuzz
Open Source-проекты, принятые в OSS-Fuzz
Иллюстрация с сайта GitHub

1 декабря компания Google представила OSS-Fuzz — новый инструмент, разработанный в рамках Core Infrastructure Initiative (CII) для постоянного тестирования базового свободного программного обеспечения по технике fuzzing.

«Недавние истории из мира ИТ-безопасности подтверждают, что ошибки вроде переполнения буфера или use-after-free [обращения к памяти после её освобождения] могут иметь серьёзные и далекоидущие последствия, когда происходят в критически важном Open Source-софте. Эти ошибки не только серьёзны, но и сложны в обнаружении путём аудита кода, даже для опытных разработчиков. И тогда приходит на помощь fuzz testing. Техника fuzzing, генерируя случайные входные данные для проверяемой программы, быстро и последовательно выявляет ошибки и помогает их устранять», — поясняют назначение OSS-Fuzz разработчики из Google.

На данном (первом) этапе существования OSS-Fuzz, имеющего статус бета-версии, для реализации основной техники используется библиотека libFuzzer, которую в Google также применяют для fuzz-тестирования различных компонентов веб-браузера Chrome. Ей помогают утилиты Sanitizers, вместе с которыми инструмент помогает выявлять: проблемы в безопасности (переполнения буфера, use-after-free, плохие приведения типа, переполнения integer), баги в безопасности (утечки памяти, out-of-memory, сбои в утверждениях assertions) и иногда даже бреши в логике. Официально поддерживается код на языках C и C++ с примечанием, что «другие языки, поддерживаемые в LLVM, тоже могут работать».

С помощью OSS-Fuzz, который выполняет около 4 триллионов тестов в неделю, уже было обнаружено 150 багов в популярных Open Source-проектах. Разработчики Google призывают сделать fuzzing «стандартной частью разработки Open Source-проектов» и говорят о желании работать с широким сообществом разработчиков и тестеров, чтобы обнаружить и исправить ошибки в критически важных свободных приложениях, библиотеках и API.

Для запуска OSS-Fuzz подготовлены сценарии его развёртывания в Docker-контейнерах, реализована интеграция с Jenkins CI. В исходниках проекта, опубликованных на GitHub, представлен код на shell, Python и C++. Лицензия — Apache License 2.0.

Среди Open Source-проектов, уже принятых в репозиторий OSS-Fuzz для проверки кода, числятся coreutils, util-linux, zlib и libarchive, libxml2, libyaml, BoringSSL и OpenSSL, SQLite3 и PostgreSQL, Tor, FreeType 2, FFmpeg и многие другие.

P.S. Прошлым летом организация The Linux Foundation сообщала, что The Fuzzing Project стал одним из трёх проектов, получивших финансовые средства в рамках Core Infrastructure Initiative (CII) для поддержки важных инфраструктурных Open Source-проектов.

Постоянная ссылка к новости: http://www.nixp.ru/news/13876.html. Дмитрий Шурупов по материалам Google Online Security Blog.

fb twitter vk