ZeroHour

CVE-2026-22590

large

Out-of-Bounds Read in eProsima Fast DDS RTPS DATA_FRAG Processing

CVSS 3.1
9.1 critical
EPSS
<1%p32
Published
()
Modified
AI analysis

eProsima Fast DDS, the C++ implementation of the OMG DDS standard, contains a remotely triggerable out-of-bounds read (CWE-125/CWE-131, CVSS 9.1 critical) when processing RTPS DATA_FRAG submessages in versions prior to 2.6.12, 2.14.6, 3.2.4, 3.3.1, and 3.4.2. An attacker who can send packets to a participant can craft a DATA_FRAG marked as the LAST fragment with a large sampleSize but a small actual payload; the receiver computes incoming_length from sampleSize and calls memcpy() without checking that the received datagram is that long, so CacheChange_t::add_fragments() reads past the UDP buffer into adjacent heap memory. The leaked bytes are copied into the reassembly buffer, and in Discovery Server deployments the resulting CacheChange_t can be relayed to other participants, meaning a newly joining participant may receive heap contents such as pointer values that could aid ASLR bypass. Any deployment running a vulnerable Fast DDS version is affected where an attacker can reach its RTPS traffic, notably ROS 2 (where Fast DDS is the default middleware) as well as standalone robotics, simulation, and industrial DDS systems. No exploitation has been reported, no public proof-of-concept exists, and the issue is not in the CISA KEV; fixed releases are already available.

What to do: Upgrade Fast DDS to 2.6.12, 2.14.6, 3.2.4, 3.3.1, or 3.4.2, matching your deployment's version line. Until patched, restrict network access to RTPS endpoints so only trusted hosts can send DATA_FRAG traffic, and be aware that Discovery Server participants may receive relayed leaked heap data from vulnerable relays. No public exploit is known, but the flaw requires no authentication or user interaction, so prioritize patching deployments reachable by untrusted networks or third-party participants.

Affected
eProsima Fast DDSVersions prior to 2.6.12, 2.14.6, 3.2.4, 3.3.1, and 3.4.2 (fixed in those releases)
Estimated exposure
large≈100,000–1,000,000 installations (Fast DDS ships as the default ROS 2 middleware plus standalone robotics/industrial deployments; most run on internal networks) — Fast DDS is the default RMW implementation bundled with ROS 2, whose cumulative install base is plausibly in the hundreds of thousands, and it is common in robotics, simulation, and industrial systems, but these are typically…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

eprosima Fast DDS is a C++ implementation of the DDS (Data Distribution Service) standard of the OMG (Object Management Group). Versions prior to 2.6.12, 2.14.6, 3.2.4, 3.3.1, and 3.4.2 have a remotely triggerable Out-of-Bounds Read while processing RTPS `DATA_FRAG` submessages. An attacker can craft a `DATA_FRAG` with a large `sampleSize` but a small actual payload, and set `fragmentsInSubmessage` such that the receiver treats the packet as the LAST fragment**. In this LAST-fragment path, Fast-DDS computes `incoming_length` based on `sampleSize` and calls `memcpy()` without validating `incoming_data.length >= incoming_length`. As a result, `CacheChange_t::add_fragments()` reads past the received UDP datagram buffer and into adjacent heap memory, copying those bytes into the reassembly buffer. In a Discovery Server deployment, the resulting `CacheChange_t` can be relayed to other participants, meaning that a newly joining participant may receive leaked heap memory (e.g., pointer values that could aid ASLR bypass). Versions 2.6.12, 2.14.6, 3.2.4, 3.3.1, and 3.4.2 fix the issue.

Weakness
CWE-125, CWE-131
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H

In the news

No ingested article mentions this CVE yet.