CryptoLib Vulnerability: Heap Overflow Threatens Space Communications
2025/03/27 SecurityOnline — CCSDS の Space Data Link Security Protocol (SDLS) および、SDLS Extended Procedures (SDLS-EP) の、C 言語ベースのソフトウェア実装である CryptoLib に、深刻なセキュリティ脆弱性が発見された。この欠陥により、宇宙船と地上局間の通信に、重大なセキュリティ・リスクが生じる可能性がある。

この脆弱性 CVE-2025-30216 (CVSS:9.4) は、Crypto_TM_ProcessSecurity 関数 (crypto_tm.c:1735:8) のヒープ・オーバーフローに起因する。この問題は、TM プロトコル・パケットのセカンダリ・ヘッダー長の処理中に発生するものだ。
CCSDS のアドバイザリには、「TM プロトコル・パケットのセカンダリ・ヘッダー長を処理する際に、このヘッダー長がパケットの合計長を超えると、動的に割り当てられたバッファー p_new_dec_frame にパケット・データをコピーする、memcpy 操作中にヒープ・オーバーフローが発生する」と記されている。
このヒープ・オーバーフローを悪用する攻撃者は、隣接するヒープ・メモリの上書きを達成し、任意のコードの実行やシステムの不安定化を引き起こす可能性を手にする。
Crypto_TM_ProcessSecurity 関数は、パケット長 (len_ingest) をベースにバッファー (p_new_dec_frame) を動的に割り当て、memcpy を介して、そこにデータをコピーする。コピーされるバイト数の計算は、固定プライマリ・ヘッダー長 (6 Byte) と、可変セカンダリ・ヘッダー長 (secondary_hdr_len) の加算による。
ただし、6 Byte と secondary_hdr_len の合計が、割り当てられたバッファ・サイズ (len_ingest) を超えないことを保証する、適切な検証チェックが存在しないことが、この脆弱性の原因となっている。
このアドバイザリには、「0x3F + 1 の操作により、secondary_hdr_len は 64 Byte に制限されるが、6 + secondary_hdr_len が、合計パケット長 (len_ingest) を超えないことを保証するチェックが存在しない。len_ingest が 6 + secondary_hdr_len よりも小さい場合には、memcpy 操作により、p_new_dec_frame の境界を超えて書き込みが行われるため、ヒープ・オーバーフローが引き起こされる」と記されている。
この脆弱性の悪用に成功した攻撃者は、以下のような事態を引き起こす可能性を手にする。
- サービス拒否 (DoS):境界外のメモリ・アクセスにより、アプリケーションのクラッシュや不安定化が生じ、サービスの可用性が損なわれる可能性がある。
- リモート・コード実行 (RCE):隣接するメモリ構造を破壊する攻撃者は、任意のコードを実行し、システムの整合性とセキュリティを侵害する可能性を手にする。
CryptoLib のユーザーにとって重要なことは、必要なパッチ/アップデートの適用により、この脆弱性を軽減し、宇宙通信システムを安全にすることだ。
このブログでは初登場の CryptoLib ですが、GitHubでは、「宇宙船のフライト・ソフトウェアと地上局間の通信を保護する、CCSDS SDLS と SDLS-EP の C ベースのソフトウェアのみの実装を提供する。cFS (Core Flight System) の宇宙船ライブラリとして、オリジナルは設計されたが、その後に用途の幅が広がり、宇宙や地上の各種システムに対応できる、汎用的なサポートが可能となった」と紹介されています。今回の CryptoLib の脆弱性は、サイバーセキュリティが地上の問題にとどまらず、宇宙空間でも重要なものであることを物語っています。よろしければ、カテゴリ Space を、ご参照ください。
You must be logged in to post a comment.