
PoC
CryptoLib, CCSDS Space Data Link Security Protocol - Extended Procedures (SDLS-EP) का उपयोग करके एक सॉफ्टवेयर-ओनली समाधान प्रदान करता है, जो कोर फ्लाइट सिस्टम (cFS) चलाने वाले अंतरिक्ष यान और ग्राउंड स्टेशन के बीच संचार को सुरक्षित करता है। संस्करण 1.3.3 और उससे पहले में, Crypto_TM_ProcessSecurity फ़ंक्शन (crypto_tm.c:1735:8) में एक हीप ओवरफ्लो भेद्यता होती है। TM प्रोटोकॉल पैकेट के सेकेंडरी हैडर लेंथ (Secondary Header Length) को संसाधित करते समय, यदि सेकेंडरी हैडर लेंथ पैकेट की कुल लंबाई से अधिक हो, तो memcpy ऑपरेशन के दौरान हीप ओवरफ्लो ट्रिगर हो जाता है, जो पैकेट डेटा को गतिशील रूप से आवंटित बफर p_new_dec_frame में कॉपी करता है। इससे एक हमलावर आसन्न हीप मेमोरी को ओवरराइट कर सकता है, जो संभावित रूप से मनमाना कोड निष्पादन या सिस्टम अस्थिरता का कारण बन सकता है।
प्रभाव: एक क्राफ्टेड पैकेट 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 पैकेट का हेक्साडेसिमल स्ट्रिंगउदाहरण:
# 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()
यह सॉफ्टवेयर निम्नलिखित के लिए अभिप्रेत है:
इसे उत्पादन प्रणालियों पर या स्पष्ट प्राधिकरण के बिना उपयोग न करें। अनुरक्षक इस उपकरण के दुरुपयोग के लिए कोई दायित्व नहीं लेते हैं।