
PoC
CryptoLib bietet eine reine Softwarelösung unter Verwendung des CCSDS Space Data Link Security Protocol - Extended Procedures (SDLS-EP) zur Sicherung der Kommunikation zwischen einem Raumfahrzeug, das das core Flight System (cFS) ausführt, und einer Bodenstation. In den Versionen 1.3.3 und früher tritt eine Heap-Overflow-Sicherheitslücke in der Funktion Crypto_TM_ProcessSecurity (crypto_tm.c:1735:8) auf. Bei der Verarbeitung der Secondary Header Length eines TM-Protokollpakets wird ein Heap-Overflow während der memcpy-Operation ausgelöst, wenn die Secondary Header Length die Gesamtlänge des Pakets überschreitet. Dabei werden Paketdaten in den dynamisch allozierten Puffer p_new_dec_frame kopiert. Dies ermöglicht einem Angreifer, angrenzenden Heap-Speicher zu überschreiben, was potenziell zu beliebiger Codeausführung oder Systeminstabilität führen kann.
Auswirkungen: Ein manipuliertes Paket kann während memcpy-Operationen in den p_new_dec_frame-Puffer eine Heap-Speicherbeschädigung auslösen, was potenziell zu Folgendem führen kann:
Patched Version: 810fd66d592c883125272fef123c3240db2f170f
poc.py - Python-Skript mit zwei Modi:
./poc.py generate [overflow_amount]
Parameter:
overflow_amount: Bytes für den Überlauf (Standard: 1024)Beispiel:
# Generate packet with 2048-byte overflow
./poc.py generate 2048 > evil_packet.hex
./poc.py check <hex_packet>
Parameter:
<hex_packet>: Hexadezimalstring des TM-PaketsBeispiel:
# Analyze generated packet
./poc.py check $(cat evil_packet.hex)
[6-byte Primary Header][2-byte Secondary Header Length][Payload]
Das Skript erstellt Pakete, bei denen:
Secondary Header Length > (Total Packet Length - Header Offset)memcpy-Operation versucht, mehr Bytes zu kopieren als verfügbar sindavailable_space = total_length - (offset + length_field_size)
if claimed_length > available_space:
trigger_alert()
Diese Software ist vorgesehen für:
NICHT auf Produktionssystemen oder ohne ausdrückliche Genehmigung verwenden. Die Betreiber übernehmen keine Haftung für Missbrauch dieses Werkzeugs.