Проект состоит из двух частей — генератора сигнатур и детектора пропущенных патчей. Генератор формирует сигнатуру для идентификации отсутствия исправления на основе описания уязвимости в формате OSV и ссылки на патч или коммит, устраняющий уязвимость. В текущем виде поддерживается обработка коммитов в репозиториях googlesource.com и git.codelinaro.org, но поддержка других сервисов может легко быть добавлена через подключение обработчика для извлечения кода.
Детектор выполняет разбор кода в указанном репозитории и определяет отсутствие в нём исправлений, описанных в предоставленных сигнатурах. На современном ПК с 16-ядерным CPU сканирование дерева исходных текстов платформы Android занимает 10-20 минут. На выходе формируется отчёт со списком потенциально неисправленных уязвимостей и ссылками на связанные с ними позиции в коде, CVE-идентификаторы и патчи.
Достоинства предложенного инструментария:
- Возможность выявления неисправленных уязвимостей в сторонних ответвлениях, модификациях и заимствованиях кода, напрямую не связанных с основным проектом. В контексте Android инструментарий может использоваться для проверки применения исправлений в вариантах платформы Android, развиваемых OEM-производителями устройств.
- Выполнение проверки лишь на основе анализа имеющегося кода, без привязки к метаданным, таким как номер версии, история коммитов и SBOM (Software Bill Of Materials).
- Поддержка автоматической генерации сигнатур, используя появляющуюся в публичных источниках информацию об уязвимостях и публикуемые сопровождающими патчи.
- Более высокая производительность проверки на основе статического анализа исходного кода по сравнению с инструментами для динамического анализа и проверки бинарных сборок.
- Самодостаточность — возможность развернуть инфраструктуру на своих системах без обращения к внешним сервисам.
- Наличие готовой актуальной базы сигнатур, сопровождаемой командой Google Android Security Team.
- Поддержка подключения к системам непрерывной интеграции и доставки
(CI/CD). Возможность интеграции в другие проекты с использованием Vanir в форме библиотек на языке Python.
Источник: http://www.opennet.ru/opennews/art.shtml?num=62358