ICS Industrial Robot Pentest: Operation CVE-2026-8153 in Universal Robots PolyScope

Depov

Moderator
Staff member
MODERATOR
ULTIMATE
SUPREME
PREMIUM
MEMBER
Joined
Feb 18, 2025
Messages
345
Reaction score
503
Deposit
0$
In May 2026, CISA and Universal Robots simultaneously rolled out on the advisory CVE-2026-8153 - OS command injection in Dashboard Server interface PolyScope 5 with CVSS 9.8 (Critical). For operation, you need TCP access to the port of 29999 and zero accounts: the controller takes user input and transmits it to the operating system without neutralizing special symbols. One line in TCP-socket - and the attacker performs arbitrary commands on the Linux controller of the box. According to Alias Robotics, the CB 3.x controllers previously documented multiple vulnerabilities in different versions of the firmware, but CVE-2026-8153 became the first with such a trivial vector in the current line of PolyScope 5. Netcat and a little imagination - that's the whole set of the attacker.



Business logic of attack: why break an industrial robot
Universal Robots are not abstract “smart devices”. These are manipulators with a payload of up to 16 kg, working next to people without protective fences (collaborative robots according to the standard ISO/TS 15066) Compromise of the cobot controller leads to three classes of consequences, and none of them is about “data leakage”

kinetic damage. Modification of movement parameters (speed, moment, trajectory) turns the cobot into a physical threat to the operator. The attacker can change the waypoint or disable the safety limits through the overwriting of the controller configuration. The robot, which should smoothly serve the part, instead beats from full shoulder.



Industrial sabotage. Modification of the robot program (files .urp on the controller) leads to a hidden defect of the product: parts welded with irregular angles, components collected with a deviation in the fraction of a millimeter. Such an impact is detected after days or weeks - when the party has already left the customer.



Pivoting in the OT network. Cobot controller is a general-purpose Linux computer with an Ethernet port and serial interfaces. Vera Mens (Claroty) that discovered CVE-2026-8153, he formulates as follows: "minimum outcome - full control over one cobot, but the impact can escalate to the compromising the entire fleet of cobots and their periphery" (according to SecurityWeek). Essentially, one compromised controller – and you’re inside an OT segment with a footer for the lateral movement.



According to IBM X-Force, 70% of the incidents investigated by X-Force in 2024 affected critical infrastructure. Industrial robots are one of the entry points to the OT segment: their controllers were designed for trusted networks and are deprived of basic authentication mechanisms. The port is open, there is no password - welcome.



CVE-2026-8153: OS command injection in Dashboard Server
Let's see CVSS-vector:



AV:N - operation over the network, physical access is not needed
AC:L - low difficulty, no race condition or preparatory steps
PR:N - privileges are not needed, Dashboard Server does not require authentication
UI:N - User's Actions Are Not Required
S:U - scope,impact is limited to component
C:H/I/A:H:H - full impact on privacy, integrity and accessibility
Dashboard Server listens to TCP port 29999 and is designed for remote robot control: running and stopping programs, getting status, booting configuration. The server receives text commands via TCP-socket. As Universal Robots describes in: "Addashboard Server accepts user input and transmits it to the operating system without proper neutralization of special elements." Classics CWE-78 - the input data enters the call of the shell without filtering metasymbols (;, |, &&) The point with the comma after the legitimate team - and then goes anything.



CISA ranks the vulnerability as Automated (Automatable: Yes) with full technical impact (Technical Impact: total), but at the time of publication, exploitation in the wild is not fixed (Exploitation: none). Bye.



Attack Surface: Why Port 29999 is Available More Frequently Than It Seems
Universal Robots in the advisory emphasizes: "UR robots are not designed for direct access from the Internet, and direct incoming access is usually prevented by the corporate firewall." It sounds on paper. In practice, it's different.



Vera Mens (Clauroty) in the comment to SecurityWeek: "Clients use the Ethernet port to transmit information to a centralized management system, to work with legacy protocols like MODBUS and EtherNet/IP, as well as for remote control of the box. Although these networks are usually not exposed to the Internet, they are often flat and devoid of proper segmentation – so getting the initial foothold may not be difficult.”



Typical OT network architecture with UR cobots: the controller is connected to the factory LAN along with PLC, HMI panels and cameras. Factory LAN has a gateway to the corporate network, DMZ between them - in isolated cases. The engineering workstation with two network interfaces serves as a bridge between IT and OT. VPN access of contractors to service robots is another entry point. Attack vector: Compromising the engineering work station or obtaining a VPN access contractor, then - the detection of an open port 29999 on the controller and sending payload. Two hops from corporate mail to the robot controller are a typical reality.



Location in the attack chain: from reconnaissance to full control
Intelligence: fingerprinting UR-robots in OT-segment
[Applicable to: internal pentest, grey/white box, after accessing OT VLAN]



Universal Robots controllers use a distinctive set of ports: 29999 (Dashboard Server, targeted for CVE-2026-8153), 30001-30004 (Primary/Secondary Client Interface and RTDE), 502 (Modbus TCP, if included). Scanning these ports unambiguously identifies the UR controller. The step corresponds to the 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 - it's not a reinsurance, but a necessity. UR controllers work on embedded Linux and are not designed for intensive scanning traffic. Without rate limiting, the controller can stop responding to requests - on the production object it is an emergency stop. Explain later to the customer why the conveyor stood because of your nmap.



For passive reconnaissance (T1040, Network Sniffing) Sufficimal enough Wireshark on the mirrored port of the switch with filter tcp.port == 29999 - if Dashboard Server is used by legitimate management systems, text commands are visible in plaintext. Filter modbus discloses the interaction of the controller with PLC: function code 0x03 (Read Holding Registers) - data reading, 0x06 and 0x10 (Write Single/Multiple Registers) - management commands. Everything is open, no encryption.



Operation Dashboard Server (T1190, T1059)
[Applicable: internal pentest, grey/white box; only on the URSim test bench or insulated controller]



Dashboard Server accepts text commands via TCP. Connection to the service is trivial:




Python:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("<target_ip>", 29999))
print(s.recv(1024).decode())
When connecting, Dashboard Server sends a banner with the PolyScope version. Version below 5.25.1 - the controller is vulnerable. Public PoC-Extold for CVE-2026-8153 at the time of writing, but the mechanics is standard for CWE-78: Insertion of the team separator into the field, which is transmitted by the shell-interpret device without sanitaryization. The result of successful operation is the execution of arbitrary commands with the privileges of the Dashboard Server process at the Debian-based GNU/Linux controller. No increase in privileges is required - Dashboard Server and so works with sufficient rights.



Post-exploitation and Lateral Movement (T1210, T1489, T1565.002)
After receiving shell on the UR controller, the attacker gets to the file system: the robot programs (.urp), URCaps-plagines (according to Alias Robotics, stored in /root/.urcaps as unencrypted ZIP archives - yes, in /root/, and yes, ZIP without a password), safety limits configuration. The controller is connected to other OT devices via Ethernet and works as a pivot point for Exploitation of Remote Services.T1210, Lateral Movement) including for the operation of the same CVE-2026-8153 on the neighboring boxes. One PoC, five targets, is automated in a minute.



The impact includes Service Stop (T1489) - stop the program of the robot - and Transmitted Data Manipulation (T1565.002) - the substitution of data transmitted to a centralized management system. Through the Modbus TCP (port 502), the attacker can act on related equipment: record holding values in the registers of PLC function through codes 0x06 and 0x10.



Practical exploration of UR-robots: a turn-based scenario
URSim is a free Universal Robots controller simulator that reproduces Dashboard Server and all client interfaces. For laboratory testing, this is the only safe option. On a live controller to experiment without approval - the path to a criminal case and a broken conveyor.



Step 1: Detection of controllers. Run Nmap with UR-specific ports and hard rate limit. Expected result: open ports 2999 and 30001-30004 on GNU/Linux host. If there is more than one cobot on the network, they will all respond in the same way, because the configuration is copied as a copy.



Step 2: Definition of PolyScope version. Connecting to Dashboard Server via nc <target> 29999 or Python socket. The banner contains a version of PolyScope. Version < 5.25.1 - can be fixed in the report as Critical.



Step 3: Passive Traffic Analysis. Configuring a SPAN port on an OT-segment switch (measurement with ICS engineers is mandatory). Wireshark with filter tcp.port == 29999 Shows all commands to Dashboard Server in plaintext. Immediately you can see who else communicates with the controller and what commands he sends.



Step 4: Documentation. Fixing versions of PolyScope, a list of open ports, availability or lack of network segmentation. Formation of recommendations: upgrade to 5.25.1, restriction of access to port 29999, implementation of monitoring.



The historic surface of the attack of Universal Robots
CVE-2026-8153 - not the first critical problem in the UR household. According to Alias Robotics, dozens of vulnerabilities were detected in CB 3.1 controllers, a significant part - a strong high (7.0 +) or higher.



Characteristic findings from that audit:



CVE-2016-6210 (CVSS 5.9, CWE-200) - user enumeration through a timing attack on OpenSSH < 7.3; affected UR controllers as an inherited vulnerability of a third-party component. OpenSH used BLOWFISH hashing for non-existent users, which allowed to list accounts by difference in response time. EPSS - 0.8894 (99.76th Percentage), public PoCs are available (EDB-40113, EDB-40136). In fact, even OpenSH on the controller is leaky.
Unencrypted URCaps - intellectual property (plugins UR+) is stored in /root/.urcapsin the form of ordinary ZIP-archives. Extilting the entire IP per second. Zip. No password. V /root/.
Complete lack of authentication - Alias Robotics has confirmed the absence of encryption, authentication and authorization in all proven firmware. Anyway. Not a single mechanism.
The position of Universal Robots was that the robot system is designed to work in the network of trusted devices, and openness provides ease of integration. This architectural philosophy - "security through trust in the network" - and explains the appearance CVE-2026-8153 After seven years. Philosophy has not changed, and networks have become more complex.
 
Top Bottom