Разработчики из Google представили открытый проект статического анализатора для выявления неисправленных уязвимостей под названием Vanir. Исходный код решения написан на и C++ и опубликован на GitHub под лицензией BSD 3-Clause.
Проект статического анализатора Vanir подходит для автоматического выявления не применённых к коду патчей, устраняющих уязвимости.
Решение Vanir использует базу сигнатур с информацией об известных уязвимостях и патчах для устранения этих уязвимостей. Подобная БД ведётся Google с июля 2020 года и охватывает проекты, связанные с платформой Android, включая ядро Linux. В настоящее время поддерживается проверка исходного кода на языках C, C++ и Java.
По данным OpenNET, проект Vanir состоит из двух частей: генератора сигнатур и детектора пропущенных патчей. Генератор формирует сигнатуру для идентификации отсутствия исправления на основе описания уязвимости в формате OSV и ссылки на патч или коммит, устраняющий уязвимость. В текущем виде поддерживается обработка коммитов в репозиториях googlesource.com и git.codelinaro.org, но поддержка других сервисов может легко быть добавлена через подключение обработчика для извлечения кода.
Детектор проекте Vanir выполняет разбор кода в указанном репозитории и определяет отсутствие в нём исправлений, описанных в предоставленных сигнатурах. На современном ПК с 16-ядерным CPU сканирование дерева исходных текстов платформы Android занимает 10-20 минут. На выходе формируется отчёт со списком потенциально неисправленных уязвимостей и ссылками на связанные с ними позиции в коде, CVE-идентификаторы и патчи.
Основные достоинства инструментария Vanir:
возможность выявления неисправленных уязвимостей в сторонних ответвлениях, модификациях и заимствованиях кода, напрямую не связанных с основным проектом. В контексте Android инструментарий может использоваться для проверки применения исправлений в вариантах платформы Android, развиваемых OEM-производителями устройств;
выполнение проверки лишь на основе анализа имеющегося кода, без привязки к метаданным, таким как номер версии, история коммитов и SBOM (Software Bill Of Materials);
поддержка автоматической генерации сигнатур при использовании появляющейся в публичных источниках информации об уязвимостях и публикуемых сопровождающих патчей;
более высокая производительность проверки на основе статического анализа исходного кода по сравнению с инструментами для динамического анализа и проверки бинарных сборок;
самодостаточность — возможность развернуть инфраструктуру на своих системах без обращения к внешним сервисам;
наличие готовой актуальной базы сигнатур, сопровождаемой командой Google Android Security Team;
поддержка подключения к системам непрерывной интеграции и доставки (CI/CD). Возможность интеграции в другие проекты с использованием Vanir в форме библиотек на языке Python.