W bibliotece eProsima Fast DDS (implementacja standardu DDS/RTPS) odkryto podatność umożliwiającą nieuwierzytelnionemu atakującemu przymusowe rozłączenie subskrybentów nawet przy włączonym zabezpieczeniu SROS2. Jej wykorzystanie może całkowicie uniemożliwić komunikację między węzłami systemu (np. robotycznego opartego na ROS 2), co stanowi poważne zagrożenie dla dostępności i integralności systemu.
▸ Pokaż oryginał (EN)
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.
Podatność wynika z tego, że pakiety rozłączeniowe RTPS (dane `p[UD]`) oraz wartości `guid` używane do rozłączania węzłów nie są szyfrowane, nawet gdy aktywny jest SROS2. Atakujący może podszyć się pod istniejącego Publisher'a (Talker), używając jego ID, i wysłać sfałszowany pakiet rozłączeniowy na adres multicast Global Data Space (`239.255.0.1:7400`). W wyniku tego wszyscy Subskrybenci (Listeners) połączeni z danym Publisher'em zostają rozłączeni i przestają otrzymywać dane. Jeśli atakujący wysyła takie pakiety w sposób ciągły, nowe próby połączenia Subskrybentów są skutecznie blokowane (denial of service).
Atakujący może trwale pozbawić Subskrybentów możliwości odbierania danych oraz uniemożliwić nawiązywanie nowych połączeń, doprowadzając do odmowy usługi (DoS) w całej sieci węzłów DDS. W środowiskach krytycznych (np. systemy robotyczne ROS 2) może to skutkować utratą kontroli nad urządzeniami fizycznymi.
Należy zaktualizować eProsima Fast DDS do wersji 2.13.0, 2.12.2, 2.11.3, 2.10.3 lub 2.6.7 (w zależności od używanej gałęzi). Patche dostępne są w repozytorium projektu na GitHub (commity: 072cbc9d, e1869863, f07a0213, f2e5ceae). Należy również rozważyć segmentację sieciową ograniczającą dostęp do adresu multicast `239.255.0.1:7400` wyłącznie do zaufanych węzłów.
eProsima Fast DDS we wszystkich wersjach wcześniejszych niż 2.13.0, 2.12.2, 2.11.3, 2.10.3 oraz 2.6.7 — podatność obecna od 8 listopada 2016 r. (od pierwszego commitu pliku SecurityManager.cpp).
Podatność dostępna jest z sieci lokalnej (wektor AV:A) bez uwierzytelnienia i bez interakcji użytkownika. Dotyczy środowisk używających SROS2 — mechanizmu bezpieczeństwa dla ROS 2 opartego na Fast DDS — co czyni ją szczególnie istotną w systemach przemysłowych i robotycznych. Podatność obecna od commitu z 8 listopada 2016 r. w pliku SecurityManager.cpp.
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 (bez)2.11.0 – 2.11.3 (bez)2.12.0 – 2.12.2 (bez)
Powiązane podatności
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...