Главная | IT | Google опубликовал Vanir, статический анализатор для выявления неисправленных уязвимостей

Google опубликовал Vanir, статический анализатор для выявления неисправленных уязвимостей

Компания Google представила новый открытый проект Vanir, развивающий статический анализатор для автоматического выявления не применённых к коду патчей, устраняющих уязвимости. Vanir использует базу сигнатур с информацией об известных уязвимостях и патчах для устранения этих уязвимостей. Подобная БД ведётся Google с июля 2020 года и охватывает 95% уязвимостей в проектах, связанных с платформой Android, включая ядро Linux. В настоящее время поддерживается проверка исходного кода на языках C, C++ и Java. Код Vanir написан на языках С++ и Python, и распространяется под лицензией BSD.

Проект состоит из двух частей – генератора сигнатур и детектора пропущенных патчей. Генератор формирует сигнатуру для идентификации отсутствия исправления на основе описания уязвимости в формате OSV и ссылки на патч или коммит, устраняющий уязвимость. В текущем виде поддерживается обработка коммитов в репозиториях googlesource.com и git.codelinaro.org, но поддержка других сервисов может легко быть добавлена через подключение обработчика для извлечения кода.

Детектор выполняет разбор кода в указанном репозитории и определяет отсутствие в нём исправлений, описанных в предоставленных сигнатурах.
Реализация основана на алгоритмах автоматического уточнения сигнатур и анализа множественных шаблонов, предложенных в исследовательских проектах ReDeBug и VUDDY. На современном ПК с 16-ядерным CPU сканирование дерева исходных текстов платформы Android по OSV-базе с информацией о более чем 2000 уязвимостей занимает 10-20 минут. На выходе формируется отчёт со списком потенциально неисправленных уязвимостей и ссылками на связанные с ними позиции в коде, CVE-идентификаторы и патчи. По статистике, собранной за два года использования Vanir в Google, уровень ложных срабатываний составляет 2.72%.

Достоинства предложенного инструментария:

  • Возможность выявления неисправленных уязвимостей в сторонних ответвлениях, модификациях и заимствованиях кода, напрямую не связанных с основным проектом. В контексте Android инструментарий может использоваться для проверки применения исправлений в вариантах платформы Android, развиваемых OEM-производителями устройств.
  • Выполнение проверки лишь на основе анализа имеющегося кода, без привязки к метаданным, таким как номер версии, история коммитов и SBOM (Software Bill Of Materials).
  • Поддержка автоматической генерации сигнатур, используя появляющуюся в публичных источниках информацию об уязвимостях и публикуемые сопровождающими патчи.
  • Более высокая производительность проверки на основе статического анализа исходного кода по сравнению с инструментами для динамического анализа и проверки бинарных сборок.
  • Самодостаточность – возможность развернуть инфраструктуру на своих системах без обращения к внешним сервисам.
  • Наличие готовой актуальной базы сигнатур, сопровождаемой командой Google Android Security Team.
  • Поддержка подключения к системам непрерывной интеграции и доставки
    (CI/CD). Возможность интеграции в другие проекты с использованием Vanir в форме библиотек на языке Python.

  • Возможность адаптации системы для задач, не связанных с уязвимостями, например, для выявления клонирования кода или использования лицензированного кода в других проектах.

Источник