6 Febbraio 2022

Vulnerabilità Tesla: facciamo chiarezza

By Leonardo Avella

Vulnerabilità Tesla: facciamo chiarezza. Se siete appassionati del mondo Tesla, probabilmente vi sarà capitato di sentire che recentemente è stata individuata una vulnerabilità che permetteva di controllare remotamente alcune automobili Tesla. Sarà vero che Tesla è stata hackerata?

Iniziamo subito a sgomberare il campo da qualunque dubbio: il problema non risiedeva nel software Tesla, ma in una applicazione open source di terze parti, denominata Teslamate.

Vulnerabilità Tesla: facciamo chiarezza - Teslamate Hacked?

La vulnerabilità è stata scoperta da un professionista tedesco esperto di cyber security. Un diciannovenne di nome David Colombo. Come ha fatto? Lo racconta qui in dettaglio lui stesso.

Proverò a riassumere cosa ha scoperto, prima però devo fare alcune premesse. Tutte le nostre auto Tesla sono connesse in internet tramite una SIM a bordo dell’auto e dialogano continuamente con i servers Tesla, come si può vedere dallo schema qui sotto.

Vulnerabilità Tesla: facciamo chiarezza: comunicazione del veicolo, dell'app e di Teslamate con i servers Tesla

L’App ufficiale Tesla ha due modi di comunicare con il veicolo: tramite bluetooth (quando io sono in prossimità dello stesso) oppure tramite i servers di Tesla (quando io sono lontano dall’auto). Quindi, se sono lontano dal veicolo, impartisco tutti i miei comandi ai servers Tesla. Sarà l’automobile, che periodicamente chiede ai servers se c’è qualcosa da fare, che scarica il comando e lo esegue.

Vulnerabilità Tesla: facciamo chiarezza - comandi

Vulnerabilità Tesla: facciamo chiarezza. Come fa l’app Tesla a comunicare in maniera sicura con i servers? Attraverso le API (Application Programming Interfaces), che possono essere di due tipi:

  • Authentication API: comandi per instaurare il canale sicuro con i servers
  • Vehicle API: sono le specifiche per i comandi che posso impartire all’automobile

Le Authentication API usano delle password, detti token o chiavi, per crittografare il traffico. Chiavi che vengono generate in base al tuo nome utente, alla tua password del sito Tesla ed al tuo veicolo. Esistono modi per ricavare i token a partire da user e password del sito Tesla. Uno dei più semplici è usare l’app per Mac/iPhone/iPad disponibile qui.

Teslamate quindi, per poter scaricare i dati del nostro veicolo dai servers Tesla, ha bisogno di comunicare con loro in maniera sicura e lo fa attraverso le chiavi API. E qui viene il bello. L’anno scorso un’azienda parigina di Software as a Service ha commissionato un lavoro a David Colombo: un audit di sicurezza. Di cosa si tratta? Praticamente vieni pagato per trovare le falle di sicurezza informatica dell’azienda, in modo che possano essere poi risolte.

Durante questo audit si è imbattuto in un’istanza di Teslamate pubblicata su internet. Più in dettaglio era quella del CTO (Chief Technology Officer, il responsabile tecnico dell’azienda).

Continuando ad indagare, David Colombo ha scoperto che Teslamate usa Grafana per disegnare i grafici e visualizzare i dati. Ed ha scoperto che Grafana permetteva l’accesso a tali dati usando user e password di default: admin/admin.

Ha scoperto anche che Teslamate usava la chiave API per scaricare i dati dai servers cloud di Tesla, e che questa chiave era salvata in maniera non crittografata nello stesso posto dove venivano salvati tutti gli altri dati (!!!).

Banner Link Banner

Quindi, se Grafana era in grado di accedere allo storico dei dati del veicolo forse poteva anche recuperare la chiave API! Ebbene sì, usando user e password admin/admin (ma anche richieste anonime) su Grafana era possibile recuperare il token per dialogare con i servers Tesla!

David ha capito immediatamente che non era in pericolo solo l’auto del CTO di Parigi, ma anche tutte quelle degli utenti che avevano installato Teslamate e lo avevano reso pubblico su internet. Andando a spulciare la documentazione ha scoperto inoltre che grazie alla chiave API avrebbe potuto dare alla vettura gli stessi comandi che si possono dare dall’App: aprire e chiudere i finestrini, suonare il clacson, etc… E per ottenere le chiavi API non aveva nemmeno bisogno delle credenziali di accesso dei proprietari!

Vulnerabilità Tesla: facciamo chiarezza. Ecco come accedere a vetture Tesla di proprietari che hanno pubblicato Teslamate su internet e non lo hanno aggiornato:

  • Esegui una ricerca su Internet per le istanze Teslamate (usando ad esempio i broker MQTT).
  • Assicurati che Teslamate usi la configurazione Docker predefinita non sicura e non sia aggiornato.
  • Collegati all’indirizzo ip di Teslamate usando la porta TCP 3000 per accedere alla dashboard di Grafana (ad esempio digitando sul browser un indirizzo del tipo http://myteslamate.duckdns.org:3000).
  • Accedi utilizzando le credenziali predefinite (ovviamente fallo solo se hai l’autorizzazione esplicita del proprietario).
  • Vai alla scheda Esplora.
  • Utilizza il Query Builder per estrarre i token API (sono due, c’è anche il refresh token).
  • Divertiti a giocare con la Tesla (ovviamente solo se autorizzato).
Vulnerabilità Tesla: facciamo chiarezza - Grafana, scheda esplora

A causa di questa falla di sicurezza era possibile:

  • Sbloccare le porte.
  • Aprire i finestrini.
  • Abilitare la guida senza chiavi.
  • Condividere video.
  • Modificare le impostazioni del riscaldamento/condizionatore.
  • Suonare il clacson e far lampeggiare le luci.
  • Curiosità: era possibile anche aprire e chiudere il cancello o il garage del proprietario (se presente homelink, vedere qui per i dettagli).

Ok, ma quali versioni sono vulnerabili? Come descritto nel CVE-2022–23126: “La configurazione Docker predefinita precedente alla versione Teslamate 1.25.1 consente ad un utente malintenzionato di ottenere il token, dando la possibilità di eseguire azioni non autorizzate tramite l’API di Tesla”.

Quindi, quali sono le raccomandazioni?

  • Mai pubblicare su internet alcunché, a maggior ragione se sono cose importanti.
  • Stai molto, molto attento a chi dai le tue credenziali.
  • Aggiorna Teslamate (e qualsiasi altro software Tesla di terze parti che utilizzi) all’ultima versione e tieni d’occhio gli aggiornamenti di sicurezza.

Voglio installare Teslamate, cosa devo fare?

Per concludere, un paio di osservazioni indirizzate a chi volesse installare oggi Teslamate: partite dall’articolo che abbiamo pubblicato qui, ma nel DATABASE ed in POSTGRES non usate la password suggerita, “secret”. Inventatevene una voi diversa e non banale.

Nel video youtube che spiega come installare Teslamate su QNAP usando docker, Cesare di Electric Experiences scarica a mano i vari docker. Questa cosa da qualche tempo non funziona più.

Adesso bisogna solamente creare l’applicazione, poi convalidare e creare lo yaml. Questa semplice operazione avvia il download automatico di tutto quello che serve (Teslamate, Grafana, Postgres, Mosquitto). Anche perché Teslamate vuole release specifiche di Mosquitto e Postgres. Le ultime release che non funzionano.

[Via]

Banner Link Banner