Разработчики из 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.