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.
Published: 2026-09-09
Score: 9.1 Critical
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Fast‑DDS is a popular C++ implementation of the DDS standard used in distributed systems; a flaw allows an attacker to craft a DATA_FRAG RTPS submessage with an oversized sampleSize parameter and a small payload, causing the receiver to treat the packet as the last fragment. In that execution path the library calculates an expected data length based on the inflated sampleSize and copies the data into a reassembly buffer without verifying that the actual payload length exceeds this expectation, resulting in an out‑of‑bounds read (CWE‑125) that copies adjacent heap memory into the CacheChange_t structure and exposes sensitive information such as pointer values that can assist in bypassing address‑space layout randomization (CWE‑131); the leak is particularly dangerous in Discovery Server deployments where the corrupted CacheChange_t can be forwarded to new participants, enabling the disclosure of heap contents to newly joining peers.

Affected Systems

All eProsima Fast‑DDS installations running versions older than 2.6.12, 2.14.6, 3.2.4, 3.3.1, or 3.4.2 are vulnerable; the issue is present in the core RTPS mesh handling code and affects deployments that use the Discovery Server component which aggregates and forwards cache changes to other participants.

Risk and Exploitability

The CVSS score of 9.1 indicates a critical severity, and the vulnerability is remotely triggerable without authentication, allowing an attacker on the same network to craft malicious packets; although the EPSS score is not available, the absence of an assignment in the CISA KEV catalog does not diminish the attack surface—malicious actors can exploit this flaw by sending crafted DATA_FRAG frames over UDP or other transport layers used by DDS, thereby potentially hijacking the discovery process to obtain leaked heap data that may aid further attacks such as code execution.

Generated by OpenCVE AI on September 9, 2026 at 18:04 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade eProsima Fast‑DDS to a fixed release (2.6.12, 2.14.6, 3.2.4, 3.3.1, or 3.4.2) to apply the vendor patch that validates fragment lengths before copying data.
  • Restrict DDS traffic to trusted participants by configuring firewall rules or access control lists that limit inbound UDP traffic on the DDS ports to known peers, reducing the surface for remote exploitation.
  • If immediate upgrade is not feasible, isolate the Discovery Server behind a demilitarized zone and monitor for anomalous RTPS traffic; consider disabling discovery services for untrusted networks or applying network segmentation to limit exposure.

Generated by OpenCVE AI on September 9, 2026 at 18:04 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 09 Sep 2026 17:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 09 Sep 2026 16:00:00 +0000

Type Values Removed Values Added
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.
Title Fast-DDS Discovery Server: Out-of-Bounds Read & Heap Memory Disclosure via DATA_FRAG  sampleSize / fragmentsInSubmessage
Weaknesses CWE-125
CWE-131
References
Metrics cvssV3_1

{'score': 9.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-09T16:08:57.108Z

Reserved: 2026-01-07T21:50:39.532Z

Link: CVE-2026-22590

cve-icon Vulnrichment

Updated: 2026-09-09T16:08:51.419Z

cve-icon NVD

Status : Received

Published: 2026-09-09T16:17:02.387

Modified: 2026-09-09T17:17:19.393

Link: CVE-2026-22590

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-09T18:15:13Z

Weaknesses
  • CWE-125

    Out-of-bounds Read

  • CWE-131

    Incorrect Calculation of Buffer Size