Подробнее о DDS и о том, как обеспечить защиту при ее использовании. Если в данный момент вы пользуетесь операционной системой Robot Operating System 2 (ROS 2), то этот материал особенно актуален для обеспечения безопасности ваших роботов. Пару месяцев назад исследовательская группа обнаружила 13 уязвимостей в безопасности, влияющих на некоторые из основных реализаций DDS, промежуточной программы по умолчанию, используемой в ROS 2.
Что представляет собой DDS?
Сервис распределения данных (DDS) предназначен для систем реального времени и является открытым протоколом промежуточного программного обеспечения и стандартом API, созданным Object Management Group (OMG). В нем реализована схема связи "публикация-подписка" для систем реального времени и систем встраивания, что позволяет участникам посылать и принимать данные, события и команды. На сегодняшний день насчитывается свыше десятка различных реализаций DDS, часть из них с открытой версией, а часть - нет.
DDS создан на базе потребностей промышленности, что позволило разработать широко поддерживаемый стандарт с долгой практикой эксплуатации. В настоящее время его используют в самых разных отраслях: в автономных транспортных средствах, в космической технике, в системе управления авиаперевозками, в медицинском оборудовании и, как мы знаем, в ROS 2.
До того, как перейти к рассмотрению известных вопросов и рисков, вспомним, что DDS занимается безопасностью с момента своего создания; у него есть элементы безопасности, предусмотренные в стандартном понимании, такие как эти 5 основных элементов:
- Криптография: обеспечивает возможность шифрования, дешифрования, хэширования и использования цифровых подписей;
- Аутентификация: осуществляет проверку личности всех пользователей сети;
- управление доступом: указывает, к какому ресурсу может иметь право доступа и модифицировать данный пользователь;
- Регистрация данных безопасности: фиксирует все связанные с безопасностью события.
- Метки данных: обеспечивает нанесение меток защиты на данные, которые позволяют установить уровень классификации и обеспечить более высокий контроль доступа.
Что нового в области безопасности?
Специалисты провели анализ платформы промежуточного слоя DDS и ее самых распространенных вариантов реализации на наличие уязвимостей в системах безопасности. Своими выводами они в первый раз обменялись на конференции Black Hat Europe 2021, на которой присутствовала команда Canonical Robotics.
В ходе проекта было выявлено 12 слабых мест в анализируемых шести реализациях DDS, а также один случай уязвимости в стандартной спецификации. Эти уязвимости были обнаружены в реализациях нескольких разработчиков. После этих сообщений американское Агентство кибербезопасности и безопасности инфраструктуры (CISA) опубликовало совет по безопасности, в котором предупредило об их опасности для кибербезопасности.
В чем заключалась суть проблем?
В чем заключались некоторые из обнаруженных проблем, и что с ними было сделано?
Если говорить коротко, то эти уязвимости условно можно разбить на два класса: проблемы, связанные с сетью, и угрозы, возникающие при конфигурировании.
Сетевые уязвимости
Учитывая, что DDS это сетевой протокол, проблемы безопасности, очевидно, следует искать в процедурах интерпретации сообщений (таких, как разрешенная длина поля, где, к примеру, возможно переполнение). В связи с этим специалисты разобрали и изучили фундаментальный элемент экосистемы DDS. Первой проблемой, заслуживающей упоминания, стала сетевая уязвимость отражения/усиления, затронувшая все реализации, что говорит о наличии проблемы в самом стандарте DDS.
Благодаря этой уязвимости злоумышленник может передать некорректно составленные RTPS-пакеты, что приведет к переполнению целевого узла ненужным трафиком и, тем самым, к потенциальной атаке типа "отказ в обслуживании" или раскрытию информации о системе.
Еще одной проблемой, найденной в спецификации DDS, была недостаточная санитарная обработка IP-адресов, означающая, что можно было записать произвольный IP-адрес в поле IP (без проверок целостности или безопасного списка адресов).
Уязвимость на базе конфигураций
В конфигурации DDS активно применяются форматы XML, JSON, YAML или подобные им, в связи с чем файлы конфигурации являются еще одной анализируемой целью атак. В одной из реализаций была обнаружена уязвимость 'write-what-where', позволяющая взломщику писать произвольные значения в XML-парсер в случае переполнения буфера. В рамках этой же реализации было обнаружено, что она неправильно обрабатывает синтаксически некорректные структуры, которые также могут быть использованы для внесения в синтаксический анализатор XML произвольных значений. Обрабатывая такие данные, можно привести к неопределенному поведению и аварийному завершению работы системы.
Некоторые другие уязвимости парсинга касались неправильного вычисления объема буфера и переполнений буфера на основе стека.
В заключение было выявлено, что в другом варианте реализации используется устаревшая, не поддерживаемая и уязвимая библиотека XML, что дает злоумышленнику возможность получить начальный доступ с помощью вредоносного конфигурационного файла.
Обратите внимание, что многие производители DDS опубликовали обновления безопасности или другим способом исправили эти уязвимости. Если у вас работает ROS 2 с какой-либо из перечисленных реализаций DDS, применяйте все исправления системы безопасности, предоставленные производителем, как можно скорее.