Статья Пентест промышленных роботов ICS: эксплуатация CVE-2026-8153 в Universal Robots PolyScope

Плата контроллера промышленного робота крупным планом на антистатическом мате. Выжженная дорожка у сетевого чипа, гравировка CVE-2026-8153 на радиаторе, синий светодиод в полутьме.


В мае 2026 года CISA и Universal Robots одновременно выкатили advisory по CVE-2026-8153 - OS command injection в Dashboard Server интерфейсе PolyScope 5 с CVSS 9.8 (Critical). Для эксплуатации нужен TCP-доступ к порту 29999 и ноль учётных данных: контроллер берёт пользовательский ввод и передаёт его операционной системе без нейтрализации спецсимволов. Одна строка в TCP-сокет - и атакующий выполняет произвольные команды на Linux-контроллере кобота. По данным Alias Robotics, в контроллерах CB 3.x ранее были документированы множественные уязвимости в разных версиях прошивки, но CVE-2026-8153 стала первой с настолько тривиальным вектором в актуальной линейке PolyScope 5. Netcat и немного фантазии - вот и весь набор атакующего.

Бизнес-логика атаки: зачем ломать промышленного робота​

Коботы Universal Robots - не абстрактные "умные устройства". Это манипуляторы с полезной нагрузкой до 16 кг, работающие рядом с людьми без защитных ограждений (collaborative robots по стандарту ISO/TS 15066). Компрометация контроллера кобота ведёт к трём классам последствий, и ни один из них не про «утечку данных». Подробнее - в нашем подробном разборе кибербезопасность критической инфраструктуры.

Кинетический ущерб. Модификация параметров движения (скорость, момент, trajectory) превращает кобота в физическую угрозу для оператора. Атакующий может изменить waypoint или отключить safety limits через перезапись конфигурации контроллера. Робот, который должен плавно подавать деталь, вместо этого бьёт с полного плеча.

Промышленный саботаж. Изменение программы робота (файлы .urp на контроллере) приводит к скрытому дефекту продукции: детали сваренные с неправильным углом, компоненты собранные с отклонением в доли миллиметра. Такой импакт обнаруживается спустя дни или недели - когда партия уже ушла заказчику.

Pivoting в OT-сеть. Контроллер кобота - general-purpose Linux-компьютер с Ethernet-портом и последовательными интерфейсами. Vera Mens (Claroty), обнаружившая CVE-2026-8153, формулирует так: "минимальный исход - полный контроль над одним коботом, но импакт может эскалироваться до компрометации целого флота коботов и их периферии" (по данным SecurityWeek). По сути, один скомпрометированный контроллер - и ты внутри OT-сегмента с плацдармом для lateral movement.

По данным IBM X-Force, 70% инцидентов, расследованных X-Force в 2024 году, затронули критическую инфраструктуру. Промышленные роботы - одна из точек входа в OT-сегмент: их контроллеры проектировались для доверенных сетей и лишены базовых механизмов аутентификации. Порт открыт, пароля нет - добро пожаловать.

CVE-2026-8153: анатомия OS command injection в Dashboard Server​

1783889990019.webp

Технические параметры уязвимости​

CVE-2026-8153 - OS command injection (CWE-78) в компоненте Dashboard Server платформы Universal Robots PolyScope 5.

ПараметрЗначение
CVSS v3.19.8 (Critical)
ВекторAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWECWE-78 (OS Command Injection)
Затронутые версииPolyScope 5 < 5.25.1
ИсправлениеPolyScope 5.25.1
EPSS0.0183 (~1.8% вероятности эксплуатации в 30 дней; 76-й перцентиль - выше медианы, но абсолютное значение низкое)
CISA SSVCAutomatable: yes, Technical Impact: total, Exploitation: none

Разберём CVSS-вектор:
  • AV:N - эксплуатация по сети, физический доступ не нужен
  • AC:L - сложность низкая, никаких race condition или подготовительных шагов
  • PR:N - привилегии не нужны, Dashboard Server не требует аутентификации
  • UI:N - действия пользователя не требуются
  • S:U - scope unchanged, импакт ограничен компонентом
  • C:H/I:H/A:H - полный импакт на конфиденциальность, целостность и доступность
Dashboard Server слушает TCP порт 29999 и предназначен для удалённого управления роботом: запуск и остановка программ, получение статуса, загрузка конфигурации. Сервер принимает текстовые команды через TCP-сокет. Как описывает Universal Robots в advisory: "Dashboard Server принимает пользовательский ввод и передаёт его операционной системе без надлежащей нейтрализации специальных элементов". Классика CWE-78 - входные данные попадают в вызов оболочки без фильтрации метасимволов (;, |, &&). Точка с запятой после легитимной команды - и дальше идёт что угодно.

CISA оценивает уязвимость как автоматизируемую (Automatable: yes) с полным техническим воздействием (Technical Impact: total), но на момент публикации advisory эксплуатация в дикой природе не зафиксирована (Exploitation: none). Пока.

Поверхность атаки: почему порт 29999 доступен чаще, чем кажется​

Universal Robots в advisory подчёркивает: "Роботы UR не предназначены для прямого доступа из интернета, и прямой входящий доступ обычно предотвращается корпоративным файрволом". На бумаге - звучит. На практике - всё иначе.

Vera Mens (Claroty) в комментарии SecurityWeek: "Клиенты используют Ethernet-порт для передачи информации в централизованную систему управления, для работы с legacy-протоколами вроде MODBUS и EtherNet/IP, а также для удалённого управления коботом. Хотя эти сети обычно не выставлены в интернет, они часто плоские и лишены надлежащей сегментации - поэтому получить первоначальный foothold может быть несложно".

Типичная архитектура OT-сети с коботами UR: контроллер подключён к заводскому LAN вместе с ПЛК, HMI-панелями и камерами. Заводской LAN имеет шлюз в корпоративную сеть, DMZ между ними - в единичных случаях. Инженерная рабочая станция с двумя сетевыми интерфейсами служит мостом между IT и OT. VPN-доступ подрядчиков для обслуживания роботов - ещё одна точка входа. Вектор атаки: компрометация инженерной рабочей станции или получение VPN-доступа подрядчика, далее - обнаружение открытого порта 29999 на контроллере и отправка payload. Два хопа от корпоративной почты до контроллера робота - типичная реальность.

Место в цепочке атаки: от разведки до полного контроля​

Разведка: fingerprinting UR-роботов в OT-сегменте​

[Применимо: внутренний пентест, grey/white box, после получения доступа к OT VLAN]

Контроллеры Universal Robots используют характерный набор портов: 29999 (Dashboard Server, целевой для CVE-2026-8153), 30001-30004 (Primary/Secondary Client Interface и RTDE), 502 (Modbus TCP, если включён). Сканирование этих портов однозначно идентифицирует UR-контроллер. Этап соответствует Network Service Discovery (T1046, Discovery) по MITRE ATT&CK:
Bash:
nmap -sV -p 29999,30001,30002,30003,30004,502 --max-rate 50 <target_range>
--max-rate 50 - тут не перестраховка, а необходимость. Контроллеры UR работают на embedded Linux и не рассчитаны на интенсивный трафик сканирования. Без rate limiting контроллер может перестать отвечать на запросы - на production-объекте это аварийная остановка. Объясняйте потом заказчику, почему конвейер встал из-за вашего nmap.

Для пассивной разведки (T1040, Network Sniffing) достаточно Wireshark на зеркалированном порту коммутатора с фильтром tcp.port == 29999 - если Dashboard Server используется легитимными системами управления, текстовые команды видны в plaintext. Фильтр modbus раскрывает взаимодействие контроллера с ПЛК: function code 0x03 (Read Holding Registers) - чтение данных, 0x06 и 0x10 (Write Single/Multiple Registers) - команды управления. Всё в открытом виде, шифрования нет.

Эксплуатация Dashboard Server (T1190, T1059)​

[Применимо: внутренний пентест, grey/white box; только на тестовом стенде URSim или изолированном контроллере]

Dashboard Server принимает текстовые команды по TCP. Подключение к сервису тривиально:
Python:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("<target_ip>", 29999))
print(s.recv(1024).decode()) # баннер с версией PolyScope
# пример для демонстрации концепции - НЕ для production
При подключении Dashboard Server отправляет баннер с версией PolyScope. Версия ниже 5.25.1 - контроллер уязвим. Публичного PoC-эксплоита для CVE-2026-8153 на момент написания нет, но механика стандартна для CWE-78: вставка разделителя команд в поле, которое передаётся shell-интерпретатору без санитизации. Результат успешной эксплуатации - выполнение произвольных команд с привилегиями процесса Dashboard Server на Debian-based GNU/Linux контроллере. Никакого повышения привилегий не требуется - Dashboard Server и так работает с достаточными правами.

Post-exploitation и Lateral Movement (T1210, T1489, T1565.002)​

После получения shell на контроллере UR атакующий добирается до файловой системы: программы робота (.urp), URCaps-плагины (по данным Alias Robotics, хранятся в /root/.urcaps как незашифрованные ZIP-архивы - да, в /root/, и да, ZIP без пароля), конфигурация safety limits. Контроллер подключён к другим устройствам OT-сегмента через Ethernet и работает как pivot-точка для Exploitation of Remote Services (T1210, Lateral Movement) - в том числе для эксплуатации того же CVE-2026-8153 на соседних коботах. Один PoC, пять целей - автоматизируется за минуту.

Импакт включает Service Stop (T1489) - остановку программы робота - и Transmitted Data Manipulation (T1565.002) - подмену данных, передаваемых в централизованную систему управления. Через Modbus TCP (порт 502) атакующий может воздействовать на смежное оборудование: записывать значения в holding registers ПЛК через function codes 0x06 и 0x10.

Практическая разведка UR-роботов: пошаговый сценарий​

1783890030156.webp

Требования к окружению​

ПараметрЗначение
ОС атакующегоKali Linux 2024.x+ или Debian-based GNU/Linux
RAMМинимум 4 ГБ (8 ГБ при запуске URSim в Docker)
ИнструментыNmap 7.94+, Python 3.8+, Wireshark 4.x
Тестовая средаURSim (симулятор UR, бесплатный, Linux/Docker) или изолированная сеть с контроллером
СетьДоступ к OT VLAN (внутренний пентест)
РазрешениеПисьменное согласие заказчика, согласованное окно обслуживания

URSim - бесплатный симулятор контроллера Universal Robots, воспроизводящий Dashboard Server и все клиентские интерфейсы. Для лабораторной отработки это единственный безопасный вариант. На живом контроллере экспериментировать без согласования - путь к уголовному делу и сломанному конвейеру.

Шаг 1: обнаружение контроллеров. Запуск Nmap с UR-специфичными портами и жёстким rate limit. Ожидаемый результат: открытые порты 29999 и 30001-30004 на GNU/Linux-хосте. Если в сети больше одного кобота - они все ответят одинаково, потому что конфигурация копируется как под копирку.

Шаг 2: определение версии PolyScope. Подключение к Dashboard Server через nc <target> 29999 или Python-сокет. Баннер содержит версию PolyScope. Версия < 5.25.1 - можно фиксировать в отчёте как Critical.

Шаг 3: пассивный анализ трафика. Настройка SPAN-порта на коммутаторе OT-сегмента (согласование с инженерами АСУ ТП обязательно). Wireshark с фильтром tcp.port == 29999 показывает все команды к Dashboard Server в plaintext. Тут же видно, кто ещё общается с контроллером и какие команды шлёт.

Шаг 4: документирование. Фиксация версий PolyScope, списка открытых портов, наличия или отсутствия сетевой сегментации. Формирование рекомендаций: обновление до 5.25.1, ограничение доступа к порту 29999, внедрение мониторинга.

Историческая поверхность атаки Universal Robots​

CVE-2026-8153 - не первая критическая проблема в хозяйстве UR. По данным Alias Robotics, в контроллерах CB 3.1 были обнаружены десятки уязвимостей, значительная часть - severity High (7.0+) или выше.

Характерные находки из того аудита:
  • CVE-2016-6210 (CVSS 5.9, CWE-200) - user enumeration через timing-атаку на OpenSSH < 7.3; затрагивала контроллеры UR как унаследованная уязвимость стороннего компонента. OpenSSH использовал BLOWFISH-хеширование для несуществующих пользователей, что позволяло перечислять учётные записи по разнице во времени ответа. EPSS - 0.8894 (99.76-й перцентиль), публичные PoC доступны (EDB-40113, EDB-40136). По сути, даже OpenSSH на контроллере - дырявый.
  • Незашифрованные URCaps - интеллектуальная собственность (плагины UR+) хранится в /root/.urcaps в виде обычных ZIP-архивов. Эксфильтрация всей IP за секунды. Zip. Без пароля. В /root/.
  • Полное отсутствие аутентификации - Alias Robotics подтвердила отсутствие encryption, authentication и authorization во всех проверенных прошивках. Вообще. Ни одного механизма.
Позиция Universal Robots сводилась к тому, что система робота спроектирована для работы в сети доверенных устройств, а открытость обеспечивает простоту интеграции. Эта архитектурная философия - "безопасность через доверие к сети" - и объясняет появление CVE-2026-8153 спустя семь лет. Философия не поменялась, а сети стали сложнее.

Чем OT-пентест роботов отличается от IT

АспектIT-пентестOT-пентест промышленных роботов
Последствия сбояНедоступность сервисаФизическое повреждение, угроза здоровью
ПротоколыHTTP/S, SMB, RDPModbus TCP (FC 0x03/0x06/0x10), Dashboard Server (TCP text), RTDE
АутентификацияЕсть (часто слабая)Нет на уровне протокола
Rate limitingСтандартный сканер - норма--max-rate 50 или пассивная разведка
Окно тестирования24/7 (staging)Согласованное окно обслуживания
Откат измененийВосстановление из снапшотаРучная калибровка робота инженером
СтандартыPCI DSS, ISO 27001ISO 10218-1, ISO/TS 15066, IEC 62443

В OT-среде нет аналога "вернуть из снапшота". Перезапись calibration data робота - часы ручной калибровки инженером. Изменение safety speed limits - физическая угроза при следующем движении манипулятора. Атака TRITON 2017 года на контроллеры Triconex 3008 показала: компрометация промышленного контроллера может отключить safety-системы целого объекта. С коботами UR ситуация жёстче - коботы работают рядом с людьми, без ограждений, в расчёте на программные safety limits, которые атакующий может перезаписать одной командой.

Я на каждом OT-проекте начинаю с вопроса инженерам: "Что будет, если я случайно уроню контроллер?" Ответ определяет всю методологию тестирования.

Детект и митигация CVE-2026-8153​

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

CVE-2026-8153 обнажает проблему шире одной уязвимости. Коботы Universal Robots - Linux-компьютеры с Ethernet-портом, на которых десятилетиями не меняли архитектурный подход к безопасности. Alias Robotics ещё в 2019 году документировала полное отсутствие шифрования и аутентификации в контроллерах CB 3.1 - производитель придерживался позиции, что роботы спроектированы для доверенных сетей. Прошло семь лет - CVSS 9.8 command injection в Dashboard Server стал закономерным результатом.

На практике "доверенная сеть" на чертеже архитектора через два года после пуска превращается в плоский VLAN с VPN-доступом трёх подрядчиков, двумя незадокументированными мостами в корпоративную сеть и Wi-Fi точкой доступа, которую инженер поставил "временно". Пока производители промышленных роботов не перейдут от модели "безопасность - ответственность пользователя" к security-by-design с аутентификацией на уровне протокола, каждый assessment на объекте с коботами будет начинаться с вопроса: "На какой порт сегодня не нужен пароль?"

Среднее время между публикацией CVE и устранением в организации, по данным IBM X-Force, - 29 месяцев. Для OT-объектов, где обновление прошивки робота требует остановки конвейера, это число только растёт. Если тема ICS-пентеста интересна дальше разового разбора CVE и хочется выстроить системное понимание цепочки атаки от сетевой разведки до эксплуатации - курс "Профессия Пентестер" на pentester.codeby.school закрывает эту методологию в формате, применимом к реальным проектам.
 
Последнее редактирование модератором:
  • Огонь
Реакции: Сергей Сталь
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🧭 Навигатор · ИБ 2026
Не знаешь, какой трек твой?
5 направлений ИБ, реальные зарплаты и точка входа для каждого — в одном треде.
JuniorSenior+
100K → 600K+ ₽ /мес
Открыть навигатор →

Популярный контент

🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab