Exploiting the Tesla Wall Connector from its charge port connector - Part 2: bypassing the anti-downgrade
Mis à jour :
Contournement de la protection anti-downgrade du Tesla Wall Connector
Cette analyse détaille une méthode pour contourner la protection “anti-downgrade” (anti-rétrogradation) introduite par Tesla dans le firmware 24.44.3 du Wall Connector, permettant d’exécuter une ancienne version du firmware vulnérable via une attaque par le port de charge.
Points clés
- Fonctionnement du bootloader : Le chargeur utilise deux emplacements (slots) de firmware. Le bootloader vérifie la signature RSA et le CRC, mais ignore le mécanisme de “ratchet” (verrou de sécurité versionné).
- Faille de logique : La vérification de la version est effectuée uniquement par la routine de mise à jour (
0x201). Une fois cette étape validée, le bootloader se fie exclusivement à la table de partition pour choisir le firmware à exécuter. - Méthode d’exploitation : Il est possible de valider une version légitime récente pour mettre à jour la table de partition, puis d’effacer ce slot légitime (via la routine
0xFF00) pour y injecter un ancien firmware signé. Au redémarrage, le système exécute l’ancien firmware car la table de partition pointe toujours vers ce slot.
Vulnérabilités
- Absence de Secure Boot robuste : Le bootloader ne vérifie pas la cohérence de la version (ratchet) du firmware, rendant la protection anti-downgrade dépendante d’un seul processus logiciel facilement contournable.
- Séquence de mise à jour malléable : La possibilité de modifier l’état du système de fichiers après la validation du firmware permet de désynchroniser la table de partition du contenu réel de la mémoire Flash.
Recommandations
- Sécurisation au niveau du Bootloader : Implémenter la vérification du “ratchet” de sécurité directement dans le code de démarrage (bootloader) plutôt que dans la routine de mise à jour.
- Intégrité atomique : Modifier la routine
0xFF00pour invalider immédiatement l’entrée de la table de partition lors de l’effacement d’un slot, afin d’éviter qu’un slot effacé ne reste sélectionné comme bootable. - Gestion des états : Forcer un redémarrage immédiat après la validation d’une mise à jour ou empêcher l’ouverture d’une nouvelle session d’écriture après l’exécution réussie de la routine
0x201.
