1 điểm bởi GN⁺ 27 ngày trước | 2 bình luận | Chia sẻ qua WhatsApp
  • Để 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)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 ứngcá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)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 busthử 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

    • Tuy vậy cũng có cảm giác rằng nếu là chủ xe thì lẽ ra phải có quyền root ngay từ đầu. Việc phải nghiên cứu miễn phí cho nhà sản xuất mới có được root thì khá đáng tiếc
    • Nếu đây là chương trình liên tục tìm lỗ hổng root, nó lại khiến Tesla trông như không tự tin vào độ ổn định bảo mật của nền tảng mình
    • Truy cập shell rất hữu ích cho nghiên cứu sâu hơn. Nếu Tesla vá lỗi rồi chặn luôn quyền truy cập, các nhà nghiên cứu có khả năng sẽ giữ kín thay vì công bố
    • Chương trình này chỉ áp dụng cho hệ thống infotainment, không áp dụng cho máy tính Autopilot. Tesla cũng từng thu hồi chứng chỉ của xe thuộc các nhà nghiên cứu trước đây
    • Nếu không cấp root thì nhà nghiên cứu sẽ có động cơ giữ bí mật lỗ hổng, nên chính sách này có vẻ hợp lý
  • 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

    • Có người giải thích rằng DTC là viết tắt của Diagnostic Trouble Codes
    • Tôi đang vật lộn với vấn đề công cụ quét cho chiếc Mercedes E300 Turbodiesel đời 1999. Thiết bị Autel cũ đã thành cục gạch nên tôi thay bằng iCarsoft, nhưng lại không giao tiếp được với ECU
      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ở
    • Trong một tuần gần đây tôi đã dùng Claude + Ghidra để reverse engineering chiếc xe và công cụ quét
      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

    • Theo Wikipedia, ban đầu các nhà sản xuất laptop đã dùng sai thuật ngữ LVDS thay cho FPD-Link, nên mới có sự nhầm lẫn này
      Xem bài về Low-voltage differential signaling
    • Laptop ngày nay dùng eDP(embedded DisplayPort) thay cho LVDS. Màn hình ô tô vẫn còn dùng LVDS, còn smartphone và các thiết bị tương tự thì đã được thay bằng MIPI DSI
    • SpaceWire cũng là một giao thức định tuyến siêu nhẹ dựa trên LVDS và được dùng nhiều trong vệ tinh
  • 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

    • Có ý kiến chỉ ra rằng xe thông thường cũng lên tới 15V ở 2000rpm, nên 14.4V không phải mức điện áp cao bất thường
    • Hầu hết xe động cơ đốt trong đều cho điện áp quanh 14.4V, nên có lẽ bộ điều khiển tiêu chuẩn cũng đã đủ dùng
  • Đ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

    • Thực ra có thể kiếm sợi cáp đó với giá rẻ hơn. Một Violet HSD Code D 4+2 Pin Female to D Female Jack Connector giá khoảng 15 USD có thể dùng thay thế
      Liên kết AliExpress