
PoC
O CryptoLib fornece uma solução apenas de software usando o Protocolo de Segurança de Enlace de Dados Espaciais CCSDS - Procedimentos Estendidos (SDLS-EP) para proteger as comunicações entre uma espaçonave executando o core Flight System (cFS) e uma estação terrestre. Nas versões 1.3.3 e anteriores, uma vulnerabilidade de Estouro de Heap ocorre na função Crypto_TM_ProcessSecurity (crypto_tm.c:1735:8). Ao processar o comprimento do cabeçalho secundário de um pacote do protocolo TM, se o comprimento do cabeçalho secundário exceder o comprimento total do pacote, ocorre um estouro de heap durante a operação memcpy que copia os dados do pacote para o buffer alocado dinamicamente p_new_dec_frame. Isso permite que um atacante sobrescreva a memória heap adjacente, podendo levar à execução arbitrária de código ou instabilidade do sistema.
Impacto: Um pacote criado pode desencadear corrupção de memória heap durante operações memcpy no buffer p_new_dec_frame, podendo levar a:
Versão Corrigida: 810fd66d592c883125272fef123c3240db2f170f
poc.py - Script Python de modo duplo:
./poc.py generate [overflow_amount]
Parâmetros:
overflow_amount: Bytes para estourar (padrão: 1024)Exemplo:
# Gerar pacote com estouro de 2048 bytes
./poc.py generate 2048 > evil_packet.hex
./poc.py check <hex_packet>
Parâmetros:
<hex_packet>: String hexadecimal do pacote TMExemplo:
# Analisar pacote gerado
./poc.py check $(cat evil_packet.hex)
[6-byte Primary Header][2-byte Secondary Header Length][Payload]
O script cria pacotes onde:
Secondary Header Length > (Total Packet Length - Header Offset)memcpy tenta copiar mais bytes do que o disponívelavailable_space = total_length - (offset + length_field_size)
if claimed_length > available_space:
trigger_alert()
Este software destina-se a:
NÃO use em sistemas de produção ou sem autorização explícita. Os mantenedores não assumem nenhuma responsabilidade pelo uso indevido desta ferramenta.