Компания Google запустила платформу с открытым исходным кодом OSV (Open Source Vulnerabilities). Она создана для поиска и закрытия уязвимостей в свободном ПО.
Знай, предотвращай, исправляй
В 2016 году Google запустила проект OSS-Fuzz. Это система автоматизированного фаззинг-тестирования, которая позволяет подавать на вход модели неожиданные, случайные или заведомо некорректные данные.
В OSS-Fuzz компания впервые реализовала концепцию «Знай, предотвращай, исправляй». В системе протестировали более 380 проектов с открытым исходным кодом, написанных на C и C++. Часть данных об уязвимостях OSS-Fuzz легла в основу OSV.
Проект для фаззингового тестирования есть и у Microsoft.
Суть проекта OSV
OSV — это актуальная база описанных уязвимостей в программных продуктах и компонентах с открытым исходным кодом. Через API сервиса вы можете автоматизировать процесс создания запросов о потенциальных уязвимостях.
В ответах будет указана версия репозитория с кодом. Таким образом, один и тот же запрос, сделанный в разное время, может дать разные результаты.
Разработчики пояснили: чтобы эффективно решать проблемы, каждой уязвимости в свободном ПО присваивается уникальный OSV-идентификаторы. Также в базе указывается расширенная информация: диапазон версий, в которых присутствует уязвимость, статус ее исправления, коммиты, которые решают проблему, ссылки на репозитории.
Если уязвимость занесена в систему, но нельзя точно сказать, в какой версии она появилась, OSV запрашивает тестовые данные и список шагов для воспроизведения. Затем система в автоматическом режиме сканирует код и находит коммиты, которые могли привести к проблеме.
Зачем нужна OSV
Пользователи открытого ПО часто не могут сопоставить CVE-записи об уязвимостях (Common Vulnerabilities and Exposures) с версиями пакетов. Это происходит из-за того, что схемы управления версиями в существующих стандартах, например, в CPE (Common Platform Enumeration), не соответствуют данным в популярных системах контроля версий (Git, Subversion и др.). Здесь обычно указываются либо номера версий и теги, либо хэши фиксации уязвимостей. В результате пользователи могут лишиться данных или получить неожиданные побочные эффекты от используемых компонентов.
Благодаря новой платформе разработчики, которые занимаются поддержкой проектов с открытым исходным кодом, будут раньше узнавать об уязвимостях и эффективнее закрывать их. Если программист увидит, что проблема есть, но ею уже кто-то занимается, то он сможет сосредоточиться на других задачах.
Автоматизация работы с уязвимостями должна повысить качество открытого ПО и избавить разработчиков от существенной части рутинной работы и ручных проверок.
Кроме того, пользователи будут видеть, какие версии затрагивает уязвимость. Соответственно, они смогут либо откатиться до предыдущих состояний репозитория, либо обновить ПО до версий, в которых проблема уже решена — в зависимости от состояния проекта.