The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

06.12.2024 16:19

Компания 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.
  • Возможность адаптации системы для задач, не связанных с уязвимостями, например, для выявления клонирования кода или использования лицензированного кода в других проектах.


  1. Главная ссылка к новости (https://security.googleblog.co...)
  2. OpenNews: Cloudflare представил открытый сканер сетевой безопасности Flan Scan
  3. OpenNews: Google использовал большую языковую модель для выявления уязвимости в SQLite
  4. OpenNews: Google опубликовал OSV-Scanner, сканер уязвимостей, учитывающий зависимости
  5. OpenNews: Google раскрыл подробности обеспечения безопасности в своей инфраструктуре
  6. OpenNews: Google опубликовал код сканера безопасности Tsunami
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62358-vanir
Ключевые слова: vanir, security, vulnerability, google
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (17) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.5, Аноним (5), 17:09, 06/12/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +5 +/
     

     ....ответы скрыты (4)

  • 1.6, Аноним (6), 17:11, 06/12/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Мне бы инструмент, который по бинарному файлу либы бы выдал точный коммит, из которого она собрана. При этом допущения:
    * либа собрана из какого-то комиита из указанного репозитория
    * сборочная система и версии зависимостей, включая те, что статически или на уровне хедера линкованы, неизвестны (система должна сама идентифицировать статически-линкованные и header-only либы и их версии)
    * индекс специально для бинарников не создавался
     
     
  • 2.7, Аноним (6), 17:13, 06/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если что - для целей апгрейда либ в старой системе Android без полной пересборки оной из исходников.
     
     
  • 3.10, myster (ok), 17:34, 06/12/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если sha коммита не записывается в виде метаданных в саму либу, то само по себе значение sha бесполезно, т.к. оно может быть постоянно разное и зависит от других изменений в Git репозитории (не связанных именно с этой либой). То есть, это всё-равно, что измерять среднюю температуру по больнице.
     
  • 2.8, Аноним (8), 17:14, 06/12/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Такого инструмента не существует.
     
     
  • 3.9, Аноним (6), 17:22, 06/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Жаль. В теори можно было бы реализовать как определение различий в именах символов из исходников, после чего извлечения символов из бинарей, определение по набору символов набора подходящих коммитов, после чего определение тех символов, которые поменялись, и извлечение из бинаря уже кода и данных по изменившимся символам (в первую очередь - констант и размеров), и матчинг их к изменениям в исходникам.
     
     
  • 4.26, Семен (??), 20:17, 06/12/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это не возможно, потому что при разных флагах компилятора и линковщика, уже код будет различаться, не говоря про разные компилятора. Почитайте как работают линкеры. Имена символов манглятся или вовсе удаляются, остаются только имена экспортируемых функций. Для поиска багов есть git bisect и ничего вам не мешает смотреть историю коммитов по конкретному файлу, и найти смещение в бинарнике и дисассемблировать.
     
  • 2.22, Rock (?), 19:02, 06/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Мне бы инструмент, который по бинарному файлу либы бы выдал точный коммит, из которого она собрана.

    Вроде, для этого существует цифровая подпись. Сейчас все более-менее серьезные лавки свои бинарники подписывают.

     
     
  • 3.24, Аноним (6), 19:32, 06/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >для этого существует цифровая подпись

    ... но это неточно ... :)

     
  • 2.25, Семен (??), 20:04, 06/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    1 В большинстве библиотек есть API для получения версии библиотеки, версия в бо... большой текст свёрнут, показать
     
  • 2.30, Аноним (30), 04:03, 07/12/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А что делать, если два коммита идентичны?

    И нет, это невозможно, потому что, например, в хедер-онли библиотеке может быть всё, что угодно, в частности, всё, что вообще выключает весь код из вашего проекта.

     
  • 2.38, Neon (??), 01:15, 10/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Странная хотелка. Собрать бинарник можно и без всяких репозиториев. В принципе без них обойтись
     
  • 2.39, Neon (??), 01:17, 10/12/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Надо больше хотеть.))) Чтобы по бинарнику получать полную персональную инфу на человека, его собравшего. Фотографию, место жительства, текущее его местонахождение.))) Чтоб было кому за кривой код морду бить.)))
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру