- Para participar en el bug bounty de Tesla, compró en eBay la MCU y la computadora de Autopilot del Model 3 e intentó hacerlas funcionar en un entorno de escritorio
- Logró arrancarlas conectando además una fuente de alimentación de 12V y un módulo de pantalla táctil, y pudo acceder a la red interna mediante el puerto Ethernet
- Dentro de la MCU estaban abiertos un servidor SSH y la API REST ODIN (puerto 8080), y para conectarse por SSH se requiere una clave firmada por Tesla
- Al principio tuvo que reemplazar el chip controlador de energía por problemas de compatibilidad de cables y daños en la PCB, pero tras la reparación logró recuperar el sistema
- Finalmente conectó el Dashboard Wiring Harness y consiguió un arranque completo de la pantalla táctil y del sistema operativo del vehículo, lo que permitió manipular la UI y analizar el firmware
Hacer funcionar la computadora de un Tesla Model 3 sobre el escritorio
- Para participar en el programa de bug bounty de Tesla, necesitaba hardware real del vehículo, así que compró en eBay piezas de la MCU (unidad de control multimedia) y la computadora de Autopilot (AP) del Model 3
- La computadora del vehículo tiene una estructura de dos placas apiladas, está ubicada detrás de la guantera del asiento del pasajero y está cubierta por una carcasa metálica con refrigeración líquida
- Consiguió las piezas en eBay por entre 200 y 300 dólares, y la mayoría provenían de desarmaderos de vehículos accidentados
- Para arrancar el sistema también necesitó una fuente de alimentación de 12V DC, un módulo de pantalla táctil y un cable de pantalla
- Usó una fuente regulable de 0–30V y 10A, y compró la pantalla por 175 dólares
Problemas de cables e información del cableado eléctrico
- Los cables que conectan la MCU y la pantalla se vendían en su mayoría cortados justo después del conector, por lo que fue necesario fabricar un cable aparte
- Tesla publica la documentación de Electrical Reference de todos sus vehículos, así que pudo verificar la asignación de pines y el cableado de cada conector
- La pantalla requiere un cable de 6 pines con conector Rosenberger 99K10D-1D5A5-D (2 pines para 12V/tierra y 4 para datos)
- Como este conector no puede comprarse suelto fácilmente por consumidores, pidió como alternativa un cable LVDS para BMW
Conexión de energía y acceso a la red
- Guiándose por los esquemas de Tesla y materiales disponibles en línea, encontró los pines de 12V y tierra y al conectarlos se encendió un LED rojo y comenzó el arranque
- Como no tenía pantalla, la interacción era limitada, pero podía conectarse a una laptop mediante el puerto Ethernet
- La red no usa DHCP, por lo que hay que configurar una IP manualmente y usar el rango
192.168.90.X/24
- Gracias a un archivo
/etc/hosts publicado en Reddit, pudo identificar las IP internas de la MCU, el gateway y Autopilot, entre otros hosts
- En la MCU (
192.168.90.100) estaban abiertos SSH (puerto 22) y un servidor web (puerto 8080)
Servicios internos y estructura de la MCU
- El servidor SSH mostraba el mensaje “SSH allowed: vehicle parked” y solo permite acceso con una clave firmada por Tesla
- A los investigadores que encuentran una vulnerabilidad de root en el bug bounty de Tesla se les emite un certificado SSH permanente
- En el puerto 8080 estaba expuesta una API REST llamada ODIN (On-Board Diagnostic Interface Network), usada por la herramienta de diagnóstico Toolbox
- Al retirar el blindaje metálico, pudo ver el interior con la MCU y la placa de Autopilot en una estructura apilada
Falla del cable y daño del circuito
- El cable LVDS de BMW no era físicamente compatible, así que intentó hacer el cableado manualmente
- Un cable delgado se rompió y provocó un cortocircuito en la PCB, dañando el chip controlador de energía
- Fue difícil identificar el chip dañado, pero su colaborador Yasser confirmó que era un controlador step-down MAX16932CATIS/V+T
- Pidió un chip nuevo y lo reemplazó en un taller de reparación de PCB, logrando recuperar la MCU
- Después consiguió además una segunda computadora como repuesto
Solución final y arranque completo
- Como no pudo conseguir el cable Rosenberger, terminó comprando el Dashboard Wiring Harness completo (80 dólares)
- En el vehículo real, no estaba hecho con cables individuales sino como un gran arnés de cableado (loom)
- Al conectar el arnés, la pantalla táctil funcionó correctamente y el sistema operativo del vehículo arrancó por completo
- A partir de ahí pudo manipular la UI, explorar interfaces de red, analizar el bus CAN e intentar extraer el firmware
2 comentarios
Lo más interesante es esto.
"El programa de acceso root de Tesla"
Si encuentras хотя sea una vulnerabilidad de rooteo válida, puedes recibir un "certificado SSH permanente" para tu propio vehículo y así iniciar sesión como root.
¡Lo quiero!
Comentarios en Hacker News
El programa de acceso root de Tesla es interesante
Si un investigador encuentra хотя бы una vulnerabilidad de rooteo válida, puede recibir un certificado SSH permanente para su propio vehículo e iniciar sesión como root
Es parecido al Security Research Device Program de Apple, y los requisitos de elegibilidad son claros
Se entiende el enfoque de Tesla, porque si le dieran privilegios root a todo el mundo sería más fácil para actores maliciosos buscar vulnerabilidades
Antes trabajé en una empresa que hacía herramientas de escaneo de terceros
Probábamos conectando ECUs en un rack en lugar de usar vehículos reales, y encontramos un problema de desplazamiento de bytes no estándar de BMW. Las herramientas de la competencia no lo detectaban, pero la herramienta oficial de BMW sí mostraba el DTC
Si configuro otro modelo, al menos puedo borrar los DTC de la ECU, así que lo estoy usando de forma provisional. Este campo necesita urgentemente un enfoque de hardware/software abierto
Estoy pensando si publicar o no lo que obtuve con software comercial costoso, y creo que información como la definición de protocolos de comunicación vehicular debería estar abierta para todos
Es curioso que al LVDS lo llamen cable automotriz. Yo antes lo veía sobre todo para conectar pantallas de laptops con la tarjeta madre
Ver el artículo de Low-voltage differential signaling
Se puede ejecutar QtCar, la app de UI de Tesla, en QEMU
Solo hace falta el firmware; si a alguien le interesa, que mande DM
Video de demostración
Comparten la experiencia de haber instalado por cuenta propia un controlador de frenos para remolque en una Tesla Model Y
Buscaron un controlador compatible con 14.4V, fabricaron el cable y compraron conectores en eBay para montarlo
El año pasado remolcaron un camper varias veces sin problemas, y les parece genial ese espíritu de hackeo DIY
Es interesante que la clave del problema fuera simplemente un conector de 6 pines
Había planos y medidas, así que sorprende que no hayan pensado en fabricar el conector directamente con impresión 3D
Este proyecto está realmente genial
Me pregunto si es plug and play y dónde se guarda la información del kilometraje
Si fuera posible, me gustaría adaptar la suspensión adaptativa a un modelo más viejo. Incluso está la idea de hacer un sistema de control aparte con una Raspberry Pi
Sorprende que el sistema operativo arranque por completo incluso sin los periféricos esperados alrededor
Digan lo que digan de Tesla, desde la perspectiva del hacking esto es un proyecto increíble
Se mencionó que hubo que comprar todo el cableado por 80 dólares; en Estados Unidos a eso le dicen wiring harness. Loom se refiere al material de recubrimiento
Enlace de AliExpress