← Back to Feed CACHED · 2026-07-16 07:23:14 · CACHE_KEY CVE-2025-29912
CVE-2025-29912 · CWE-122 · Disclosed 2025-03-17

CryptoLib provides a software-only solution using the CCSDS Space Data Link Security Protocol - Extended…

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A 9.8 CVE that's terrifying if you fly satellites and irrelevant if you don't

CVE-2025-29912 is a heap buffer overflow in NASA's CryptoLib, an open-source implementation of the CCSDS Space Data Link Security Protocol – Extended Procedures (SDLS-EP) used to protect telecommand/telemetry links between spacecraft and ground stations. The bug lives in Crypto_TM_ProcessSecurity (crypto_tm.c:1735): the Secondary Header Length field is masked with & 0x3F (capping at 64) but the code never verifies that 6 + secondary_hdr_len stays inside the ingested packet buffer, so a crafted TM frame causes memcpy to write past the allocated heap chunk. Affected versions are 1.3.3 and earlier; the fix landed in the post-1.3.3 mainline, though follow-on CVEs (CVE-2025-29909, -30216, -30356) show the surrounding parsing code needed additional hardening.

The vendor CVSS of 9.8 (AV:N/AC:L/PR:N/UI:N) is technically correct — the parser takes attacker-controlled bytes with no auth — but the network vector is a purpose-built spacecraft link, not the public internet or a corporate LAN. For the ~0.001% of the world that operates ground station software linking cFS-based spacecraft, this is genuinely critical. For the enterprise defender with 10,000 Windows/Linux hosts, RHEL boxes, and Kubernetes clusters, CryptoLib will not appear on your SBOM. The score is real; the reachable population is not.

"CVSS 9.8 in name only — this is NASA spacecraft comms code, not enterprise infrastructure. Aerospace treats it as critical; everyone else ignores."
02 · The Attack Path

3 steps from start to impact.

STEP 01

Attacker reaches the SDLS-EP framing pipeline

Attacker must be able to deliver a crafted CCSDS TM (Telemetry) frame into a process that calls Crypto_TM_ProcessSecurity. In practice this means the RF uplink/downlink path, the ground station's frame router, or a lab bench feeding cFS. Weaponization would use a hand-rolled scapy/python CCSDS packet crafter — no public PoC beyond the advisory's minimized case.
Conditions required:
  • Access to the spacecraft/ground-station data link or a bus that feeds CryptoLib
  • Knowledge of the deployed SDLS-EP configuration (SPI, MAP)
Where this breaks in practice:
  • CCSDS TM links are not internet-routable; access requires RF proximity, a compromised ground segment, or an insider on the mission network
  • Frame Check Sequence and link-layer validation drop malformed packets before they reach the crypto layer in most flight/ground stacks
Detection/coverage: No commercial scanner (Qualys, Tenable, Rapid7) fingerprints CryptoLib — this is aerospace SBOM territory only. Use syft/grype against the ground-station image or grep for libcryptolib / crypto_tm.c.
STEP 02

Craft the malformed Secondary Header Length

Attacker builds a TM Transfer Frame where the Secondary Header presence bit is set and the length field, after the & 0x3F mask, produces a value larger than len_ingest - 6. The parser trusts the field and issues memcpy(dest, src, 6 + secondary_hdr_len), walking off the end of the heap chunk allocated for the ingested frame.
Conditions required:
  • Ability to set arbitrary bytes in the Secondary Header Flag and Length nibbles
  • No upstream frame-length sanity check in the caller
Where this breaks in practice:
  • Real deployments generally wrap CryptoLib inside a mission-specific handler that already validates frame length against the link's fixed TM frame size (typically 1115 or 2044 bytes)
Detection/coverage: ASan/UBSAN builds catch this immediately; production flight builds do not run instrumentation.
STEP 03

Heap overflow → DoS, potentially RCE

The out-of-bounds write corrupts adjacent heap metadata. Reliable outcome is process crash (DoS on the ground-station security frontend or on cFS's crypto app). Turning it into RCE requires heap-shape control and knowledge of the target glibc/ptmalloc version — non-trivial on flight software with static allocators, more feasible on a Linux ground station.
Conditions required:
  • Repeatable frame injection to spray/shape the heap
  • Absence of hardening flags (_FORTIFY_SOURCE=2, heap canaries)
Where this breaks in practice:
  • cFS on RTEMS/VxWorks uses static memory pools — classic ptmalloc exploitation techniques don't apply
  • Ground stations are typically air-gapped or on dedicated mission WANs monitored by the operations team
Detection/coverage: Crashes surface in cFS Event Services and ground-station syslog; anomalous TM frame length distributions are visible to any link-layer analyzer.
03 · Intelligence Metadata

The supporting signals.

CVECVE-2025-29912 — Heap Buffer Overflow in Crypto_TM_ProcessSecurity
CWECWE-122 (Heap-based Buffer Overflow)
Vendor CVSS9.8 CRITICAL AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — network vector is the CCSDS link, not the Internet
EPSS0.01129 (~1.1%) — negligible predicted exploitation probability
KEVNot listed. No CISA KEV entry as of 2026-07-16
Affectednasa/CryptoLib ≤ 1.3.3
Fixed inPost-1.3.3 mainline commit adding secondary-header bounds check; follow-on CVEs (29909, 30216, 30356) indicate the parser required multiple rounds of hardening — track the main branch
PoCMinimized reproducer in the GHSA advisory (GHSA-v3jc-5j74-hcjv). No public weaponized exploit; no Metasploit/Nuclei module
In-the-wildNo observed exploitation. GreyNoise / Shodan / Censys do not track SDLS-EP endpoints — the protocol runs over RF and mission-dedicated links
Disclosed2025-03-17 by NASA Goddard via GitHub Security Advisory
Deployment populationNASA cFS-based missions, aerospace primes, university cubesat programs, ESA experimental ground stations — measured in the low hundreds globally
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to LOW (3.2/10)

Downgraded from CRITICAL 9.8 to LOW because the *decisive factor* is installed-base share below 0.01% of enterprise environments — CryptoLib is aerospace ground-segment/flight software, not a component that exists on typical enterprise SBOMs. If you operate a CCSDS ground station or cFS-based spacecraft this bug is a legitimate CRITICAL and the LOW rating does not apply to you; treat this verdict as scoped to general-purpose enterprise IT.

HIGH Vulnerability technical accuracy — heap overflow is real and confirmed by NASA
HIGH Non-existence in enterprise IT environments
MEDIUM Exploitability to RCE (vs. DoS) on real flight builds

Why this verdict

  • Reachable population is effectively zero for enterprise IT. CryptoLib is not in RHEL, Ubuntu, Debian, Alpine, or any major container base image. It ships only with NASA cFS and aerospace forks.
  • Network vector is not the Internet. AV:N in CVSS terminology means "across a network" — here that network is a CCSDS TM link, reached via RF, mission fiber, or an insider on the ground segment. There is no shodan-scannable attack surface.
  • Role multiplier — flight/ground software: On a NASA cFS spacecraft or a mission control ground station, the chain succeeds and blast radius is spacecraft compromise / telemetry corruption / potential safety-of-flight impact. That is a genuine floor of CRITICAL for aerospace operators, but the canonical component base is aerospace-only — general enterprises hold ~0% share, so the enterprise verdict floor drops out.
  • No KEV, EPSS 1.1%, no weaponized PoC. Zero indicators of opportunistic exploitation.
  • Follow-on CVEs (29909/30216/30356) mean the fix chain must be tracked as a set — patching only 29912 leaves siblings open. This is a maintenance note, not a severity driver.

Why not higher?

MEDIUM or higher would require either a plausible enterprise SBOM footprint (there is none) or evidence of active exploitation against ground stations (there is none). CRITICAL would require the CryptoLib parser to be reachable from the public internet on typical corporate infrastructure, which it is not.

Why not lower?

Not IGNORE because aerospace defenders, cubesat operators, and defense/space primes DO run this code and for them a crafted TM frame ending in heap corruption of the security frontend is a real safety-relevant bug. Documenting rationale without action would be wrong for that sub-population.

05 · Compensating Control

What to do — in priority order.

  1. Inventory: confirm CryptoLib is not on your SBOM — Run syft / grype / trivy across build artifacts and container images searching for cryptolib, crypto_tm.c, Crypto_TM_ProcessSecurity, and NASA cFS signatures. If nothing hits — and it won't in 99.99% of enterprises — close the ticket with rationale. Complete inventory sweep within the noisgate LOW backlog window (no SLA).
  2. If you DO ship CryptoLib: upgrade past 1.3.3 and pull sibling CVE fixes — Track the nasa/CryptoLib main branch and pull the fixes for CVE-2025-29909, -29912, -30216, and -30356 as a set — patching only one leaves the parser exploitable via a neighboring code path. For aerospace operators this is a CRITICAL for you and should be handled under noisgate mitigation SLA ≤ 3 days.
  3. Enforce upstream frame-length validation — Wrap Crypto_TM_ProcessSecurity in a caller-side length check that rejects any frame whose declared secondary header length exceeds len_ingest - 6. This is a durable defense across the sibling CVEs and takes effect immediately without waiting on a library release.
  4. Rebuild with hardening flags — Compile flight/ground builds with -D_FORTIFY_SOURCE=2 -fstack-protector-strong -Wl,-z,relro,-z,now and, on ground-station Linux, enable ASan in test rigs. Reduces the exploitability of any residual parser bug.
What doesn't work
  • EDR / AV — CrowdStrike, SentinelOne, Defender do not have signatures for CCSDS frame malformations and are not deployed on RTEMS/VxWorks flight targets.
  • WAF / NGFW — CCSDS TM traffic does not traverse HTTP, TLS, or IP paths that a WAF inspects. Palo Alto App-ID has no signature for SDLS-EP.
  • Perimeter patching schedule for corporate infra — There is nothing to patch on your Windows/Linux fleet. Do not create a ticket per host; this is an SBOM/vendor-package question.
06 · Verification

Crowdsourced verification payload.

Run this on any Linux build server, container-image scanner host, or ground-station box. It searches installed binaries and source trees for CryptoLib and reports the version. Invoke as ./check-cryptolib.sh /opt /usr/local /srv/cfs. No root required for read-only scans; use root if you need to walk /opt on locked-down systems.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# noisgate: CVE-2025-29912 CryptoLib presence + version check
# Usage: ./check-cryptolib.sh [paths...]
# Exit: 0 PATCHED/absent, 1 VULNERABLE, 2 UNKNOWN
set -u
PATHS=("${@:-/opt /usr/local /usr/lib /srv}")
STATUS=0
FOUND=0

version_lte_133() {
  # returns 0 if $1 <= 1.3.3
  local v=$1
  printf '%s\n1.3.3\n' "$v" | sort -V | head -1 | grep -qx "$v"
}

for P in "${PATHS[@]}"; do
  [ -d "$P" ] || continue
  # binary/library search
  while IFS= read -r hit; do
    FOUND=1
    echo "[hit] $hit"
    # try to extract a version string embedded in the binary
    v=$(strings "$hit" 2>/dev/null | grep -Eo 'CryptoLib[[:space:]]*v?[0-9]+\.[0-9]+\.[0-9]+' | head -1 | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+')
    if [ -n "$v" ]; then
      if version_lte_133 "$v"; then
        echo "VULNERABLE: CryptoLib $v at $hit (<=1.3.3)"
        STATUS=1
      else
        echo "PATCHED: CryptoLib $v at $hit"
      fi
    else
      echo "UNKNOWN version for $hit — inspect manually"
      [ $STATUS -eq 0 ] && STATUS=2
    fi
  done < <(find "$P" -type f \( -name 'libcryptolib*' -o -name 'cryptolib*' -o -name 'crypto_tm.c' \) 2>/dev/null)
done

if [ $FOUND -eq 0 ]; then
  echo "PATCHED: CryptoLib not present in scanned paths — this host is not affected."
  exit 0
fi
exit $STATUS
07 · Bottom Line

If you remember one thing.

TL;DR
For 99.99% of enterprise fleets: you do not run CryptoLib — confirm absence with an SBOM/grype sweep, document the rationale, and close. Verdict is LOW, so per the noisgate mitigation SLA there is no mitigation deadline, and per the noisgate remediation SLA any residual finding lands in the 365-day backlog window. If you are aerospace / defense-space / a cubesat operator or run NASA cFS ground software, this is CRITICAL for you personally: mitigate within 3 days by wrapping Crypto_TM_ProcessSecurity with a caller-side length check, and remediate within 90 days by upgrading past 1.3.3 and pulling the sibling fixes for CVE-2025-29909, -30216, and -30356 as one bundle — patching 29912 alone leaves the parser exploitable via neighboring paths.

Sources

  1. NVD — CVE-2025-29912
  2. GitHub Security Advisory GHSA-v3jc-5j74-hcjv
  3. Red Hat Security — CVE-2025-29912
  4. nasa/CryptoLib releases
  5. Sibling advisory GHSA-3f5x-r59x-p8cf (Crypto_TC_ProcessSecurity)
  6. Sibling advisory GHSA-q4v2-fvrv-qrf6 (Crypto_TC_Prep_AAD)
  7. AISLE research on NASA CryptoLib (CVE-2025-59534)
  8. CCSDS SDLS-EP Blue Book (355.1-B-1)
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.