eProsima Fast DDS (formerly Fast RTPS) is a C++ implementation of the Data Distribution Service standard of the Object Management Group. Even with the application of SROS2, due to the issue where the data (`p[UD]`) and `guid` values used to disconnect between nodes are not encrypted, a vulnerability has been discovered where a malicious attacker can forcibly disconnect a Subscriber and can deny a Subscriber attempting to connect. Afterwards, if the attacker sends the packet for disconnecting, which is data (`p[UD]`), to the Global Data Space (`239.255.0.1:7400`) using the said Publisher ID, all the Subscribers (Listeners) connected to the Publisher (Talker) will not receive any data and their connection will be disconnected. Moreover, if this disconnection packet is sent continuously, the Subscribers (Listeners) trying to connect will not be able to do so. Since the initial commit of the `SecurityManager.cpp` code (`init`, `on_process_handshake`) on Nov 8, 2016, the Disconnect Vulnerability in RTPS Packets Used by SROS2 has been present prior to versions 2.13.0, 2.12.2, 2.11.3, 2.10.3, and 2.6.7.
The vulnerability results from the fact that RTPS disconnection packets (data `p[UD]`) and `guid` values used for disconnecting nodes are not encrypted, even when SROS2 is active. An attacker can impersonate an existing Publisher (Talker) by using its ID and send a forged disconnection packet to the Global Data Space multicast address (`239.255.0.1:7400`). As a result, all Subscribers (Listeners) connected to that Publisher are disconnected and stop receiving data. If the attacker sends such packets continuously, new attempts by Subscribers to connect are effectively blocked (denial of service).
An attacker can permanently deprive Subscribers of the ability to receive data and prevent new connections from being established, leading to denial of service (DoS) across the entire network of DDS nodes. In critical environments (e.g., ROS 2 robotic systems), this could result in loss of control over physical devices.
Update eProsima Fast DDS to version 2.13.0, 2.12.2, 2.11.3, 2.10.3, or 2.6.7 (depending on the branch being used). Patches are available in the project repository on GitHub (commits: 072cbc9d, e1869863, f07a0213, f2e5ceae). Network segmentation should also be considered to restrict access to the multicast address `239.255.0.1:7400` to trusted nodes only.
eProsima Fast DDS in all versions earlier than 2.13.0, 2.12.2, 2.11.3, 2.10.3, and 2.6.7 — the vulnerability has been present since November 8, 2016 (from the first commit of the SecurityManager.cpp file).
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:HEprosima Fast Dds
APPEprosima< 2.6.72.10.0 – 2.10.3 (excl.)2.11.0 – 2.11.3 (excl.)2.12.0 – 2.12.2 (excl.)
Related vulnerabilities
eProsima Fast-DDS: błędna walidacja odwołania certyfikatów/tokenów
Heap buffer overflow w eprosima Fast DDS via manipulowany DATA Submessage
eProsima Fast DDS — use-after-free przez nieprawidłowy pakiet DATA_FRAG
eprosima Fast DDS is a C++ implementation of the DDS (Data Distribution Service) standard of the OMG (Object M...
eprosima Fast DDS is a C++ implementation of the DDS (Data Distribution Service) standard of the OMG (Object M...