В мае 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
Технические параметры уязвимости
CVE-2026-8153 - OS command injection (CWE-78) в компоненте Dashboard Server платформы Universal Robots PolyScope 5.| Параметр | Значение |
|---|---|
| CVSS v3.1 | 9.8 (Critical) |
| Вектор | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-78 (OS Command Injection) |
| Затронутые версии | PolyScope 5 < 5.25.1 |
| Исправление | PolyScope 5.25.1 |
| EPSS | 0.0183 (~1.8% вероятности эксплуатации в 30 дней; 76-й перцентиль - выше медианы, но абсолютное значение низкое) |
| CISA SSVC | Automatable: 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 - полный импакт на конфиденциальность, целостность и доступность
;, |, &&). Точка с запятой после легитимной команды - и дальше идёт что угодно.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
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-роботов: пошаговый сценарий
Требования к окружению
| Параметр | Значение |
|---|---|
| ОС атакующего | 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 во всех проверенных прошивках. Вообще. Ни одного механизма.
Чем OT-пентест роботов отличается от IT
| Аспект | IT-пентест | OT-пентест промышленных роботов |
|---|---|---|
| Последствия сбоя | Недоступность сервиса | Физическое повреждение, угроза здоровью |
| Протоколы | HTTP/S, SMB, RDP | Modbus TCP (FC 0x03/0x06/0x10), Dashboard Server (TCP text), RTDE |
| Аутентификация | Есть (часто слабая) | Нет на уровне протокола |
| Rate limiting | Стандартный сканер - норма | --max-rate 50 или пассивная разведка |
| Окно тестирования | 24/7 (staging) | Согласованное окно обслуживания |
| Откат изменений | Восстановление из снапшота | Ручная калибровка робота инженером |
| Стандарты | PCI DSS, ISO 27001 | ISO 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 закрывает эту методологию в формате, применимом к реальным проектам.
Последнее редактирование модератором: