- เพื่อเข้าร่วม Tesla Bug Bounty จึงซื้อ MCU และคอมพิวเตอร์ Autopilot ของ Model 3 จาก eBay แล้วพยายามเปิดใช้งานในสภาพแวดล้อมเดสก์ท็อป
- เชื่อมต่อ แหล่งจ่ายไฟ 12V และโมดูลหน้าจอสัมผัส เพิ่มเติมจนบูตสำเร็จ และสามารถเข้าถึงเครือข่ายภายในผ่าน พอร์ตอีเธอร์เน็ต ได้
- ภายใน MCU มี SSH server และ ODIN REST API (พอร์ต 8080) เปิดอยู่ โดยการเชื่อมต่อ SSH ต้องใช้ กุญแจลายเซ็นของ Tesla
- ในช่วงแรกต้องเปลี่ยน ชิปควบคุมพลังงาน เนื่องจาก ปัญหาความเข้ากันได้ของสายเคเบิลและความเสียหายของ PCB แต่หลังซ่อมแล้วสามารถกู้ระบบกลับมาได้
- สุดท้ายเชื่อมต่อ Dashboard Wiring Harness เพื่อให้ หน้าจอสัมผัสและระบบปฏิบัติการของรถบูตได้อย่างสมบูรณ์ ทำให้สามารถควบคุม UI และวิเคราะห์เฟิร์มแวร์ได้
เปิดคอมพิวเตอร์ Tesla Model 3 ใช้งานบนโต๊ะ
- เพื่อเข้าร่วม โปรแกรม Tesla Bug Bounty จำเป็นต้องใช้ฮาร์ดแวร์จากรถจริง จึงซื้อชิ้นส่วน MCU (Media Control Unit) และคอมพิวเตอร์ Autopilot (AP) ของ Model 3 จาก eBay
- คอมพิวเตอร์ในรถมีโครงสร้างเป็นบอร์ดสองแผ่นวางซ้อนกัน อยู่หลังกล่องเก็บของฝั่งผู้โดยสาร และถูกครอบด้วย เคสโลหะระบายความร้อนด้วยน้ำ
- ได้ชิ้นส่วนจาก eBay ในช่วงราคาประมาณ 200–300 ดอลลาร์ โดยส่วนใหญ่เป็นสินค้าที่ขายโดย ผู้ประกอบการรื้อรถอุบัติเหตุ
- เพื่อบูตระบบ ยังต้องมี แหล่งจ่ายไฟ DC 12V, โมดูลหน้าจอสัมผัส และ สายดิสเพลย์ เพิ่มเติม
- ใช้แหล่งจ่ายไฟแบบปรับได้ 0–30V 10A และซื้อหน้าจอมาในราคา 175 ดอลลาร์
ปัญหาสายเคเบิลและข้อมูลการเดินสายไฟ
- สายที่ใช้เชื่อม MCU กับหน้าจอส่วนใหญ่ถูกขายมาในสภาพ ถูกตัดถัดจากคอนเน็กเตอร์ทันที จึงจำเป็นต้องทำสายขึ้นเอง
- Tesla เปิดเผยเอกสาร Electrical Reference ของรถทุกคันต่อสาธารณะ ทำให้สามารถตรวจสอบผังขาและข้อมูลการเดินสายของคอนเน็กเตอร์แต่ละตัวได้
- จอแสดงผลต้องใช้สาย 6 พินที่ใช้คอนเน็กเตอร์ Rosenberger 99K10D-1D5A5-D (12V/กราวด์ 2 พิน, ข้อมูล 4 พิน)
- คอนเน็กเตอร์นี้ไม่สามารถหาซื้อแยกชิ้นได้สำหรับผู้บริโภคทั่วไป จึงสั่ง สาย LVDS สำหรับ BMW มาใช้แทน
การจ่ายไฟและการเข้าถึงเครือข่าย
- อ้างอิงจากแผงวงจรของ Tesla และข้อมูลออนไลน์ เมื่อต่อไฟเข้าที่ พิน 12V และกราวด์ ก็เริ่ม บูตพร้อมไฟ LED สีแดงติดขึ้น
- แม้จะยังมีข้อจำกัดในการโต้ตอบเพราะไม่มีหน้าจอ แต่สามารถเชื่อมต่อกับโน้ตบุ๊กผ่าน พอร์ตอีเธอร์เน็ต ได้
- เครือข่ายนี้ไม่มี DHCP จึงต้องตั้งค่า IP เอง และต้องใช้ช่วง
192.168.90.X/24
- ใช้ไฟล์
/etc/hosts ที่เผยแพร่บน Reddit เพื่อตรวจสอบ IP ของโฮสต์ภายใน เช่น MCU, เกตเวย์ และ Autopilot
- บน MCU (
192.168.90.100) มี SSH (พอร์ต 22) และ เว็บเซิร์ฟเวอร์ (8080) เปิดอยู่
บริการภายใน MCU และโครงสร้าง
- SSH server แสดงข้อความ “SSH allowed: vehicle parked” และต้องมี กุญแจลายเซ็นของ Tesla จึงจะเข้าใช้งานได้
- ใน Tesla Bug Bounty นักวิจัยที่ค้นพบช่องโหว่ระดับรูทจะได้รับ ใบรับรอง SSH ถาวร
- บนพอร์ต 8080 มี REST API ชื่อ ODIN (On-Board Diagnostic Interface Network) เปิดอยู่ ซึ่งถูกใช้โดย เครื่องมือวินิจฉัย Toolbox
- เมื่อถอดแผ่นชิลด์โลหะออก ก็สามารถเห็นภายในที่มีบอร์ด MCU และ Autopilot วางอยู่ใน โครงสร้างแบบซ้อนชั้น
ความล้มเหลวของสายเคเบิลและความเสียหายของวงจร
- สาย BMW LVDS ไม่เข้ากันทางกายภาพ จึงลองต่อสายเองโดยตรง
- สายเส้นเล็กเปราะหักจนเกิด PCB ลัดวงจร และทำให้ ชิปควบคุมพลังงานเสียหาย
- ตอนแรกระบุชิปที่เสียหายได้ยาก แต่ผู้ร่วมงาน Yasser ช่วยยืนยันว่าเป็น MAX16932CATIS/V+T step-down controller
- หลังสั่งชิปใหม่และให้ ร้านซ่อม PCB เปลี่ยนให้ ก็สามารถกู้ MCU กลับมาได้สำเร็จ
- หลังจากนั้นจึงหา คอมพิวเตอร์ตัวที่สอง มาเก็บไว้เป็นอะไหล่สำรอง
ทางออกสุดท้ายและการบูตสมบูรณ์
- เนื่องจากหาเคเบิล Rosenberger ไม่ได้ สุดท้ายจึงซื้อ Dashboard Wiring Harness ทั้งชุด (80 ดอลลาร์)
- รถจริงไม่ได้ใช้สายเดี่ยวแยกเส้น แต่ผลิตมาในรูปแบบ ชุดสายไฟหลักขนาดใหญ่ (loom)
- เมื่อต่อฮาร์เนสแล้ว หน้าจอสัมผัสทำงานได้ตามปกติ และระบบปฏิบัติการของรถก็บูตขึ้นมาอย่างสมบูรณ์
- หลังจากนั้นจึงสามารถ ควบคุม UI, สำรวจอินเทอร์เฟซเครือข่าย, วิเคราะห์ CAN bus และ พยายามดึงเฟิร์มแวร์ ได้
2 ความคิดเห็น
สิ่งที่น่าสนใจที่สุดคืออันนี้นี่แหละ
"โปรแกรม Root access ของ Tesla"
ถ้าหาช่องโหว่สำหรับการรูทที่ยังใช้ได้เจอได้สักหนึ่งรายการ ก็จะได้รับ "ใบรับรอง SSH ถาวร" สำหรับรถของตัวเอง ทำให้ล็อกอินเป็น root ได้
อา อยากได้จัง!!
ความคิดเห็นจาก Hacker News
โปรแกรม Root access ของ Tesla น่าสนใจมาก
หากนักวิจัยพบช่องโหว่สำหรับการรูทที่ยังใช้ได้อย่างน้อยหนึ่งรายการ ก็จะได้รับ ใบรับรอง SSH ถาวร สำหรับรถของตนเองและสามารถล็อกอินเป็น root ได้
คล้ายกับ Security Research Device Program ของ Apple แต่มีคุณสมบัติที่ชัดเจน
หากให้สิทธิ์ root กับทุกคน ก็จะทำให้ผู้ไม่หวังดีค้นหาช่องโหว่ได้ง่ายขึ้น จึงเข้าใจแนวทางของ Tesla
เคยทำงานที่บริษัทที่สร้าง เครื่องมือสแกนของบุคคลที่สาม
ตอนทดสอบ เราต่อ ECU ไว้ในแร็กแทนการใช้รถจริง และพบปัญหา byte offset แบบไม่มาตรฐานของ BMW เครื่องมือของคู่แข่งจับปัญหานี้ไม่ได้ แต่เครื่องมือทางการของ BMW แสดง DTC ได้
ถ้าตั้งรุ่นรถเป็นอีกแบบหนึ่ง ก็ยังพอลบ ECU DTC ได้ เลยใช้ชั่วคราวอยู่ วงการนี้ต้องการแนวทางแบบ ฮาร์ดแวร์/ซอฟต์แวร์แบบเปิด อย่างมาก
ตอนนี้กำลังคิดว่าจะเผยแพร่ผลงานที่ทำด้วยซอฟต์แวร์เชิงพาณิชย์ราคาแพงดีหรือไม่ และมองว่าข้อมูลอย่างนิยามโปรโตคอลการสื่อสารของรถควรเปิดให้ทุกคนเข้าถึงได้
น่าสนใจที่ LVDS ถูกเรียกว่าเป็นสายเคเบิลสำหรับรถยนต์ ทั้งที่เดิมมักเห็นมันใช้เชื่อม จอแสดงผลโน้ตบุ๊ก กับเมนบอร์ด
ดู บทความ Low-voltage differential signaling
สามารถรัน QtCar ซึ่งเป็นแอป UI ของ Tesla บน QEMU ได้
แค่มีเฟิร์มแวร์ก็ทำได้ ถ้าสนใจให้ DM มา
วิดีโอสาธิต
มีการแชร์ประสบการณ์ติดตั้ง ตัวควบคุมเบรกพ่วง ด้วยตัวเองบน Tesla Model Y
เขาหาตัวควบคุมที่รองรับแรงดัน 14.4V ทำสายเคเบิลขึ้นเอง และซื้อคอนเน็กเตอร์จาก eBay มาติดตั้ง
ปีที่แล้วลากแคมป์ปิงเทรลเลอร์หลายครั้งโดยไม่มีปัญหา และรู้สึกว่าจิตวิญญาณแบบ DIY hacking นี้ยอดเยี่ยมมาก
น่าสนใจที่แก่นของปัญหาคือแค่ คอนเน็กเตอร์ 6 พิน ธรรมดา
ทั้งที่มีแบบและขนาดอยู่แล้ว ก็ยังแปลกใจที่ไม่ได้คิดจะทำคอนเน็กเตอร์ขึ้นเองด้วยการพิมพ์ 3 มิติ
โปรเจ็กต์นี้เจ๋งมากจริง ๆ
อยากรู้ว่าเป็นแบบ plug-and-play หรือไม่ และข้อมูลระยะทางวิ่งถูกเก็บไว้ที่ไหน
ถ้าเป็นไปได้ก็อยากย้าย adaptive suspension ไปใส่รุ่นเก่าด้วย มีไอเดียว่าจะทำระบบควบคุมแยกด้วย Raspberry Pi
น่าทึ่งที่รถยัง บูตระบบปฏิบัติการได้สมบูรณ์ แม้ไม่มีอุปกรณ์รอบข้างตามที่คาดไว้
จะพูดอย่างไรเกี่ยวกับ Tesla ก็ตาม แต่ในมุมมองของการแฮ็ก มันเป็น โปรเจ็กต์ที่ยอดเยี่ยม จริง ๆ
มีคนบอกว่าต้องซื้อชุดสายไฟทั้งหมดในราคา 80 ดอลลาร์ แต่ในอเมริกาจะเรียกว่า wiring harness ส่วน loom หมายถึงวัสดุหุ้มสาย
ลิงก์ AliExpress