Индустриальные угрозы

Секреты протокола Schneider Electric UMAS

UMAS (Unified Messaging Application Services) — это проприетарный протокол Schneider Electric (SE), который используется для конфигурации и мониторинга Schneider Electric PLC. UMAS используют такие контроллеры Schneider Electric, как Modicon M580 CPU (номера компонента BMEP* и BMEH*) и Modicon M340 CPU (номер компонента BMXP34*). Конфигурация и программирование этих процессоров осуществляется при помощи инженерного ПО — EcoStruxure™ Control Expert (Unity Pro), EcoStruxure™ Process Expert и т. п.

В 2020 году стало известно об уязвимости CVE-2020-28212 в этом ПО, эксплуатация которой позволяет удаленному неавторизованному злоумышленнику получить управление контроллером с правами уже аутентифицированного на ПЛК оператора. Чтобы исправить уязвимость, компания SE разработала новый механизм — Application Password, который должен предоставлять защиту от несанкционированного доступа к ПЛК и внесения нежелательных изменений.

Анализ, проведенный специалистами Kaspersky ICS CERT, показал, что новый механизм защиты также реализован с недостатками. Выявленная в ходе исследования уязвимость CVE-2021-22779 позволяет удаленному нарушителю обойти процесс аутентификации при внесении изменений на ПЛК.

Как выяснилось, протокол UMAS в реализации, предшествующей версии с исправленной уязвимостью CVE-2021-22779, имеет существенные недостатки, которые критически влияют на безопасность систем управления на основе контроллеров SE.

К середине августа 2022 года Schneider Electric выпустил обновление для программного обеспечения EcoStruxure™ Control Expert, ПЛК Modicon M340 с исправлением данной уязвимости. В марте 2023 года вендор выпустил обновление для ПЛК Modicon M580.

В отчете описаны:

  • реализация протокола UMAS без использования защитного механизма Application Password;
  • обход аутентификации без использования Application Password;
  • принцип работы защитного механизма Application Password;
  • механизмы эксплуатации уязвимости CVE-2021-22779 (обход аутентификации с настроенным Application Password);
  • принцип работы обновленного процесса резервирования устройства.

С подробным отчетом по результатам исследования, мерами Schneider Electric по устранению уязвимости, позволяющей обходить аутентификацию, и рекомендациями Kaspersky ICS CERT вы можете ознакомиться в полной версии статьи, опубликованной на сайте Kaspersky ICS CERT.

Объект исследования

UMAS (Unified Messaging Application Services) — проприетарный протокол Schneider Electric, который используется для конфигурации, мониторинга сбора данных и управления промышленными контроллерами Schneider Electric.

UMAS основан на клиент-серверной архитектуре. В ходе нашего исследования в качестве клиента было использовано программное обеспечение для конфигурации ПЛК EcoStruxure™ Control Expert, а в качестве сервера — контроллер Modicon M340 CPU.

Протокол UMAS

Строение сетевого пакета

UMAS основан на протоколе Modbus/TCP.

Структурная схема протокола UMAS

Структурная схема протокола UMAS

В спецификации протокола Modbus/TCP определены зарезервированные значения Function Code, которые могут быть использованы разработчиками для своих нужд. С полным списком зарезервированных значений можно ознакомиться в официальной документации.

Schneider Electric использует Function Code 90 (0x5A) для определения того, что значение поля Data сформировано в соответствии с протоколом UMAS.

Ниже показана структура сетевого пакета на примере запроса чтения блока памяти (pu_ReadMemoryBlock) ПЛК:

  • Красный: Function code 90 (0x5A)
  • Синий: ключ сессии (Session key) 0 (0x00)
  • Зеленый: функция UMAS 20 (0x20)
  • Оранжевый: данные (Data)

Структура сетевого пакета

Структура сетевого пакета

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

Сетевое взаимодействие

UMAS наследует и клиент-серверную архитектуру Modbus. Ниже показана структурная схема взаимодействия клиента и сервера.

Схема взаимодействия клиента (EcoStruxure™ Control Expert) и сервера (ПЛК)

Схема взаимодействия клиента (EcoStruxure™ Control Expert) и сервера (ПЛК)

В сетевом пакете UMAS сразу после Function code 0x5A следует ключ текущей сессии.

Блок-схема сетевого пакета UMAS

Блок-схема сетевого пакета UMAS

Рассмотрим взаимодействие между клиентом и сервером (ПЛК, далее также «устройство») на примере анализа фрагмента реального трафика. На скриншоте ниже показан пакет с функцией umas_QueryGetComInfo(0x01), отправленный клиентом (EcoStruxure™ Control Expert) серверу (PLC).

Структура данной функции:
TCP DATA – Modbus Header – 0x5A – session – 01(UMAS function code) – 00(data).

Сетевой пакет с функцией umas_QueryGetComInfo(0x01)

Сетевой пакет с функцией umas_QueryGetComInfo(0x01)

Устройство должно отправлять ответ на каждый отправленный запрос. На скриншоте ниже показан ответ устройства клиенту:

Ответ сервера

Ответ сервера

Status code — это статус выполнения устройством функции, которую оно получило от клиента в предыдущем запросе. Значение 0xFE соответствует успешному выполнению функции, а 0xFD — ошибке. Status code присутствует в каждом ответе устройства на запрос с функцией от клиента и всегда располагается сразу после ключа сессии.

Процедура резервирования

Для внесения изменений в ПЛК требуется его «резервирование». Эта процедура выполняет роль аутентификации. Только один клиент (например, рабочая станция инженера) может зарезервировать устройство-сервер в один момент времени для его конфигурации или мониторинга состояния. Это необходимо для того, чтобы предотвратить внесение параллельных несогласованных изменений в устройство.

Ниже на скриншоте представлен запрос на выполнение процедуры резервирования устройства в базовом варианте (без использования защитного механизма Application Password).

Резервирование устройства

Резервирование устройства

Для резервирования устройства используется функция umas_QueryTakePLCReservation(0x10). Запрос с этой функцией также содержит имя клиента, который резервирует устройство, и значение длины данного имени.

CVE-2020-28212: обход аутентификации без механизма Application Password

Основная проблема базового механизма резервирования без использования Application Password в том, что атакующий с помощью ключа сессии может отправлять запросы и изменять конфигурацию устройства.

В прошивке для устройства Modicon M340 до версии 2.7 ключ сессии после каждого резервирования устройства имеет одно и то же значение и равен 0x01. Соответственно, атакующий может вносить изменения на устройстве, вызывая соответствующие функции, после того как устройство было зарезервировано легитимным пользователем.

Схема атаки выглядит следующим образом:

Схема атаки удаленного злоумышленника. Версия прошивки ПЛК Modicon M340 до 2.7, устройство зарезервировано инженером

Схема атаки удаленного злоумышленника. Версия прошивки ПЛК Modicon M340 до 2.7, устройство зарезервировано инженером

Если в момент атаки устройство не зарезервировано, атакующий с помощью функции umas_QueryTakePLCReservation(0x10) может сам зарезервировать устройство для последующих изменений.

В версиях прошивки для устройства Modicon M340 2.7 и выше ключ сессии после резервирования устройства принимает случайное значение. Однако длина идентификатора сессии составляет всего один байт. Соответственно, максимально возможное количество значений идентификатора сессии равно 256. Это позволяет удаленному неавторизованному нарушителю подобрать уже установленный идентификатор сессии между легитимным пользователем и ПЛК методом перебора.

Для проведения такой атаки удаленному нарушителю необходимо отправить ряд сетевых запросов на порт ПЛК 502/TCP с разными идентификаторами сессии и посмотреть на ответ от ПЛК. Если идентификатор сессии был подобран правильно, нарушитель получит статус-код 0xFE, означающий успешное выполнение запроса. В противном случае нарушитель получит статус-код 0xFD.

Описанные действия можно выполнить с помощью любого языка программирования, атакующему не обязательно использовать EcoStruxure™ Control Expert или другое специализированное ПО для взаимодействия с устройством.

Application Password

Эксплуатация ранее выявленной уязвимости CVE-2020-28212 позволяла удаленному неавторизованному атакующему получить возможность управлять ПЛК с правами уже аутентифицированного оператора. Для исправления этой уязвимости компания Schneider Electric разработала новый механизм защиты, основанный на использовании криптографических алгоритмов для вычисления идентификатора сессии и увеличении его длины. По замыслу производителя, реализация этого механизма должна была предотвратить атаки с подбором ключа сессии.

Новый механизм безопасности появляется в прошивке для устройства Modicon M340 начиная с версии 3.01. Для проведения аутентификации между клиентом и устройством в новых версиях необходимо установить Application Password в настройках проекта (Project & Controller Protection). Этот механизм должен предоставлять защиту от несанкционированного доступа, нежелательных изменений, загрузки и выгрузки стратегии ПЛК.

После активации Application Password с помощью EcoStruxure™ Control Expert клиенту необходимо вводить пароль при подключении к устройству в рамках процедуры резервирования. Также Application Password вносит изменения в сам механизм резервирования.

Анализ, проведенный специалистами Kaspersky ICS CERT, показал, что новый механизм защиты, к сожалению, также оказался реализован с недостатками. Главный недостаток состоит в том, что все вычисления в ходе аутентификации происходят на стороне клиента, то есть на стороне инженерного ПО EcoStruxure™ Control Expert. Выявленная в ходе исследования уязвимость CVE-2021-22779 позволяет удаленному нарушителю обойти процесс аутентификации и использовать функции, требующие резервирования, чтобы вносить изменения в ПЛК.

Более подробно о реализации Application Password и об обнаруженных нами недостатках безопасности читайте в полной версии статьи, опубликованной на сайте Kaspersky ICS CERT. Если вам нужна дополнительная информация, напишите нам: ics-cert@kaspersky.com.

Секреты протокола Schneider Electric UMAS

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Отчеты

StripedFly: двуликий и незаметный

Разбираем фреймворк StripedFly для целевых атак, использовавший собственную версию эксплойта EternalBlue и успешно прикрывавшийся майнером.

Азиатские APT-группировки: тактики, техники и процедуры

Делимся с сообществом подходами, которые используют азиатские APT-группировки при взломе инфраструктуры, и подробной информацией о тактиках, техниках и процедурах (TTPs) злоумышленников, основанной на методологии MITRE ATT&CK.

Как поймать «Триангуляцию»

Эксперты «Лаборатории Касперского» смогли получить все этапы «Операции Триангуляция»: эксплойты нулевого дня для iOS, валидаторы, имплант TriangleDB и дополнительные модули.

Подпишитесь на еженедельную рассылку

Самая актуальная аналитика – в вашем почтовом ящике