
आधुनिक GCS के विरुद्ध कमज़ोरियों और एक्सप्लॉइट्स का एक संग्रह
ड्रोन-से-ग्राउंड कंट्रोल स्टेशन हमला वेक्टर, भेद्यताएँ और एक्सप्लॉइट
आज ड्रोन फ्लीट का मतलब है एक ऑपरेटर जो एक ही ग्राउंड स्टेशन से दर्जनों या सैकड़ों ड्रोन उड़ा रहा है। इससे ग्राउंड कंट्रोल स्टेशन विरोधियों के लिए एक मूल्यवान लक्ष्य बन जाता है। यह वह जगह है जहाँ पायलट आमतौर पर मौजूद होता है, यह अक्सर मिशन डेटा संग्रहीत करता है, और यह UxS नेटवर्क तथा फ्लीट के अन्य ड्रोनों में लेटरल मूवमेंट के लिए एक प्रमुख वेक्टर है।
अधिकांश ड्रोन सुरक्षा शोध ड्रोन को निशाना बनाने पर केंद्रित रहा है। Infected Drone शोध एक वैकल्पिक दृष्टिकोण अपनाता है और दर्शाता है कि कैसे एक ही समझौता किया गया ड्रोन उन ग्राउंड स्टेशनों पर हमला कर सकता है जो उससे जुड़ते हैं। चूँकि अधिकांश ग्राउंड कंट्रोल सॉफ़्टवेयर ड्रोन जो भी भेजता है उस पर भरोसा करता है, प्रमाणीकरण, सत्यापन और सैनिटाइज़ेशन का अभाव है, जिससे एक समझौता किए गए ड्रोन से आने वाला डेटा ऑपरेटर की मशीन पर फ़ाइल CRUD, कोड एक्ज़ीक्यूशन, या क्रैश का कारण बन सकता है।
यह रिपॉज़िटरी ग्राउंड कंट्रोल स्टेशन सॉफ़्टवेयर में भेद्यताओं का दस्तावेज़ीकरण करती है और उनके लिए कार्यशील प्रूफ-ऑफ-कॉन्सेप्ट कोड प्रदान करती है। यह केवल शैक्षिक उद्देश्यों के लिए और ऑपरेटरों के लिए प्रकाशित की गई है ताकि वे अपने जोखिम को समझ सकें और मेंटेनर इन समस्याओं को पुनः उत्पन्न करके ठीक कर सकें।
PoC को केवल उन सिस्टमों के विरुद्ध चलाएँ जिनका आप स्वामी हैं या जिनका परीक्षण करने की आपको लिखित अनुमति है। इनमें से प्रत्येक बेंच के लिए लिखा गया है: पेलोड बिनाइन मार्कर हैं, और यहाँ कुछ भी किसी और के विमान या ग्राउंड स्टेशन के विरुद्ध उपयोग के लिए पैकेज नहीं किया गया है। इस सामग्री का उपयोग उन सिस्टमों के विरुद्ध करना जिन्हें आप नियंत्रित नहीं करते, संभवतः आप जहाँ भी हैं वहाँ अवैध है।
प्रत्येक फाइंडिंग का Reproduction अनुभाग बताता है कि उसे क्या चाहिए और वह क्या करता है। कुछ भी चलाने से पहले उसे पढ़ें।
लेजेंड:
Delivery class वह है जो हमलावर को लिंक पर करना होता है, और यह तय करता है कि कौन से वेक्टर काम करेंगे। Push फाइंडिंग्स को केवल GCS पर पहुँचने वाले एक फ्रेम की आवश्यकता होती है, इसलिए कोई भी इंजेक्शन-सक्षम वेक्टर पर्याप्त है। Handshake और request/response फाइंडिंग्स के लिए हमलावर को संवादात्मक पीयर होना या उसे पूरी तरह नियंत्रित करना आवश्यक है, जो ऑन-बस पेरिफेरल, समझौता किए गए कंपेनियन, सप्लाई चेन, या पूर्ण MITM के पक्ष में है।
Fix कॉलम उस अपस्ट्रीम पुल रिक्वेस्ट को लिंक करता है जहाँ एक सबमिट किया गया है। पंद्रह में से दस फाइंडिंग्स विक्रेता की अपनी रिपॉज़िटरी के विरुद्ध दायर पैच के साथ आती हैं।
| ID | Product | Sev | CWE | Sink class | Delivery class | Infected FC / supply chain? | Malicious on-bus peripheral? | Compromised companion? | WiFi/UDP inject? | TCP/cloud MITM? | SiKW00F injection? | SiK full-MITM? | Fix |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| QGC-01 | QGroundControl | 🟠 HIGH | 22/73/170 | CAMERA_INFORMATION → path-traversal write (कनेक्शन पर ज़ीरो-क्लिक राइट) | push (CAMERA_INFORMATION) + content via cam_definition_uri | ✅ | ✅ सबसे स्वाभाविक (कैमरा) | ✅ | ✅ | ✅ | ✅ ट्रिगर push है; नाम फ़ील्ड इनलाइन | ✅ | PR #15083 |
| QGC-02 | QGroundControl | 🔴 CRITICAL | 22/73/494/918 | COMPONENT_METADATA uri → मनमाना फ़ाइल राइट → कनेक्शन पर ज़ीरो-क्लिक RCE | request/response (URI fetch over IP) | ✅ | ✅ metadata uri उत्सर्जित करता है | ✅ | ✅ ट्रिगर के लिए | ✅ | ⚠️ push ट्रिगर हाँ; fetch IP पर है | ✅ | PR #15084 |
| QGC-03 | QGroundControl | 🟠 HIGH | 22/770 | FTP listing → traversal write + offset disk-fill | handshake (MAVFTP listing/download) | ✅ | ✅ पीयर FTP का उत्तर देता है | ✅ | ⚠️ इंजेक्ट हाँ, स्वयं का handshake कठिन | ✅ | ⚠️ रेसी session/seq | ✅ ब्रिज listing परोसता है | PR #15085 |
| QGC-04 | QGroundControl | 🟡 MED | 191/125 | DataFlash .bin पार्सर OOB रीड + अंडरफ़्लो | handshake (दुर्भावनापूर्ण .bin का लॉग डाउनलोड) | ✅ | ✅ पीयर DataFlash परोसता है | ✅ | ⚠️ | ✅ | ⚠️ लॉग चंक्स परोसने होंगे | ✅ ब्रिज .bin फ़ीड करता है | PR #15086 |
मैट्रिक्स प्रति फाइंडिंग सात कॉलम स्कोर करता है: नीचे दिए गए पाँच वेक्टर, साथ ही दो SiK रेडियो (RF टेलीमेट्री) मोड, जिन्हें इंजेक्शन-बनाम-MITM की बारीकी को देखते हुए नीचे अलग से बताया गया है।
संक्रमित फ्लाइट कंट्रोलर, सीरियल कनेक्शन, या सप्लाई चेन। एक स्थानीय हमलावर या दुर्भावनापूर्ण फ्लाइट कंट्रोलर GCS होस्ट या रेडियो से भौतिक रूप से जुड़ जाता है। वाहन या फ़र्मवेयर ऐसा है जिसे ऑपरेटर ने नहीं बनाया: एक डेमो यूनिट, किराये का, ज़ब्त किया गया एयरफ़्रेम, या सेकंड-हैंड क्राफ्ट, जिसका फ़र्मवेयर इस तरह इम्प्लांट किया गया है कि GCS कनेक्ट होते ही शत्रुतापूर्ण MAVLink उत्सर्जित करे। ऑपरेटर का अपना GCS पीड़ित है; "वाहन" पावर-ऑन होने से पहले ही शत्रुतापूर्ण था। यह हर फाइंडिंग पर लागू होता है, और कनेक्ट-टाइम handshake एक्सप्लॉइट पहुँचाने का सबसे साफ़ तरीका है। यह उन फ़ॉरेंसिक विश्लेषकों तक भी फैलता है जो सीधे संक्रमित वाहन से जुड़ सकते हैं या डेटा निकाल सकते हैं। वे आर्टिफ़ैक्ट, यदि ठीक से संभाले न गए, तो विश्लेषक के कंप्यूटर और नेटवर्क को संक्रमित या फैला सकते हैं।
वाहन की अपनी बस पर दुर्भावनापूर्ण / नकली MAVLink पेरिफेरल। एक थर्ड-पार्टी कैमरा, गिम्बल, ADSB-in, रेंजफाइंडर, या कोई भी डिवाइस जो MAVLink बोलता है और स्वयं हमलावर है। यह लिंक पर एक वैध प्रतिभागी है जो शत्रुतापूर्ण फ्रेम उत्सर्जित कर रहा है। एक नकली "स्मार्ट कैमरा" जो ज़हरीले संदेशों का विज्ञापन कर रहा है, वही कर रहा है जो असली करता है, बस शत्रुतापूर्ण मानों के साथ।
ऑनबोर्ड समझौता किया गया कंपेनियन कंप्यूटर (Raspberry Pi / Jetson जिस पर mavlink-router / MAVProxy चल रहा है)। समझौता होने के बाद यह वाहन एंडपॉइंट बन जाता है, लिंक तक पूर्ण द्विदिश पहुँच और उसकी लाइव स्थिति की दृश्यता के साथ। यह किसी भी handshake का उत्तर दे सकता है और कोई भी push फ्रेम उत्सर्जित कर सकता है, जो इसे इस सेट की हर फाइंडिंग के लिए व्यवहार्य बनाता है।
WiFi / UDP टेलीमेट्री ब्रिज (ESP8266 / ESP32 "wifi telemetry")। एक्सेस पॉइंट या LAN पर कोई भी MAVLink डेटा इंजेक्ट कर सकता है। यह इंजेक्शन वेक्टर की लागत को लगभग शून्य कर देता है और, ऐसे हमलावर के लिए जो इंटरसेप्ट भी कर सकता है (ARP/AP MITM), पूर्ण handshake नियंत्रण भी सक्षम करता है।
TCP / क्लाउड रिले (SITL, mavlink-router TCP, mavp2p, 4G/LTE क्लाउड GCS जैसे कमर्शियल UAV-cloud सेवाएँ)। रिले पर MITM, या कोई भी जो एक्सपोज़्ड TCP पोर्ट तक पहुँच सकता है, स्ट्रीम को रीराइट कर सकता है। क्लाउड/4G लिंक भौगोलिक ब्लास्ट रेडियस को बहुत बढ़ा देते हैं और अक्सर पारस्परिक प्रमाणीकरण का अभाव होता है।
ArduPilot/PX4 हॉबी और प्रोस्यूमर क्राफ्ट के लिए प्रमुख वास्तविक-RF टेलीमेट्री पथ एक SiK रेडियो जोड़ी है, एक पारदर्शी सीरियल ब्रिज जो MAVLink को पार्स या वैलिडेट नहीं करता, इसलिए यह GCS को शत्रुतापूर्ण सामग्री के विरुद्ध शून्य सुरक्षा देता है। एक रोग SiK मॉड्यूल sikw00f का उपयोग करके किसी मौजूदा लिंक में शामिल होता है या उसे ब्रिज करता है। दो हमला मोड, बहुत अलग विश्वसनीयता के साथ:
STATUSTEXT, PARAM_VALUE,
CAMERA_INFORMATION, आदि) के लिए विश्वसनीय, कोई उत्तर आवश्यक नहीं। handshake
प्रोटोकॉल (MAVFTP, param/log डाउनलोड) के लिए अविश्वसनीय क्योंकि इंजेक्टर को एयरटाइम
रेस जीतनी होती है और ऐसा session/sequence मैच करना होता है जो उसके नियंत्रण में नहीं है।नोट: SiK एन्क्रिप्शन (AES-128, जहाँ समर्थित हो) डिफ़ॉल्ट रूप से बंद आता है, एक स्थिर साझा कुंजी के साथ।
| MP-01 | Mission Planner | 🟠 HIGH | 22→94 | MAVFTP traversal → plugin-loader RCE | handshake (MAVFTP req/ack → RCE) | ✅ | ✅ पीयर listing का उत्तर देता है | ✅ पूर्ण लिंक नियंत्रण | ⚠️ इंजेक्ट आसान, पर handshake अपने पास चाहिए | ✅ रिले पर रीराइट | ⚠️ रेस जीतनी होगी + session/seq मैच करना होगा | ✅ ब्रिज FTP वार्तालाप का स्वामी | PR #3774 |
| MP-02 | Mission Planner | 🟠 HIGH | 94/78 | gst:// → gst_parse_launch (फ़ाइल r/w + exfil) | push (VIDEO_STREAM_INFORMATION → gst) | ✅ | ✅ कैमरा uri की घोषणा करता है | ✅ | ✅ UDP डेटाग्राम | ✅ | ✅ वन-शॉट स्ट्रीम फ्रेम | ✅ सहजता से | PR #3775 |
| MP-03 | Mission Planner | 🟠 HIGH | 74/601 | STATUSTEXT मार्कअप → Process.Start | push (STATUSTEXT → ShellExecute) | ✅ | ✅ कोई भी कंपोनेंट उत्सर्जित करता है | ✅ | ✅ | ✅ | ✅ फायर-एंड-फ़ॉरगेट टेक्स्ट | ✅ | PR #3776 |
| MP-04 | Mission Planner | 🟡 MED | 248/20/1050 | RALLY_TOTAL/FENCE_TOTAL → अनवैलिडेटेड int.Parse + UI थ्रेड पर O(n²) (कनेक्ट पर ज़ीरो-क्लिक) | push (PARAM_VALUE, कनेक्ट के बाद ऑटो) | ✅ | ✅ PARAM_VALUE उत्सर्जित करता है | ✅ | ✅ | ✅ | ⚠️ पैराम को MP के dict में लाना होगा | ✅ | PR #3777 |
| MAVSDK-01 | MAVSDK | 🟡 MED | 918/749 | component-metadata curl SSRF + file:// (कोई प्रोटोकॉल allowlist नहीं) | request/response (COMPONENT_METADATA.uri fetch over IP) | ✅ | ✅ metadata uri उत्सर्जित करता है | ✅ | ✅ ट्रिगर के लिए | ✅ | ⚠️ push ट्रिगर हाँ; fetch IP पर | ✅ | कोई नहीं |
| MAVSDK-02 | MAVSDK | 🟠 HIGH | 22/73/918 | cam-definition SSRF + mftp:// traversal → सैंडबॉक्स के बाहर फ़ाइल का ज़ीरो-क्लिक विनाश | push (CAMERA_INFORMATION.cam_definition_uri, ऑटो) | ✅ | ✅ सबसे स्वाभाविक (कैमरा) | ✅ | ✅ | ✅ | ✅ ऑटो-कंज़्यूम्ड push | ✅ | PR #3073 |
| MAVSDK-03 | MAVSDK | 🟠 HIGH | 409/400/770/459 | .xz cam-definition या COMPONENT_METADATA → अनबाउंडेड डीकंप्रेशन → स्थायी डिस्क समाप्ति | push (CAMERA_INFORMATION.cam_definition_uri, ऑटो) — एक बेयर HEARTBEAT इसे शुरू कर देता है | ✅ | ✅ सबसे स्वाभाविक (कैमरा) | ✅ | ✅ | ✅ | ✅ ऑटो-कंज़्यूम्ड push; प्रति 2 GiB ~50 s का 57.6 kbps एयरटाइम | ✅ | PR #3074 |
| MAVPROXY-01 | MAVProxy | 🟠 HIGH | 502 | asterix pickle.loads UDP पर → RCE | IP साइड-चैनल (UDP, MAVLink RF लिंक नहीं) | ❌ MAVLink लिंक पर नहीं | ❌ अलग UDP सॉकेट | ⚠️ केवल यदि यह :45454 तक पहुँच सके | ✅ host:45454 पर UDP | ❌ स्वयं का UDP सॉकेट, रिले नहीं | ❌ RF/MAVLink लिंक पर नहीं | ❌ RF/MAVLink लिंक पर नहीं | अपस्ट्रीम में #1728 द्वारा ठीक, अनरिलीज़्ड |
| MAVROS-01 | mavros | 🟡 MED | 345/770 | PARAM_VALUE → जाली ग्लोबल /parameter_events + अनकैप्ड मैप | push/stream (PARAM_VALUE इंजेक्ट करें, कोई handshake नहीं) | ✅ | ✅ PARAM_VALUE उत्सर्जित करता है | ✅ | ✅ UDP फ्लड | ✅ | ✅ PARAM_VALUE फ्लड | ✅ | कोई नहीं |
| MAVROS-02 | mavros | 🟠 HIGH | 125/617/248 | FTP write-ack → अनबाउंडेड std::advance → हीप डिस्क्लोज़र + प्रोसेस एबॉर्ट | handshake (FTP रिप्लाई ज़हरीला करें → क्रैश) | ✅ | ✅ पीयर खराब FTP भेजता है | ✅ | ⚠️ | ✅ | ⚠️ विकृत रिप्लाई लानी होगी | ✅ ब्रिज खराब रिप्लाई इंजेक्ट करता है | कोई नहीं |
| DRONEKIT-01 | DroneKit | ⚪ INFO | 20 | ट्रस्ट-बाउंड्री हैंडऑफ़ (param_id / STATUSTEXT) | push (टेलीमेट्री → ऐप कॉलबैक; बाय-डिज़ाइन हैंडऑफ़) | ✅ | ✅ कोई भी कंपोनेंट | ✅ | ✅ | ✅ | ✅ कोई भी push फ्रेम कॉलबैक तक पहुँचता है | ✅ | लागू नहीं |