Уязвимости в промышленном шлюзе Socomec DIRIS M-70: как «достаточная» эмуляция раскрыла шесть критических недостатков

vulnerability

Исследователи кибербезопасности из Cisco Talos обнаружили шесть уязвимостей типа «отказ в обслуживании» (DoS) в промышленном шлюзе мониторинга электроэнергии Socomec DIRIS M-70. Все недостатки безопасности, затрагивающие обработку протокола Modbus, уже устранены производителем благодаря скоординированному раскрытию информации (Coordinated Disclosure Policy). Это событие важно для операторов критической инфраструктуры, центров обработки данных и объектов здравоохранения, где подобные устройства обеспечивают непрерывность энергоснабжения и безопасность технологических процессов. Атака, эксплуатирующая эти уязвимости, могла бы привести к остановке мониторинга питания, сокрытию аномалий или даже стать первым шагом для более глубокого вторжения в промышленную сеть.

Детали уязвимости

Устройство Socomec DIRIS M-70 представляет собой коммуникационный шлюз для сбора данных с электросчётчиков и датчиков. Оно поддерживает интерфейсы RS485 и Ethernet, а также ключевые промышленные протоколы, такие как Modbus RTU, Modbus TCP, BACnet IP и SNMP (простой протокол управления сетью). Благодаря этому оно широко используется в энергетике и на объектах, где необходим точный учёт и управление энергопотреблением. Однако его сложность и центральная роль в инфраструктуре делают его привлекательной целью для злоумышленников. Изначально исследовательская группа столкнулась с серьёзным препятствием: микроконтроллер STM32 на плате был защищён функцией Code Read-out Protection (RDP, защита от чтения кода) первого уровня. Эта защита блокирует чтение флэш-памяти при подключении аппаратного отладчика через интерфейс JTAG, что делает традиционную пошаговую отладку кода, обрабатывающего вредоносные сетевые пакеты, практически невозможной.

Вместо того чтобы тратить ресурсы на обход аппаратной защиты, исследователи избрали инновационный и прагматичный подход - целенаправленную эмуляцию. Ключевой возможностью стал доступ к незашифрованному образу обновления прошивки, что дало полный доступ к коду. Кроме того, несмотря на RDP, оставалась возможность сделать снимок содержимого оперативной памяти (SRAM) в момент выполнения, зафиксировав динамическое состояние системы. Основная идея заключалась в том, чтобы эмулировать не всё устройство целиком, что является крайне ресурсоёмкой задачей, а лишь один критический поток выполнения - тот, который отвечает за обработку сообщений протокола Modbus. Этот поток поддерживает более 700 различных типов сообщений, определяемых значениями регистров и идентификаторами служб, что создаёт обширную поверхность для атак.

Для реализации этого подхода был использован фреймворк Unicorn Engine, позволяющий эмулировать выполнение кода на уровне процессора. Исследователи создали эмулятор, который начинал выполнение внутри функции обработки Modbus, а затем подменял аргументы в регистрах на данные, сгенерированные фаззером - инструментом для автоматического тестирования на основе подбора входных данных. Интеграция Unicorn с фреймворком AFL (American Fuzzy Lop) позволила применить метод coverage-guided fuzzing, когда фаззер автоматически генерирует тестовые данные, стремясь максимизировать покрытие различных ветвей кода. Это привело к обнаружению аномалий и сбоев в эмулируемом потоке. Для анализа сбоев использовался плагин udbserver, который позволил подключать стандартный отладчик GDB к эмулируемому CPU, обеспечивая привычный рабочий процесс с точками останова и инспекцией регистров.

Чтобы лучше визуализировать, какие именно пути кода исследует фаззер, команда перенесла настройку на фреймворк Qiling. Этот инструмент, построенный поверх Unicorn, предоставляет расширенные возможности для отладки и сбора данных о покрытии кода. После небольших доработок загрузчика и компонентов операционной системы в Qiling удалось настроить эмуляцию одного потока и экспортировать данные о покрытии в формате, совместимом с инструментами визуализации, такими как bncov. Сравнение покрытия кода между падающими и стабильными тестовыми примерами позволило быстро определить точки расхождения и установить первопричины уязвимостей. Этот гибридный метод - целенаправленная эмуляция, фаззинг с контролем покрытия и визуальный анализ - доказал свою эффективность, позволив найти серьёзные проблемы, не воссоздавая полностью среду выполнения устройства.

В результате кампании было выявлено четыре уязвимости, приводящих к отказу в обслуживании. Они получили идентификаторы CVE-2025-54848, CVE-2025-54851, CVE-2025-55221 и CVE-2025-55222. Проблемы затрагивают обработку протоколов Modbus TCP и Modbus RTU over TCP на шлюзе DIRIS Digiware M-70. Удалённый злоумышленник, имеющий доступ к сети, где работает устройство, мог бы отправить специально сформированное Modbus-сообщение и вызвать его аварийную остановку. Это привело бы к потере данных мониторинга энергии, что в критических средах может обернуться операционными сбоями, финансовыми потерями или невозможностью вовремя отреагировать на инцидент. Все уязвимости были раскрыты производителю Socomec в рамках политики скоординированного раскрытия Cisco, и для поражённых версий прошивки уже выпущены патчи.

Для специалистов, ответственных за промышленную безопасность, этот случай служит важным напоминанием. Во-первых, необходимо регулярно обновлять прошивки всех промышленных устройств управления и сбора данных, особенно тех, что работают в критических сегментах сети. Во-вторых, стоит рассмотреть сегментацию сетей, изолировав оборудование, использующее промышленные протоколы (такие как Modbus), от общекорпоративных сетей и интернета. В-третьих, мониторинг сетевого трафика с помощью систем обнаружения вторжений (IDS) может помочь выявить аномальную активность, связанную с эксплуатацией подобных уязвимостей. Cisco Talos, в свою очередь, выпустила соответствующие правила для системы Snort, которые позволяют детектировать попытки атак. Исследование также демонстрирует эволюцию методов анализа защищённости: когда традиционные подходы к отладке недоступны, креативное использование эмуляции и фаззинга может стать «достаточно хорошим» решением для обнаружения серьёзных уязвимостей в сложных промышленных системах.

Ссылки

Комментарии: 0