- Para participar do bug bounty da Tesla, foram comprados no eBay a MCU e o computador do Autopilot do Model 3 para tentar executá-los em um ambiente desktop
- Após conectar adicionalmente uma fonte de alimentação de 12V e o módulo da tela touchscreen, o boot foi bem-sucedido, e foi possível acessar a rede interna pela porta Ethernet
- Dentro da MCU, estavam abertos um servidor SSH e a API REST ODIN (porta 8080), e o acesso via SSH exigia uma chave assinada pela Tesla
- No início, por causa de problemas de compatibilidade de cabos e danos na PCB, foi necessário substituir o chip controlador de energia, mas após o reparo foi possível recuperar o sistema
- Por fim, ao conectar o Dashboard Wiring Harness, foi possível realizar o boot completo da touchscreen e do sistema operacional do veículo, tornando viáveis a operação da UI e a análise de firmware
Colocando o computador do Tesla Model 3 para rodar na mesa
- Para participar do programa de bug bounty da Tesla, era necessário hardware real do veículo, então foram compradas no eBay peças da MCU (Media Control Unit) do Model 3 e do computador do Autopilot (AP)
- O computador automotivo tem uma estrutura com duas placas empilhadas, fica atrás do porta-luvas do banco do passageiro e é coberto por uma carcaça metálica com refrigeração líquida
- Peças na faixa de 200 a 300 dólares foram obtidas no eBay, e a maioria era vendida por desmanches de veículos acidentados
- Para inicializar o sistema, também foram necessários uma fonte DC de 12V, um módulo de touchscreen e um cabo de display
- Foi usada uma fonte de alimentação ajustável de 0–30V e 10A, e a tela foi comprada por 175 dólares
Problemas de cabo e informações de fiação elétrica
- Os cabos que conectam a MCU à tela eram vendidos, em sua maioria, cortados logo após o conector, então foi necessário fabricar um cabo separado
- A Tesla publica a documentação de Electrical Reference de todos os veículos, o que permitiu verificar a pinagem e as informações de fiação de cada conector
- O display requer um cabo de 6 pinos com conector Rosenberger 99K10D-1D5A5-D (2 pinos para 12V/terra e 4 pinos de dados)
- Como esse conector não podia ser comprado avulsamente por consumidores comuns, foi encomendado como alternativa um cabo LVDS para BMW
Conexão de energia e acesso à rede
- Com base no esquema elétrico da Tesla e em materiais online, ao localizar os pinos de 12V e terra e conectar a alimentação, o LED vermelho acendeu e o boot começou
- Sem a tela, a interação era limitada, mas era possível conectar a um notebook pela porta Ethernet
- A rede não tinha DHCP, então era necessário configurar o IP manualmente e usar a faixa
192.168.90.X/24
- Por meio do arquivo
/etc/hosts divulgado no Reddit, foi possível identificar os IPs internos de hosts como MCU, gateway e Autopilot
- Na MCU (
192.168.90.100), estavam abertos SSH (porta 22) e um servidor web (porta 8080)
Serviços internos e estrutura da MCU
- O servidor SSH exibia a mensagem “SSH allowed: vehicle parked” e exigia uma chave assinada pela Tesla para acesso
- No bug bounty da Tesla, pesquisadores que encontram uma vulnerabilidade de root recebem um certificado SSH permanente
- Na porta 8080, havia uma API de estilo REST chamada ODIN (On-Board Diagnostic Interface Network), usada pela ferramenta de diagnóstico Toolbox
- Ao remover a blindagem metálica, foi possível ver o interior, onde a MCU e a placa do Autopilot estavam dispostas em estrutura empilhada
Falha de cabo e dano ao circuito
- O cabo LVDS da BMW era fisicamente incompatível, então foi feita uma tentativa de ligação direta dos fios
- Os fios finos se romperam e ocorreu um curto na PCB, danificando o chip controlador de energia
- Foi difícil identificar o chip danificado, mas o colaborador Yasser confirmou que se tratava do controlador step-down MAX16932CATIS/V+T
- Um chip novo foi encomendado e substituído em uma oficina de reparo de PCB, permitindo recuperar a MCU
- Depois disso, foi adquirido também um segundo computador como reserva
Solução final e boot completo
- Como não foi possível obter o cabo Rosenberger, acabou sendo comprado o Dashboard Wiring Harness completo (80 dólares)
- No veículo real, a montagem não era feita com cabos individuais, mas sim no formato de um grande chicote elétrico (loom)
- Ao conectar o chicote, a touchscreen passou a funcionar normalmente e o sistema operacional do veículo inicializou por completo
- A partir daí, tornaram-se possíveis a operação da UI, a exploração das interfaces de rede, a análise do barramento CAN e as tentativas de extração de firmware
2 comentários
O mais interessante é isso aqui
"Programa de acesso root da Tesla"
Se você encontrar ao menos uma vulnerabilidade de rooting válida, pode receber um "certificado SSH permanente" para o seu próprio veículo e fazer login como root.
Ah, eu quero isso!!
Comentários no Hacker News
O programa de Root access da Tesla é interessante
Se um pesquisador encontrar ao menos uma vulnerabilidade de rooting válida, pode receber um certificado SSH permanente para o próprio veículo e fazer login como root
É parecido com o Security Research Device Program da Apple, mas com critérios de qualificação claros
Dá para entender a abordagem da Tesla, já que dar privilégios de root a todos facilitaria a busca por vulnerabilidades por agentes mal-intencionados
Trabalhei no passado em uma empresa que fazia ferramentas de varredura de terceiros
Testávamos com ECUs conectadas em rack em vez de veículos reais e descobrimos um problema de deslocamento de bytes não padronizado da BMW. A ferramenta da concorrência não detectava o problema, mas a ferramenta oficial da BMW mostrava o DTC
Se eu configurar outro modelo, até consigo apagar os DTCs da ECU, então estou usando assim provisoriamente. Essa área precisa muito de uma abordagem de hardware/software aberto
Estou pensando se devo publicar o resultado produzido com software comercial caro, e acho que informações como definições de protocolos de comunicação veicular deveriam ser abertas para todos
É curioso ver LVDS ser chamado de cabo automotivo. Originalmente, eu via isso mais para conectar displays de notebook à placa-mãe
Veja o artigo sobre Low-voltage differential signaling
Dá para executar o QtCar, app de interface da Tesla, no QEMU
Basta ter o firmware; se alguém tiver interesse, é só mandar DM
Vídeo de demonstração
Uma pessoa compartilhou a experiência de instalar por conta própria um controlador de freio de reboque em um Tesla Model Y
Encontrou um controlador compatível com 14,4 V, fez o cabo e comprou conectores no eBay para instalar
Rebocou um trailer de camping várias vezes no ano passado sem problemas, e esse espírito de hack DIY parece muito legal
É interessante que o cerne do problema era apenas um conector de 6 pinos
Havia desenho e dimensões, então surpreende que ninguém tenha pensado em fabricar o conector diretamente com impressão 3D
Esse projeto é muito legal
Fiquei curioso se é plug and play e onde as informações de autonomia ficam armazenadas
Se fosse possível, gostaria de adaptar a suspensão adaptativa em um modelo mais antigo. Também existe a ideia de criar um sistema de controle separado com Raspberry Pi
É surpreendente que o sistema operacional inicialize completamente mesmo sem os periféricos esperados ao redor
Digam o que quiserem sobre a Tesla, do ponto de vista de hacking isso é realmente um projeto incrível
Disseram que foi preciso comprar toda a fiação por 80 dólares; nos EUA isso é chamado de wiring harness. loom se refere ao material de revestimento
Link do AliExpress