Специалисты «Базис», сотрудники ИСП РАН и испытательной лаборатории «Фобос‑НТ» протестировали компоненты в инструментах виртуализации с открытым исходным кодом по всему миру, включая ПО компаний. Результатом тестов стало обнаружение и последующее устранение 191 дефектов в коде, некоторые из которых были расценены как уязвимости.
В рамках испытаний тестировались следующие компоненты с открытым исходным кодом: nginx, ActiveMQ Artemis, Apache Directory, libvirt‑exporter, QEMU. Особое внимание было уделено libvirt. По словам исследователей, сбой в работе этой библиотеки может нанести ущерб инфраструктуре и привести к утечке конфиденциальной информации, поэтому она была подвергнута комплексному исследованию. Перечисленные компоненты используются вендорами по всему миру. Например, уже упомянутая libvirt предоставляет API для управления виртуальными машинами, а nginx помогает балансировать нагрузку. От качества работы озвученного ПО зависит множество российских и иностранных решений для работы с виртуальными средами.
При разработке и тестировании продуктов применялись различные виды анализа: фаззинг, статический анализ, композиционный анализ, модульное и функциональное тестирование. На прошедшем этапе испытаний основной упор исследователи сделали на разметке срабатываний статического анализатора Svace (разработан в ИСП РАН) и создании фаззинг‑целей.
Статический анализ выявил 178 дефектов в коде тестируемых компонентов. Изучив их, специалисты ИСП РАН и «Базис» разработали 86 исправлений, принятых в основные ветки разработки соответствующих open source проектов. Большая часть срабатываний относилась к популярному брокеру сообщений ActiveMQ Artemis и серверу каталогов Apache Directory.
Фаззинг‑тестирование выявило еще 13 дефектов в коде: 5 в Apache Directory LDAP API и 8 в библиотеке libvirt. Последние были найдены в ходе проверки функций обработки инструкций, потенциально полученных из конфигурационных файлов при создании виртуальной машины. Например, были найдены ошибки, связанные с переполнением буфера, а также несколько проблем, связанных с неоптимальной работой функций в отношении некоторых контроллеров. Все представленные исправления были оперативно приняты в основные ветки разработки libvirt и Apache Directory.
В рамках подготовки к тестированию для наиболее критичных компонентов открытого ПО, больше всего подходящих для атаки, были разработаны фаззинг‑тесты. Эти тесты можно найти в соответствующих проектах на GitLab‑портале Центра исследований безопасности системного ПО.
Источник: habr.com