- Để tham gia chương trình bug bounty của Tesla, tác giả đã mua MCU và máy tính Autopilot của Model 3 trên eBay và thử chạy chúng trong môi trường desktop
- Đã kết nối thêm nguồn điện 12V và mô-đun màn hình cảm ứng để khởi động thành công, đồng thời có thể truy cập mạng nội bộ qua cổng Ethernet
- Bên trong MCU có mở máy chủ SSH và ODIN REST API (cổng 8080), và việc truy cập SSH yêu cầu khóa ký của Tesla
- Ban đầu, do vấn đề tương thích cáp và hư hỏng PCB, tác giả phải thay chip điều khiển nguồn, nhưng sau khi sửa đã khôi phục hệ thống thành công
- Cuối cùng, bằng cách kết nối Dashboard Wiring Harness, tác giả đã thực hiện được khởi động đầy đủ màn hình cảm ứng và hệ điều hành xe, từ đó có thể thao tác UI và phân tích firmware
Chạy máy tính Tesla Model 3 trên bàn làm việc
- Để tham gia chương trình bug bounty của Tesla, tác giả cần phần cứng xe thật nên đã mua MCU (Media Control Unit) và máy tính Autopilot (AP) của Model 3 trên eBay
- Máy tính trên xe có cấu trúc hai bo mạch xếp chồng lên nhau, nằm phía sau hộc đựng găng tay bên ghế phụ và được bọc trong vỏ kim loại làm mát bằng chất lỏng
- Tác giả đã mua được các linh kiện với giá khoảng 200–300 USD trên eBay, và phần lớn là sản phẩm do đơn vị tháo dỡ xe tai nạn bán ra
- Để khởi động hệ thống, cần bổ sung nguồn DC 12V, mô-đun màn hình cảm ứng và cáp hiển thị
- Tác giả dùng bộ nguồn điều chỉnh 0–30V 10A, còn màn hình được mua với giá 175 USD
Vấn đề về cáp và thông tin đi dây điện
- Cáp kết nối MCU và màn hình phần lớn được bán trong tình trạng bị cắt ngay sau đầu nối, nên cần tự chế cáp riêng
- Tesla công khai tài liệu Electrical Reference cho toàn bộ xe, nhờ đó có thể kiểm tra sơ đồ chân và thông tin đi dây của từng đầu nối
- Màn hình cần cáp 6 chân dùng đầu nối Rosenberger 99K10D-1D5A5-D (2 chân cho 12V/ground, 4 chân cho dữ liệu)
- Do đầu nối này không thể mua lẻ theo cách thông thường, tác giả đã đặt cáp LVDS dùng cho BMW làm phương án thay thế
Kết nối nguồn và truy cập mạng
- Tham khảo sơ đồ mạch của Tesla và các tài liệu trên mạng, tác giả xác định được chân 12V và ground rồi cấp nguồn, khiến đèn LED đỏ sáng lên và quá trình khởi động bắt đầu
- Do chưa có màn hình nên khả năng tương tác còn hạn chế, nhưng có thể kết nối với laptop qua cổng Ethernet
- Mạng nội bộ không có DHCP nên phải cấu hình IP thủ công, sử dụng dải
192.168.90.X/24
- Từ tệp
/etc/hosts được công bố trên Reddit, tác giả xác nhận được IP của các host nội bộ như MCU, gateway và Autopilot
- Trên MCU (
192.168.90.100) có mở SSH (cổng 22) và máy chủ web (cổng 8080)
Các dịch vụ nội bộ và cấu trúc MCU
- Máy chủ SSH hiển thị thông báo “SSH allowed: vehicle parked” và yêu cầu phải có khóa ký của Tesla mới truy cập được
- Trong chương trình bug bounty của Tesla, các nhà nghiên cứu tìm ra lỗ hổng root sẽ được cấp chứng chỉ SSH vĩnh viễn
- Ở cổng 8080 có một REST API tên là ODIN (On-Board Diagnostic Interface Network), được công cụ chẩn đoán Toolbox sử dụng
- Khi tháo lớp che chắn kim loại ra, tác giả có thể quan sát bên trong với bo MCU và bo Autopilot được bố trí theo cấu trúc xếp chồng
Cáp thất bại và hư hỏng mạch
- Cáp LVDS của BMW không tương thích về mặt vật lý, nên tác giả thử đấu dây trực tiếp
- Dây mảnh bị gãy gây ra chập PCB, làm chip điều khiển nguồn bị hỏng
- Ban đầu rất khó xác định con chip bị hỏng là gì, nhưng cộng sự Yasser đã nhận diện nó là bộ điều khiển step-down MAX16932CATIS/V+T
- Sau khi đặt chip mới và nhờ cửa hàng sửa PCB thay thế, tác giả đã khôi phục được MCU
- Sau đó, tác giả mua thêm máy tính thứ hai để làm thiết bị dự phòng
Giải pháp cuối cùng và khởi động hoàn chỉnh
- Không tìm được cáp Rosenberger, cuối cùng tác giả đã mua toàn bộ Dashboard Wiring Harness (80 USD)
- Trên xe thực tế, hệ thống không được lắp bằng cáp rời mà theo dạng bó dây lớn (loom)
- Khi kết nối bó dây này, màn hình cảm ứng hoạt động bình thường và hệ điều hành xe khởi động hoàn toàn
- Từ đây, tác giả có thể thao tác UI, khám phá các giao diện mạng, phân tích CAN bus và thử trích xuất firmware
2 bình luận
Điều thú vị nhất chính là cái này
"chương trình Root access của Tesla"
Chỉ cần tìm được dù chỉ một lỗ hổng root hợp lệ, bạn sẽ nhận được "chứng chỉ SSH vĩnh viễn" cho chính chiếc xe của mình và có thể đăng nhập với quyền root.
Ôi, muốn có quá!!
Ý kiến trên Hacker News
Chương trình Root access của Tesla khá thú vị
Nếu nhà nghiên cứu tìm được dù chỉ một lỗ hổng root hợp lệ, họ sẽ nhận được chứng chỉ SSH vĩnh viễn cho chính xe của mình và có thể đăng nhập với quyền root
Nó khá giống Security Research Device Program của Apple, và điều kiện tham gia cũng rõ ràng
Nếu cấp toàn bộ quyền root cho mọi người thì kẻ xấu sẽ dễ tìm lỗ hổng hơn, nên cách tiếp cận của Tesla là điều có thể hiểu được
Trước đây tôi từng làm ở một công ty tạo công cụ quét của bên thứ ba
Chúng tôi thử nghiệm bằng cách nối ECU lên rack thay vì dùng xe thật, và đã tìm ra vấn đề lệch byte offset phi tiêu chuẩn của BMW. Công cụ của đối thủ không phát hiện được, nhưng công cụ chính thức của BMW thì có hiển thị DTC
Nếu đặt sang mẫu xe khác thì vẫn xóa được ECU DTC, nên hiện tôi đang dùng tạm theo cách đó. Lĩnh vực này thực sự rất cần cách tiếp cận phần cứng/phần mềm mở
Tôi đang cân nhắc có nên công khai kết quả được tạo ra bằng phần mềm thương mại đắt tiền hay không, và nghĩ rằng thông tin như định nghĩa giao thức truyền thông của xe nên được mở cho mọi người
Việc LVDS được gọi là cáp dành cho ô tô khá thú vị. Trước đây tôi thường thấy nó dùng để nối màn hình laptop với mainboard
Xem bài về Low-voltage differential signaling
Có thể chạy QtCar, ứng dụng UI của Tesla, trên QEMU
Chỉ cần có firmware là làm được, ai quan tâm thì nhắn DM
Video demo
Có người chia sẻ kinh nghiệm tự lắp bộ điều khiển phanh kéo moóc cho Tesla Model Y
Họ tìm bộ điều khiển phù hợp với điện áp 14.4V, tự làm cáp và mua đầu nối trên eBay để lắp vào
Năm ngoái họ đã kéo trailer đi cắm trại nhiều lần mà không gặp vấn đề gì, và cảm thấy tinh thần DIY hack kiểu này rất tuyệt
Điều thú vị là cốt lõi vấn đề hóa ra chỉ là một đầu nối 6 chân đơn giản
Dù đã có bản vẽ và kích thước, việc không nghĩ tới chuyện tự in 3D đầu nối này vẫn khá bất ngờ
Dự án này thực sự rất tuyệt
Tôi tò mò không biết nó có plug and play không, và thông tin quãng đường được lưu ở đâu
Nếu có thể thì tôi muốn thử chuyển hệ thống treo thích ứng sang mẫu xe đời cũ. Cũng có ý tưởng làm một hệ thống điều khiển riêng bằng Raspberry Pi
Thật ngạc nhiên khi chiếc xe có thể khởi động hệ điều hành hoàn chỉnh ngay cả khi không có các thiết bị ngoại vi như dự kiến
Dù có nói gì về Tesla đi nữa, xét từ góc độ hack thì đây đúng là một dự án rất ngầu
Có người nói phải mua cả bó dây với giá 80 USD, nhưng ở Mỹ thứ đó được gọi là wiring harness. "loom" là từ chỉ vật liệu bọc ngoài
Liên kết AliExpress