
PoC
CryptoLib provides a software-only solution using the CCSDS Space Data Link Security Protocol - Extended Procedures (SDLS-EP) to secure communications between a spacecraft running the core Flight System (cFS) and a ground station. In versions 1.3.3 and prior, a Heap Overflow vulnerability occurs in the Crypto_TM_ProcessSecurity function (crypto_tm.c:1735:8). When processing the Secondary Header Length of a TM protocol packet, if the Secondary Header Length exceeds the packet's total length, a heap overflow is triggered during the memcpy operation that copies packet data into the dynamically allocated buffer p_new_dec_frame. This allows an attacker to overwrite adjacent heap memory, potentially leading to arbitrary code execution or system instability.
Impact: A crafted packet can trigger heap memory corruption during memcpy operations into the p_new_dec_frame buffer, potentially leading to:
Patched Version: 810fd66d592c883125272fef123c3240db2f170f
poc.py - Dual-mode Python script:
./poc.py generate [overflow_amount]
Parameters:
overflow_amount: Bytes to overflow (default: 1024)Example:
# Generate packet with 2048-byte overflow
./poc.py generate 2048 > evil_packet.hex
./poc.py check <hex_packet>
Parameters:
<hex_packet>: Hexadecimal string of TM packetExample:
# Analyze generated packet
./poc.py check $(cat evil_packet.hex)
[6-byte Primary Header][2-byte Secondary Header Length][Payload]
The script creates packets where:
Secondary Header Length > (Total Packet Length - Header Offset)memcpy operation attempts to copy more bytes than availableavailable_space = total_length - (offset + length_field_size)
if claimed_length > available_space:
trigger_alert()
This software is intended for:
Do NOT use on production systems or without explicit authorization. The maintainers assume no liability for misuse of this tool.