
PoC
CryptoLib предоставляет программное решение, использующее Протокол безопасности космических линий передачи данных CCSDS - Расширенные процедуры (SDLS-EP) для защиты связи между космическим аппаратом, работающим под управлением базовой полетной системы (cFS), и наземной станцией. В версиях 1.3.3 и ранее обнаружена уязвимость переполнения кучи в функции Crypto_TM_ProcessSecurity (crypto_tm.c:1735:8). При обработке длины вторичного заголовка пакета протокола TM, если длина вторичного заголовка превышает общую длину пакета, происходит переполнение кучи во время операции memcpy, копирующей данные пакета в динамически выделенный буфер p_new_dec_frame. Это позволяет злоумышленнику перезаписывать соседнюю память кучи, что может привести к произвольному выполнению кода или нестабильности системы.
Воздействие: Специально сформированный пакет может вызвать повреждение памяти кучи во время операций memcpy в буфер p_new_dec_frame, что потенциально может привести к:
Исправленная версия: 810fd66d592c883125272fef123c3240db2f170f
poc.py - Сценарий Python с двумя режимами:
./poc.py generate [overflow_amount]
Параметры:
overflow_amount: Количество байтов для переполнения (по умолчанию: 1024)Пример:
# Generate packet with 2048-byte overflow
./poc.py generate 2048 > evil_packet.hex
./poc.py check <hex_packet>
Параметры:
<hex_packet>: Шестнадцатеричная строка TM-пакетаПример:
# Analyze generated packet
./poc.py check $(cat evil_packet.hex)
[6-byte Primary Header][2-byte Secondary Header Length][Payload]
Сценарий создает пакеты, в которых:
Secondary Header Length > (Total Packet Length - Header Offset)memcpy пытается скопировать больше байтов, чем доступноavailable_space = total_length - (offset + length_field_size)
if claimed_length > available_space:
trigger_alert()
Данное программное обеспечение предназначено для:
НЕ используйте на производственных системах или без явного разрешения. Разработчики не несут ответственности за неправомерное использование этого инструмента.