Signal
bus CAN brut Le bus CAN (Controller Area Network) est devenu un standard dans l'industrie automobile: toutes les nouvelles voitures doivent prendre en charge CAN (depuis 2001 en Europe et depuis 2008 aux USA). Outre les voitures, CAN est utilisé dans une grande variété d'autres appareils. Les fabricants d'équipements de diagnostic pour CAN annoncent son utilisation, en plus de divers équipements automobiles, dans les motos, les chariots élévateurs, les navires, les trains miniers, les bathyscaphes, les avions sans pilote, etc. Voyons ce qu'est le CAN.
Plusieurs CAN sont utilisés dans les véhicules; par exemple, dans la Ford Focus, il y a quatre pneus de ce type - trois haute vitesse (500 kbps) pour contrôler le moteur, les freins, le tableau de bord, etc., et un basse vitesse (125 kbps) pour contrôler les portes, les phares, les airbags, le système audio, la climatisation et tout autres choses. En vous connectant à CAN, vous pouvez simuler les signaux de n'importe quel appareil de la voiture - par exemple, contrôler le climatiseur à partir de l'application sur le téléphone ou remonter le compteur kilométrique sans déplacer la voiture. En vous connectant au bus Arduino et au relais, vous pouvez contrôler une caméra de stationnement supplémentaire depuis le tableau de bord . Même les startups autonomes comme Voyage, commencez le prototypage en vous connectant au CAN dans une voiture de série ordinaire et en apprenant à simuler les signaux des pédales et du volant.
Pour se connecter au CAN dans une voiture, il y a généralement un connecteur OBD-II (On-Board Diagnostics) près du volant.
Les adaptateurs OBD2-USB pour connecter un ordinateur au CAN coûtent à partir de 5 $ et vous permettent de suivre tout le trafic à l'intérieur de la voiture. Parfois, le connecteur OBD-II est protégé par un «pare-feu matériel» qui vous permet de recevoir des paquets d'appareils connectés au CAN, mais ne permet pas de renvoyer des paquets vers le bus. Dans ce cas, il suffit de dévisser le connecteur et de se connecter aux fils CAN à la place.
Chaque paquet transmis sur le bus CAN se compose de l'ID de l'appareil émetteur (11 ou 29 bits) et jusqu'à 8 octets de données transmises. Le trafic passant par le bus lorsque le contact est mis peut ressembler à ceci:
Il existe de nombreux outils d'analyse du trafic CAN, à la fois commercial et OpenSource. Le package can-utils pour Linux comprend un utilitaire
cansniffer
qui affiche pour chaque ID CAN uniquement le dernier paquet envoyé, et vous permet ainsi de suivre les changements dans les lectures de chaque capteur sur le bus:
Pour la rétro-ingénierie du trafic CAN, des chercheurs singapouriens, à partir desquels j'ai pris cette trace, ont enregistré le tableau de bord de la voiture expérimentale en vidéo, puis ont corrélé les changements du tableau de bord avec les changements simultanés du trafic. Ayant ainsi déterminé le CAN ID du capteur de vitesse et le format des données transmises par celui-ci, ils ont appris à "falsifier" ses paquets, en transmettant de fausses lectures au compteur de vitesse et au tachymètre.
Il faut comprendre que parallèlement à la transmission de "faux" paquets, des signaux réels du capteur de vitesse continuent à être transmis sur le bus. Pour que le tachymètre affiche des lectures fabriquées, il est nécessaire de surveiller la transmission de lectures réelles sur le bus et de les supprimer d'une manière ou d'une autre - par exemple, immédiatement après avoir détecté la transmission de l'ID CAN du capteur de vitesse, «assourdissez» physiquement le bus en court-circuitant les lignes de données. Une méthode plus simple et purement logicielle pour supprimer les lectures réelles consiste à transmettre de «faux» paquets immédiatement après leur transmission, alors que le tachymètre n'a pas encore eu le temps de réagir. Par exemple, le script shell simple suivant surveille une transmission avec l'ID CAN = 0x0C9, et immédiatement après il transmet un paquet fabriqué à l'aide d'un utilitaire
cansend
des mêmes can-utils:
candump can0 | grep "0C9" | tout en lisant la ligne; ne peut envoyer can0 0C9 # 8021C0071B101000; done
Même si tous les appareils de la voiture sont connectés au CAN, toutes leurs fonctions ne sont pas contrôlées via CAN. Par exemple, des signaux concernant le degré de pression des pédales d'accélérateur et de frein sont transmis au CAN dans le Ford Escape - mais ces signaux ne sont utilisés que par l'unité ABS, tandis que les actionneurs d'accélérateur et de frein sont directement connectés aux pédales, en contournant CAN.
Du point de vue de la sécurité, il n'est question d'aucune vulnérabilité dans le rapport des Singapouriens, car l'accès physique au bus est nécessaire pour transmettre de «faux» paquets CAN. De plus, les paquets peuvent être protégés par une somme de contrôle - par exemple, dans les véhicules Toyota, le dernier octet de chaque paquet doitégal à la somme de tous les précédents (modulo 256). De plus, Toyota utilise le filtrage des destinataires pour se protéger contre les paquets indésirables - par exemple, il ignore les virages de direction de plus de 5% de la valeur actuelle.
Néanmoins, les chercheurs en sécurité ont réussi à accéder à distance au CAN: tout d' abord, à courte distance - grâce à des vulnérabilités dans un module Bluetooth connecté au même bus; et puisvia le réseau cellulaire de Sprint, à travers lequel les SUV de plusieurs fabricants américains ont reçu des données de trafic. Les chercheurs qui ont démontré l'interception du contrôle d'un Jeep Cherokee à une distance de plusieurs kilomètres ont reçu une récompense de 80 000 $ de la Defense Advanced Research Projects Agency (DARPA). Depuis lors, de nombreux constructeurs automobiles ont annoncé leurs propres programmes de primes promettant des paiements de 1 500 $ ou plus pour chaque vulnérabilité découverte. Ainsi, la rétro-ingénierie du trafic sur le bus CAN peut non seulement ajouter de nouvelles possibilités à votre voiture, mais également reconstituer considérablement votre portefeuille.