☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-29911

CVE-2025-29911 Buffer Overflow in Cryptolib
📅 PUBLISHED: 2025-03-17 22:20 UTC 🔄 UPDATED: 2026-09-23 20:11 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.74%
👁️
0.74% probability
18.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
8.9
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-29911 is a critical heap buffer overflow vulnerability in CryptoLib versions 1.3.3 and prior, a software library implementing the CCSDS Space Data Link Security Protocol - Extended Procedures (SDLS-EP) for securing communications between spacecraft running the core Flight System (cFS) and ground stations. The flaw resides in the Crypto_AOS_ProcessSecurity function, specifically during processing of the Frame Error Control Field (FECF). An attacker can trigger a Denial of Service (DoS) or potentially achieve Remote Code Execution (RCE) by sending a maliciously crafted AOS frame with insufficient length. The vulnerability occurs because the code reads from the p_ingest buffer at indices max_frame_size - 2 and max_frame_size - 1 without verifying that len_ingest is sufficiently large, leading to a heap buffer overflow when len_ingest is smaller than max_frame_size. As of the time of publication, no known patched versions exist, making this a zero-day vulnerability in the space communications domain.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects the CryptoLib library, which is a critical component in the space software supply chain, particularly for missions using NASA's core Flight System (cFS). The library is not distributed through typical package managers like NPM, PyPI, Go, or Ruby, but rather as source code integrated into spacecraft flight software. Organizations using CryptoLib must manually patch or mitigate the vulnerability, as no official patch is available.

CVSS Breakdown & Threat Level

The CVSS score is listed as 0.0 in the NVD data, likely due to incomplete scoring. Based on the vulnerability characteristics, a reasonable CVSS v3.1 vector would be:

  • Attack Vector (AV): Network (AV:N) - The vulnerability can be exploited remotely by sending a crafted AOS frame.
  • Attack Complexity (AC): Low (AC:L) - No special conditions are required beyond sending the malicious frame.
  • Privileges Required (PR): None (PR:N) - No authentication is needed.
  • User Interaction (UI): None (UI:N) - No user action is required.
  • Scope (S): Unchanged (S:U) - The vulnerability affects only the vulnerable component.
  • Confidentiality (C): High (C:H) - Potential for arbitrary code execution could lead to data exfiltration.
  • Integrity (I): High (I:H) - Code execution could allow modification of spacecraft data.
  • Availability (A): High (A:H) - The vulnerability can cause a denial of service.

Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H Estimated Base Score: 9.8 (Critical)

Threat Level: Critical. The vulnerability affects space systems where remote exploitation could lead to loss of spacecraft control or data compromise.

Deep Dive & Mechanics

The vulnerability is a classic heap buffer overflow in the Crypto_AOS_ProcessSecurity function of CryptoLib. The function processes AOS (Advanced Orbiting Systems) frames, which are part of the CCSDS (Consultative Committee for Space Data Systems) protocol stack. The flaw occurs during the processing of the Frame Error Control Field (FECF), which is a 2-byte CRC appended to the end of the frame.

Root Cause: The vulnerable code attempts to read the FECF from the p_ingest buffer at indices current_managed_parameters_struct.max_frame_size - 2 and current_managed_parameters_struct.max_frame_size - 1. However, it does not check whether the actual length of the ingested data (len_ingest) is at least max_frame_size. If an attacker sends a frame with len_ingest smaller than max_frame_size, the code reads beyond the allocated heap buffer, causing a heap buffer overflow.

Attack Vector: An attacker with network access to the spacecraft or ground station can send a specially crafted AOS frame with a small payload length but a large max_frame_size parameter. This triggers the overflow when the FECF is processed.

Impact:

  • Denial of Service (DoS): The overflow can corrupt heap metadata, causing the application to crash.
  • Remote Code Execution (RCE): With careful heap manipulation, an attacker could overwrite function pointers or other critical data structures to achieve arbitrary code execution.

Vulnerable vs. Patched Code

Vulnerable Code (CryptoLib <= 1.3.3):

// In Crypto_AOS_ProcessSecurity function
// Assume p_ingest is a heap-allocated buffer of size max_frame_size
// len_ingest is the actual length of data in p_ingest

// Vulnerable: No check that len_ingest >= max_frame_size
uint16_t fecf = (p_ingest[current_managed_parameters_struct.max_frame_size - 2] << 8) |
                (p_ingest[current_managed_parameters_struct.max_frame_size - 1]);

Patched Code (Hypothetical fix):

// Patched: Check that len_ingest is at least max_frame_size
if (len_ingest < current_managed_parameters_struct.max_frame_size) {
    // Handle error: frame too short
    return CRYPTO_LIB_ERROR_INVALID_FRAME;
}
uint16_t fecf = (p_ingest[current_managed_parameters_struct.max_frame_size - 2] << 8) |
                (p_ingest[current_managed_parameters_struct.max_frame_size - 1]);

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A target system running CryptoLib <= 1.3.3 with network access to send AOS frames.
  • Knowledge of the max_frame_size parameter used by the target.

Exploitation Steps:

  1. Reconnaissance: Determine the max_frame_size value used by the target (e.g., by analyzing protocol documentation or previous communications).
  2. Craft Malicious Frame: Create an AOS frame with a payload length (len_ingest) smaller than max_frame_size. For example, set len_ingest = 10 and max_frame_size = 1500.
  3. Send Frame: Transmit the crafted frame to the target's CryptoLib processing endpoint.
  4. Trigger Overflow: The Crypto_AOS_ProcessSecurity function will attempt to read from indices max_frame_size - 2 and max_frame_size - 1, which are beyond the allocated buffer, causing a heap overflow.
  5. Achieve RCE (Advanced): Use heap spraying or other techniques to control the overflowed data and overwrite a function pointer or return address.

Example Python Script (Conceptual):

import socket

def craft_malicious_frame(max_frame_size, len_ingest):
    # Create a minimal AOS frame with insufficient length
    frame = b'\x00' * len_ingest  # Placeholder for actual frame structure
    # The vulnerability triggers when processing FECF at indices max_frame_size-2 and max_frame_size-1
    return frame

def exploit(target_ip, target_port, max_frame_size=1500):
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    malicious_frame = craft_malicious_frame(max_frame_size, len_ingest=10)
    sock.sendto(malicious_frame, (target_ip, target_port))
    sock.close()

if __name__ == "__main__":
    exploit("192.168.1.100", 12345)

Blue Team

Detection:

  • Monitor for AOS frames where the payload length is significantly smaller than the expected max_frame_size.
  • Use network intrusion detection systems (NIDS) to flag anomalous frame sizes.

Mitigation:

  • Apply input validation to ensure len_ingest >= max_frame_size before processing the FECF.
  • Use heap canaries or address sanitizers during development to detect overflows.
  • Isolate CryptoLib processing in a sandboxed environment with limited privileges.

Hunting:

  • Search for crashes or memory corruption errors in logs related to CryptoLib.
  • Analyze network traffic for AOS frames with abnormal length fields.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • AOS frames with len_ingest significantly smaller than max_frame_size (e.g., len_ingest < max_frame_size - 2).
    • Repeated connection attempts to CryptoLib processing ports (e.g., UDP port 12345).
  • Host IOCs:
    • Heap corruption errors in application logs.
    • Unexpected crashes or segmentation faults in the CryptoLib process.
    • Memory dumps showing out-of-bounds reads from heap buffers.
  • File IOCs:
    • Modified CryptoLib binaries or libraries with patched code (if attacker attempts to backdoor).

Detection Engineering

YARA Rule

rule CVE_2025_29911_CryptoLib_HeapOverflow {
    meta:
        description = "Detects heap buffer overflow in CryptoLib AOS frame processing"
        author = "Valters IT"
        date = "2025-04-01"
        reference = "CVE-2025-29911"
    strings:
        $s1 = "Crypto_AOS_ProcessSecurity" ascii wide nocase
        $s2 = "max_frame_size" ascii wide nocase
        $s3 = "p_ingest" ascii wide nocase
    condition:
        all of ($s*) and filesize < 10MB
}

Sigma Rule

title: CVE-2025-29911 CryptoLib Heap Buffer Overflow Detection
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects network traffic indicative of exploitation attempts against CVE-2025-29911
author: Valters IT
date: 2025-04-01
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2025-29911
logsource:
    category: network_connection
    product: suricata
detection:
    selection:
        app_protocol: 'ccsds'
        frame_length: '< 100'  # Example threshold, adjust based on environment
        max_frame_size: '> 1000'  # Example threshold
    condition: selection
falsepositives:
    - Legitimate short frames in test environments
level: high

Suricata Rule

alert udp any any -> any any (msg:"CVE-2025-29911 CryptoLib Heap Buffer Overflow Attempt"; content:"|00 00|"; offset:0; depth:2; byte_test:2,<,100,0; byte_test:2,>,1000,2; classtype:attempted-dos; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable CryptoLib processing if not essential, or restrict network access to trusted sources only.
  2. Apply input validation in the Crypto_AOS_ProcessSecurity function to check that len_ingest >= max_frame_size before accessing the FECF.
  3. Use memory-safe languages or add bounds checking in C/C++ code.

Long-term Fixes:

  • Patch CryptoLib by adding the missing length check (see patched code above).
  • Monitor for official patches from the CryptoLib maintainers.
  • Conduct code audits for similar vulnerabilities in other parts of the library.

Workarounds:

  • Network segmentation: Isolate CryptoLib processing systems from untrusted networks.
  • Intrusion prevention: Deploy Suricata or Snort rules to block malicious AOS frames.
  • Heap hardening: Enable ASLR, NX, and stack canaries in the build environment.

Valters IT
Securing Space Communications, One Byte at a Time

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-29911/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.