Podatność w bibliotece eprosima Fast DDS umożliwia zdalne wywołanie heap buffer overflow poprzez spreparowany pakiet DATA Submessage, co prowadzi do awaryjnego zakończenia procesu. Błąd wynika z przepełnienia liczby całkowitej (integer overflow) w polu payload_size zadeklarowanym jako uint32_t.
▸ Pokaż oryginał (EN)
eprosima Fast DDS is a C++ implementation of the Data Distribution Service standard of the Object Management Group. Prior to versions 2.14.0, 2.13.4, 2.12.3, 2.10.4, and 2.6.8, manipulated DATA Submessage can cause a heap overflow error in the Fast-DDS process, causing the process to be terminated remotely. Additionally, the payload_size in the DATA Submessage packet is declared as uint32_t. When a negative number, such as -1, is input into this variable, it results in an Integer Overflow (for example, -1 gets converted to 0xFFFFFFFF). This eventually leads to a heap-buffer-overflow, causing the program to terminate. Versions 2.14.0, 2.13.4, 2.12.3, 2.10.4, and 2.6.8 contain a fix for this issue.
Atakujący wysyła spreparowany pakiet DATA Submessage z ujemną wartością w polu payload_size (np. -1), które jest zadeklarowane jako typ uint32_t. Wartość ujemna ulega konwersji na bardzo dużą liczbę bez znaku (np. -1 → 0xFFFFFFFF), co prowadzi do integer overflow. Skutkuje to próbą zapisu danych poza granicami przydzielonego bufora na stercie (heap-buffer-overflow), co kończy się awaryjnym zakończeniem procesu. Atak może być przeprowadzony zdalnie przez sieć lokalną bez uwierzytelnienia.
Atakujący może zdalnie wywołać awaryjne zakończenie procesu Fast DDS (Denial of Service). W kontekście podatności heap buffer overflow (CWE-122, CWE-787) nie można wykluczyć możliwości wykonania dowolnego kodu w przestrzeni procesu.
Należy zaktualizować eprosima Fast DDS do wersji 2.14.0, 2.13.4, 2.12.3, 2.10.4 lub 2.6.8, które zawierają poprawkę dla tej podatności. Szczegóły dostępne w repozytorium producenta na GitHub (commit 355706386f4af9ce74125eeec3c449b06113112b).
eprosima Fast DDS w wersjach wcześniejszych niż 2.14.0, 2.13.4, 2.12.3, 2.10.4 oraz 2.6.8
Podatność dotyczy implementacji standardu DDS (Data Distribution Service) stosowanego m.in. w systemach przemysłowych, robotyce i systemach czasu rzeczywistego, co może podnosić rzeczywiste ryzyko w środowiskach OT/ICS.
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:HEprosima Fast Dds
APPEprosima< 2.6.82.7.0 – 2.10.4 (bez)2.11.0 – 2.12.3 (bez)2.13.0 – 2.13.4 (bez)
Powiązane podatności
eProsima Fast-DDS: błędna walidacja odwołania certyfikatów/tokenów
eProsima Fast DDS — use-after-free przez nieprawidłowy pakiet DATA_FRAG
eProsima Fast DDS — podatność rozłączenia subskrybentów RTPS w SROS2
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...