Спецпроекты

Безопасность Цифровизация Инфраструктура Открытое ПО

Россияне обнаружили сотни дефектов в ПО для виртуализации. Многие из них останутся без исправлений

Компания «Базис» и ИСП РАН при поддержке «Фобос-НТ» обнаружили в открытых компонентах программного обеспечения для виртуализации более двух сотен дефектов, в том числе в сервере каталогов Apache Directory – в нем нашлось сразу несколько опасных уязвимостей. 92 дефекта, выявленные при помощи инструментов статического анализа, по ряду причин исправлять не стали.

191 дефектом меньше

Как стало известно CNews, специалисты компания «Базис», российского разработчика инфраструктурного ПО, совместно с сотрудниками Института системного программирования (ИСП) РАН и испытательной лаборатории «Фобос-НТ», провели тестирование компонентов с открытым исходным кодом, задействованных в программных продуктах «Базиса» для виртуализации.

В ходе испытаний проверке подверглись такие компоненты с открытым исходным кодом как веб-сервер nginx, брокер сообщений ActiveMQ Artemis, сервер каталогов Apache Directory, библиотека для сбора данных телеметрии виртуальных машин libvirt-exporter, эмулятор аппаратного обеспечения QEMU. В результате был устранен 191 дефект, в том числе несколько уязвимостей. Часть дефектов по тем или иным причинам осталась без исправлений.

Как утверждают в «Базисе», протестированные компоненты также применяются в некоторых решениях в области виртуализации сторонних вендоров – как отечественных, так и зарубежных.

Важные компоненты

Особое внимание в ходе тестирования было уделено libvirt – сбой в работе этой библиотеки может нанести ущерб инфраструктуре и привести к утечке конфиденциальной информации, поэтому она была подвергнута комплексному исследованию – библиотека предоставляет программные интерфейсы (API) для управления виртуальными машинами, Веб-сервер nginx, помимо прочего, помогает балансировать нагрузку. От качества их работы зависит множество российских и иностранных решений для работы с виртуальными средами.

«Базис» с партнерами изучил открытое ПО на предмет наличия дефектов

«Libvirt-exporter – самый значительный компонент с открытым исходным кодом для систем виртуализации. Вместе с ним часто применяется эмулятор различных устройств QEMU. Стоит также отметить систему оркестрации контейнеров Kubernetes, которая встречается во множестве участков кода. Кроме того, в этих системах используется ядро операционной системы Linux, – пояснил в разговоре с CNews технический директор компании «Базис» Дмитрий Сорокин. – Применение этих компонентов упрощает интеграцию наших продуктов в инфраструктуру заказчиков».

Существуют также вендоры, которые не просто используют элементы открытого ПО для решения отдельных задач, а строят вокруг его ядра весь свой продукт. В качестве одного из примеров такого продукта Сорокин привел свободную систему управления виртуализацией oVirt (Red Hat). Такой подход влечет значительные риски с точки зрения управления развитием продукта и его безопасности, считает эксперт.

Техники тестирования

При разработке и тестировании продуктов «Базис» применяются различные виды анализа, такие как фаззинг, статический анализ, композиционный анализ, модульное и функциональное тестирование.

В ходе завершившегося этапа испытаний основной упор исследователи сделали на разметке срабатываний статического анализатора Svace и создании фаззинг-целей.

Согласно определению библиотеки знаний по кибербезопасности Сбербанка «Кибрарий», фаззинг (англ. fuzzing) – это автоматизированная или полуавтоматизированная проверка того, как поведет себя программа при обработке случайных (в том числе некорректных) входных данных. Фаззинг позволяет обнаружить ошибки в ПО как на стадии разработки, так и в процессе его использования. Фаззинг-цель – функция (подпрограмма) или модуль, принимающие данные на вход, отправляющие результат обработки входных данных на вывод и нуждающиеся в проверке.

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

Валидатор кода Svace разработан специалистами ИСП РАН, в 2016 г. он был включен в состав пакета разработчика (SDK) мобильной операционной системы Tizen компании Samsung.

В рамках подготовки к тестированию для наиболее критичных компонентов открытого ПО, лежащих на поверхности атаки, были разработаны фаззинг-тесты. Их можно найти в соответствующих проектах на GitLab Центра исследований безопасности системного ПО. В дальнейшем созданные сотрудниками ИСП РАН и «Базиса» цели послужили исследованиям, которые специалисты «Фобос-НТ» выполняли на своих мощностях.

Найденные дефекты также были учтены при обновлении компонентов с открытым исходным кодом в продуктах «Базис», сообщили CNews в компании.

Результаты тестирования

Статический анализ выявил 178 дефектов в коде тестируемых компонентов. Изучив их, специалисты ИСП РАН и «Базис» разработали 86 исправлений, которые были приняты в основные ветки разработки соответствующих проектов. Большая часть срабатываний относилась к популярному брокеру сообщений ActiveMQ Artemis и Apache Directory.

К дефектам относятся ошибки в исходном коде, возникающие из-за низкого качества самого кода, неверного выбора констант и параметров или других подобных недочетов. Кроме того, даже в том случае, когда программа написана правильно, разработчик может задать неверные настройки компилятора, в результате чего ПО окажется собранным небезопасно.

«Проще говоря, дефекты – это любые недостатки, связанные со скоростью, качеством или безопасностью ее выполнения. В соответствии со стандартами ФСТЭК и современными подходами к разработке безопасного ПО, улучшение и написание правильного кода начинается с выявления дефектов. Далее специалисты по информационной безопасности определяют, является ли найденная дефект просто недостатком или полноценной уязвимостью», – пояснил Дмитрий Пономарев, заместитель генерального директора – директор департамента внедрения и развития РБПО НТЦ «Фобос-НТ».

Отвечая на вопрос CNews о судьбе еще 92 дефектов, оставшихся без исправлений, Дмитрий Пономарев заявил, что не все дефекты требуют обязательного устранения.

«Например, могут быть обнаружены баги, которые фактически не влияют на функциональность продукта. В определенной сборке или при стандартных сценариях использования компанией “Базис” протестированного открытого ПО этот баг может вовсе не проявиться», – пояснил Пономарев.

Кроме того, компонент, используемый в проекте, может иметь более раннюю версию по сравнению с той, что сейчас находится в основной ветке разработки этого компонента. В таком случае разработчики, вероятно, будут отказываться принимать исправления, указывая на работу с устаревшей версией.

Фаззинг-тестирование выявило еще 13 дефектов в коде – пять в Apache Directory LDAP API и восемь в библиотеке libvirt. Последние были найдены в ходе проверки функций обработки инструкций, которые потенциально могут быть получены из конфигурационных файлов при создании виртуальной машины. В частности, были найдены ошибки, связанные с переполнением буфера, а также несколько проблем, связанных с неоптимальной работой функций в отношении некоторых контроллеров. Все поданные исправления были оперативно приняты в основные ветки разработки libvirt и Apache Directory.

В Apache Directory, который применяется в системе доменной авторизации, к слову, было выявлено несколько уязвимостей, отличающихся высоким (7.8 балла из 10 по шкале CVSSv3) уровнем опасности. Все они внесены в банк данных угроз (БДУ) безопасности информации ФСТЭК.

«Как эксперты мы хотим, чтобы код был максимально качественным, поэтому стремимся исправить все найденные дефекты. И компания “Базис” разделяет это желание. Поэтому зачастую мы не тратим время на выяснение, является ли найденный дефект уязвимостью или нет, на доказательство эксплуатируемости, присваивание критичности и т.д. У нас нет задачи обнаружить уязвимость уровня 10.0 или похвастаться количеством найденных CVE», – подчеркнул Пономарев.

Непрерывный процесс

Очередной этап тестирования и исследования кода проходил с использованием инфраструктуры Центра исследований безопасности системного ПО, созданного ФСТЭК России на базе ИСП РАН.

Работы по разметке и созданию целей для фаззинга выполнялись совместно с ИСП РАН, к решению этой задачи были привлечены студенты профильных специальностей МГТУ и Чебоксарского государственного университета, сообщили CNews в «Базисе».

Сотрудники испытательной лаборатории НТЦ «Фобос-НТ» проводят сертификационные испытания продуктов «Базис» и занимаются улучшением фаззинг-тестов, в том числе разработанных компанией.

В ответ на вопрос CNews о частоте проведения мероприятий подобного рода и масштаба технический директор «Базиса» Дмитрий Сорокин заявил, что для компании «это непрерывный ежемесячный процесс».

«Мы придерживаемся методов безопасной разработки (DevSecOps), в том числе опираясь на передовые отечественные стандарты. Поэтому для развития инструментов анализа кода и их более эффективной интеграции в наши конвейеры, а также для более глубоких и качественных проверок кодовой базы, мы активно сотрудничаем с ИСП РАН», – отметил представитель «Базиса».

В числе продуктов «Базиса», в которых задействованы технологии виртуализации, Basis Dynamix и Basis Workplace, выступающие отечественными аналогами VMWare vSphere, VMWare eRealize Automatization, VMWare Nsx, VMWare vSAN, Microsoft Hyper-V, Nutanix, Simplivit и VMware, Windows Virtual Desktop, Citrix XenDesktop, Citrix Workspace Enterprise соответственно.

В октябре 2024 г. стало известно, что «Базис» и «Веб-Сервер» работают над созданием коробочного решения для организации программно-определяемых сетей (SDN).

Дмитрий Степанов

Короткая ссылка