Google наскоро пусна OSV-скенер, инструмент, който дава лесен достъп на разработчиците с отворен код за проверка за неотстранени уязвимости в кода и приложенията, като се вземе предвид цялата верига от зависимости, свързани с кода.
OSV-Scanner позволява откриване на ситуации, в които дадено приложение става уязвимо поради проблеми в една от библиотеките, използвани като зависимост. В този случай уязвимата библиотека може да се използва индиректно, т.е. извикана чрез друга зависимост.
Миналата година положихме усилия да подобрим класификацията на уязвимостите за разработчиците и потребителите на софтуер с отворен код. Това включваше публикуването на схемата за уязвимости с отворен код (OSV) и стартирането на услугата OSV.dev, първата разпределена база данни за уязвимости с отворен код. OSV позволява на всички различни екосистеми с отворен код и бази данни за уязвимости да публикуват и използват информация в прост, точен и машинно четим формат.
Софтуерните проекти често се изграждат върху планина от зависимости: вместо да започват от нулата, разработчиците включват външни софтуерни библиотеки в проекти и добавяне на допълнителна функционалност. Пакетите с отворен код обачеo често съдържат недокументирани кодови фрагменти които са изтеглени от други библиотеки. Тази практика създава какво е известно като „преходни зависимости“ в софтуера и означава, че може да съдържа множество нива на уязвимост, които са трудни за проследяване ръчно.
Преходните зависимости се превърнаха във нарастващ източник на риск за сигурността с отворен код през последната година. Скорошен доклад от Endor Labs установи, че 95% от уязвимостите с отворен код са в транзитивни или косвени зависимости, а отделен доклад от Sonatype също подчерта, че транзитивните зависимости представляват шест от седем уязвимости, засягащи отворения код.
Според Google, новият инструмент ще започне с търсене на тези преходни зависимости чрез анализиране на манифести, софтуерни спецификации на материали (SBOM), където има такива, и хешове на ангажименти. След това ще се свърже с базата данни за уязвимости с отворен код (OSV), за да покаже съответните уязвимости.
OSV скенер може автоматично да сканира рекурсивно дърво на директории, идентифициращо проекти и приложения чрез наличието на git директории (информация за уязвимости, определени чрез хеш анализ на ангажименти), SBOM (софтуерна спецификация във формати SPDX и CycloneDX), манифести или блокиране на администратори от архивни пакети като Yarn , NPM, GEM, PIP и Cargo. Той също така поддържа сканиране на подпълването на изображения на докер контейнери, изградени на базата на пакети от хранилищата на Debian.
OSV-Scanner е следващата стъпка в това усилие, тъй като предоставя официално поддържан интерфейс към OSV базата данни, която свързва списъка със зависимости на проекта с уязвимостите, които ги засягат.
La информацията за уязвимостите се взема от базата данни на OSV (Open Source Vulnerabilities), който обхваща информация относно проблеми със сигурността в Сrates.io (Rust), Go, Maven, NPM (JavaScript), NuGet (C#), Packagist (PHP), PyPI (Python), RubyGems, Android, Debian и Alpine, както и данни за уязвимости на ядрото на Linux и доклади за уязвимости на проекти, хоствани на GitHub.
Базата данни OSV отразява състоянието на коригиране на проблема, потвърждения с появата и корекцията на уязвимостта, диапазона от версии, засегнати от уязвимостта, връзки към хранилището на проекта с кода и известието за проблема. Предоставеният API ви позволява да проследите проявлението на уязвимост на ниво ангажимент и етикет и да анализирате излагането на проблема от производни продукти и зависимости.
Накрая си струва да споменем, че кодът на проекта е написан на Go и се разпространява под лиценза Apache 2.0. Можете да проверите повече подробности за него в следната връзка.
Разработчиците могат да изтеглят и изпробват OSV-Scanner от уебсайта osv.dev или да използват проверката за уязвимост на OpenSSF Scorecard за автоматично стартиране на скенера в проект на GitHub.