
PoC
CryptoLib은 CCSDS 우주 데이터 링크 보안 프로토콜 - 확장 절차(SDLS-EP)를 사용하는 소프트웨어 전용 솔루션을 제공하여, core Flight System (cFS)을 실행하는 우주선과 지상국 간의 통신을 보호합니다. 버전 1.3.3 및 이전 버전에서는 Crypto_TM_ProcessSecurity 함수(crypto_tm.c:1735:8)에서 힙 오버플로 취약점이 발생합니다. TM 프로토콜 패킷의 보조 헤더 길이를 처리할 때, 보조 헤더 길이가 패킷의 전체 길이를 초과하면 동적으로 할당된 버퍼 p_new_dec_frame으로 패킷 데이터를 복사하는 memcpy 연산 중에 힙 오버플로가 트리거됩니다. 이를 통해 공격자는 인접한 힙 메모리를 덮어쓸 수 있으며, 잠재적으로 임의 코드 실행 또는 시스템 불안정을 초래할 수 있습니다.
영향: 조작된 패킷은 p_new_dec_frame 버퍼로의 memcpy 연산 중 힙 메모리 손상을 트리거하여 다음과 같은 결과를 초래할 수 있습니다:
패치 버전: 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 패킷의 16진수 문자열예시:
# 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()
이 소프트웨어는 다음 용도로 사용됩니다:
사용 금지: 프로덕션 시스템 또는 명시적 승인 없이 사용하지 마십시오. 유지관리자는 이 도구의 오용에 대해 책임을 지지 않습니다.