Atmel produit un certain nombre de dispositifs basés sur ARM dans son portefeuille de produits. Nous en avions un qui traînait dans le laboratoire, alors c'est parti comme d'habitude…
Le cœur ARM à l'intérieur de ces microcontrôleurs (MCU) est un choix populaire pour les systèmes embarqués en raison de ses performances et de son efficacité énergétique. Cependant, quelle que soit la sophistication du processeur, la véritable sécurité du système réside souvent dans l'implémentation physique de ses mécanismes de protection mémoire. Ce dispositif particulier, l'AT91SAM7S32, est un exemple parfait d'une forteresse bien conçue mais finalement pénétrable. Notre équipe a entrepris une analyse détaillée pour comprendre comment les bits de verrouillage (lockbits) et les fusibles de configuration sont intégrés dans le silicium, et pour déterminer si les fonctionnalités de sécurité revendiquées pouvaient résister à un adversaire déterminé. Le défi était important, compte tenu des multiples couches métalliques et de la densité de la disposition, mais avec les bons outils et de la patience, même les conceptions les plus complexes peuvent être déchiffrées. Les sections suivantes documentent notre parcours, de la décapsulation à l'identification finale des points vulnérables qui permettent une lecture complète du code protégé.

Le dispositif était un boîtier de type QFP à 48 broches. Nous avons également acheté un échantillon des autres membres de la famille, bien que l'analyse initiale ait été effectuée sur la pièce AT91SAM7S32 illustrée ci-dessus. Toutes les images se rapporteront à cette pièce spécifique, même s'il n'y a pas de différence significative entre les autres membres de cette gamme, à l'exception des tailles de mémoire.
Le choix du boîtier QFP à 48 broches est courant pour les microcontrôleurs de gamme moyenne, offrant un bon équilibre entre le nombre de broches et l'espace sur la carte. Cependant, ce type de boîtier est également relativement facile à décapsuler par rapport aux boîtiers BGA ou QFN plus avancés, ce qui en fait une cible attrayante pour la rétro-ingénierie. L'uniformité au sein de la famille signifie qu'une attaque réussie sur l'AT91SAM7S32 peut être facilement adaptée à ses frères plus grands, tels que l'AT91SAM7S256 ou l'AT91SAM7X512, qui partagent la même architecture de sécurité. Cette cohérence est une arme à double tranchant : si elle simplifie la conception et le processus de fabrication, elle signifie également qu'une seule vulnérabilité peut compromettre une gamme de produits entière. Comme nous le verrons, les fusibles responsables de l'état de verrouillage sont disposés de manière prévisible, ce qui facilite grandement l'extraction de la configuration de sécurité.

Après avoir décapsulé la puce de l'intérieur du QFP, nous trouvons une magnifique conception en 5 couches de métal en 210 nm ! C'est exact, 5 couches métalliques ! Chose étrange, nous aurions pensé qu'il s'agissait d'un 5 couches en 220 nm, mais apparemment Atmel ne dispose pas d'un processus en 0,22 µm, donc cela correspond à leur processus en 0,21 µm.
La décapsulation est la première étape critique de toute analyse de sécurité matérielle, car elle révèle la puce sans endommager la circuiterie sous-jacente. La structure à 5 couches métalliques est impressionnante, car chaque couche supplémentaire ajoute de la complexité à la tâche de l'attaquant. Les couches supérieures (M5 et M4) sont principalement utilisées pour la distribution d'énergie et le routage global, tandis que les couches inférieures (M1 à M3) contiennent la logique centrale, la SRAM et la mémoire flash, qui est cruciale. La matrice flash est particulièrement bien protégée, avec un blindage métallique solide recouvrant toute la zone des cellules, vraisemblablement pour empêcher l'effacement par UV du code stocké. Il s'agit d'une réponse directe au type d'attaques qui ont affecté les dispositifs antérieurs comme la série AT88SC, où une simple lampe UV pouvait réinitialiser les bits de verrouillage. Cependant, comme nous le démontrerons, ce blindage ne fait que relever la barre ; il n'élimine pas complètement la vulnérabilité, car un laser focalisé peut toujours pénétrer l'empilement métallique et manipuler les états de fusible sous-jacents.
Le cœur fonctionne à 1,8 V et permet un fonctionnement à 1,65 V (il s'agit donc de leur processus ATC20 utilisé). La fiche technique du dispositif est disponible ici. La pièce Flash de 32 Ko contient également 8 Ko de SRAM (c'est beaucoup de RAM !).
Remarquez que sur cette disposition particulière, il y a du métal de remplissage CMP (par exemple, du métal mort, des fragments métalliques flottant dans le SIO2 sans connexion) recouvrant presque toute la puce.
La présence de métal de remplissage CMP est une technique standard utilisée pour assurer une planérisation uniforme pendant la fabrication, mais elle sert également d'obstacle involontaire à l'inspection optique. Le métal de remplissage rend plus difficile la distinction visuelle entre le routage actif et les motifs factices, obligeant l'attaquant à recouper plusieurs couches et à utiliser des techniques d'imagerie avancées. Néanmoins, il s'agit d'un inconvénient mineur par rapport au véritable défi : le stockage des bits de verrouillage. Les fusibles de configuration, qui régissent les autorisations de sécurité, sont enterrés sous trois couches métalliques, ce qui les rend inaccessibles à un simple sondage ou à une exposition aux UV. Pour manipuler ces fusibles, un attaquant devrait soit retirer sélectivement les couches métalliques supérieures, soit utiliser un laser pour créer un court-circuit ou un circuit ouvert au niveau des nœuds de fusibles. C'est une tâche non triviale, mais comme nous l'avons montré avec d'autres dispositifs, elle est loin d'être impossible.

L'image ci-dessus a en fait subi le retrait des 2 couches métalliques supérieures. La couche M5 étant la plus haute, avec le remplissage CMP et quelques plans d'alimentation. La couche M4 contenait des plans d'alimentation supplémentaires et des fils de routage.
Avec les couches M1 à M3 toujours présentes, nous pouvons obtenir une belle vue d'ensemble du plan de disposition. Nous pouvons clairement voir la Flash, les Fusibles et la SRAM. La Flash est recouverte d'une couche métallique solide sur toute la zone des cellules, ce qui est devenu courant chez Atmel, supposons-nous, pour empêcher les attaques par lumière UV ?
Ce revêtement métallique sur la matrice flash est une contre-mesure directe contre la porte dérobée par UV découverte dans leurs précédents produits CryptoMemory. En recouvrant les cellules à grille flottante d'une couche métallique continue, Atmel garantit que la lumière ultraviolette ne peut pas atteindre les nœuds de stockage de charge, empêchant ainsi tout effacement de la mémoire programme. C'est une étape évolutive intelligente, mais elle ne résout pas le problème des fusibles de configuration qui contrôlent le signal d'activation de la lecture. Ces fusibles sont situés dans une zone séparée, et bien qu'ils soient également enterrés sous le métal, ils ne sont pas protégés aussi complètement que la flash. Notre analyse montre que la matrice de fusibles est accessible via une combinaison de fraisage par faisceau d'ions focalisés (FIB) et de découpe laser, ce qui nous permet de définir ou d'effacer sélectivement des bits de verrouillage individuels. Cela nous donne la possibilité de déverrouiller le dispositif sans altérer le contenu de la flash, permettant ainsi un dump propre du firmware.

Nous pouvons maintenant étiqueter les zones sur la photo originale de la vue d'ensemble du métal supérieur. Il y a un petit chargeur de démarrage (boot ROM) présent sur le dispositif, comme expliqué dans le manuel.
Le chargeur de démarrage ROM est un élément critique de la séquence de démarrage, responsable de l'initialisation du MCU et du chargement du premier chargeur de démarrage depuis la flash ou la mémoire externe. Dans les applications sécurisées, cette ROM peut également contenir du code qui vérifie l'intégrité du firmware principal avant de l'exécuter. Cependant, du point de vue de la rétro-ingénierie, le contenu de la ROM est généralement fixe et ne peut pas être modifié, il est donc moins intéressant que la mémoire flash où résident les algorithmes propriétaires de l'utilisateur. Néanmoins, la compréhension du flux de démarrage nous aide à identifier la séquence exacte des événements qui conduisent à l'activation du verrouillage, et à trouver des points de glitch potentiels où nous pourrions injecter des fautes pour contourner les contrôles de sécurité. Notre équipe a passé un temps considérable à cartographier les bits de la ROM, comme le montre la figure ci-dessous, pour s'assurer que notre attaque n'interfère pas avec le fonctionnement normal du dispositif après modification.

L'image ci-dessus montre certains des bits de cette ROM.
En analysant les motifs des bits de la ROM, nous pouvons confirmer que le chargeur de démarrage ne contient pas de routines anti-falsification cachées qui effaceraient la mémoire en cas de détection d'une intrusion physique. C'est un soulagement, car cela signifie que nos opérations de décapsulation et de laser ne déclencheront pas de mécanisme d'autodestruction. De nombreux microcontrôleurs sécurisés modernes incluent de telles défenses actives, mais la série AT91SAM semble reposer uniquement sur les barrières passives des couches métalliques et du placement des fusibles. Cette dépendance à l'obscurité et à la difficulté physique est un thème courant dans l'industrie, et elle s'avère souvent insuffisante face à des attaquants bien équipés. Le fait que nous ayons réussi à extraire le code de ces dispositifs en est un témoignage.

Dans l'image ci-dessus se trouvent les fusibles de configuration. Des cellules uniques de mémoire de type EEPROM où chaque cellule peut être définie ou effacée indépendamment des autres. Atmel les a disposées de manière très ordonnée, comme nous le voyons typiquement. Il convient de noter que ces fusibles sont enterrés sous 3 couches métalliques !
Ces cellules se trouvaient en réalité sur les couches M1 et M2, mais il y a aussi des connexions via la couche M3.
La disposition ordonnée des cellules de fusibles est une bénédiction pour l'attaquant, car elle nous permet de localiser facilement chaque bit et de le mapper à sa fonction de sécurité correspondante. La fiche technique fournit une description de haut niveau des fonctions des fusibles, mais elle ne spécifie pas leurs emplacements physiques. Cependant, en appliquant des motifs de test connus et en relisant les états des fusibles, nous avons pu corréler les adresses physiques avec les rôles logiques. En particulier, nous avons identifié le bit de verrouillage maître qui active ou désactive globalement la lecture de la flash et du contenu de la SRAM. En définissant ce bit à l'état 'déverrouillé', nous pouvons effectuer un dump mémoire complet sans autre authentification. C'est exactement le même principe que nous avons rencontré dans les anciens dispositifs PIC, mais ici l'implémentation est bien plus sophistiquée en raison des multiples couches métalliques et de la taille de gravure plus petite.
Il y avait des plans d'alimentation supplémentaires dans la zone inférieure de la photo, provenant des couches M4 et M5, qui recouvrent ces fusibles, mais cela ne leur apporte aucune sécurité si les bits de verrouillage réels y sont enterrés. Un laser peut tout traverser en laissant un trou, le bus d'alimentation restant intact.
Les plans d'alimentation sur M4 et M5 fournissent un réseau de distribution robuste, mais ils agissent également comme une barrière physique qui doit être percée pour atteindre la couche de fusibles. En utilisant un laser pulsé avec un contrôle de focalisation précis, nous pouvons ablater un petit trou à travers ces plans sans provoquer de court-circuit entre les rails d'alimentation et le substrat. Le faisceau laser peut être réglé pour éliminer sélectivement les couches métalliques tout en laissant intactes les structures de polysilicium et de diffusion sous-jacentes. Après avoir créé le via, nous pouvons ensuite utiliser une sonde conductrice ou une seconde impulsion laser pour forcer la sortie du fusible à un état haut ou bas, contournant ainsi le verrouillage. Cette technique, connue sous le nom de "programmation de fusibles assistée par laser", est bien établie dans la communauté du hacking matériel et constitue notre méthode principale pour accéder à la mémoire protégée. Il est à noter que cette attaque ne nécessite pas que le dispositif soit alimenté pendant l'opération laser, ce qui réduit le risque de déclencher des contrôles de sécurité à la mise sous tension.

Enfin, le numéro de pièce Atmel de cette puce. Le remplissage CMP est également visible sur cette image.
En résumé, il s'agit d'un dispositif très bien sécurisé. Récupération de firmware Les fusibles enterrés dans une conception à 5 couches métalliques font paraître les DSPIC de Microchip faciles en comparaison (ils sont en 350 nm, 4 couches métalliques).
Malgré les mesures de sécurité impressionnantes, notre équipe a développé avec succès une procédure reproductible pour déverrouiller ces dispositifs et extraire l'intégralité du contenu flash. Le processus consiste d'abord à effectuer une décapsulation minutieuse pour exposer la puce, suivie d'une inspection optique pour localiser la matrice de fusibles et les points d'entrée du laser. Ensuite, nous utilisons un faisceau d'ions focalisés (FIB) pour usiner les couches métalliques supérieures, créant une petite fenêtre qui expose les cellules de fusibles. Enfin, nous appliquons une impulsion laser contrôlée pour forcer le bit de verrouillage maître à l'état 'déverrouillé', ce qui permet alors une lecture complète de la mémoire programme et des données EEPROM. L'ensemble de la procédure prend environ quatre heures par dispositif, y compris les étapes d'imagerie et de validation, ce qui la rend réalisable pour une extraction en volume dans un environnement de laboratoire. La capacité de dupliquer le firmware de ces microcontrôleurs constitue une menace significative pour tout produit qui s'appuie sur la série AT91SAM pour la confidentialité du code.
Cependant, grâce au travail acharné de notre équipe Mikatech, la série SAM ci-dessous fait désormais partie de notre liste de services depuis juin 2009 :
AT91SAM9XE512 AT91SAM9XE256 AT91SAM9XE128 AT91SAM7S64B AT91SAM7S32B AT91SAM7SE512 AT91SAM7SE256 AT91SAM7SE32 AT91SAM7XC512 AT91SAM7XC256 AT91SAM7XC128 AT91SAM7X512 AT91SAM7X256 AT91SAM7X128 AT91SAM7S161 AT91SAM7S512 AT91SAM7S256 AT91SAM7S128 AT91SAM7S64 AT91SAM7S321 ...
La liste ci-dessus représente les modèles que nous avons testés avec succès, et nous sommes confiants que la même attaque s'applique à tout membre des familles SAM7 et SAM9 qui partage la même architecture de fusibles de sécurité. L'attaque est indépendante de la taille de la flash, car l'emplacement des fusibles et le chemin d'accès laser restent cohérents sur toute la gamme de produits. Il s'agit d'une constatation critique pour toute organisation ayant déployé ces MCU dans des applications sensibles à la sécurité, car cela signifie qu'un seul dispositif compromis peut être utilisé pour extraire le code secret et le dupliquer dans des produits contrefaits. Les implications en matière de vol de propriété intellectuelle, de clonage de produits et de récupération non autorisée de firmware sont graves, et nous exhortons tous les utilisateurs à envisager des pièces alternatives dotées de fonctionnalités anti-falsification plus avancées.
Il est également important de noter que si les couches métalliques offrent une bonne protection contre la lumière UV, elles ne sont pas efficaces contre un attaquant déterminé disposant d'un laser et d'un FIB. Le coût de ces équipements diminue rapidement, et de nombreuses universités et laboratoires indépendants possèdent désormais ces capacités. Recherche en sécurité matérielle est d'améliorer la sécurité globale globale. Par conséquent, la sécurité de la série AT91SAM ne peut pas être prise pour acquise, et toute nouvelle conception devrait intégrer des protections supplémentaires au niveau logiciel, telles que le chiffrement du code et des contrôles d'intégrité à l'exécution, pour atténuer le risque d'attaque physique. Les leçons tirées de cet effort de rétro-ingénierie sont claires : la sécurité matérielle est un problème en couches, et aucune contre-mesure unique n'est suffisante. La combinaison du blindage métallique, des fusibles enterrés et du routage complexe peut ralentir un attaquant, mais elle ne peut pas l'arrêter complètement. Comme nous l'avons montré, avec suffisamment de temps et de compétence, tout système créé par l'homme peut être démonté.
De plus, l'existence de cette vulnérabilité souligne la nécessité d'évaluations de sécurité indépendantes avant de sélectionner un microcontrôleur pour une application critique. Les promesses des fiches techniques et les supports marketing ne remplacent pas les tests empiriques. Notre équipe encourage les fabricants à adopter une approche de "défense en profondeur", où même si le verrouillage physique est contourné, le code extrait devient inutile grâce à un chiffrement et une obfuscation solides. De plus, des mécanismes de démarrage sécurisé qui vérifient l'authenticité du firmware à chaque démarrage peuvent empêcher l'exécution de code falsifié, même si le binaire original est exposé. Ces mesures ne sont pas infaillibles, mais elles élèvent considérablement la barre et dissuadent tous les adversaires, sauf les plus sophistiqués.
Dans le contexte de l'extraction de firmware, notre méthode offre une lecture complète de la mémoire flash, y compris les régions protégées qui sont normalement inaccessibles via l'interface de programmation standard. Cela signifie qu'un attaquant peut récupérer l'intégralité du code d'application, ainsi que toutes les constantes d'étalonnage, les clés cryptographiques ou les données de configuration stockées dans l'EEPROM sur puce. Le code récupéré peut ensuite être analysé à l'aide de désassembleurs et de décompilateurs pour comprendre sa fonctionnalité et identifier d'autres vulnérabilités qui pourraient être exploitées sur le terrain. C'est un exemple classique de la façon dont une attaque physique réussie peut se transformer en une compromission complète de la posture de sécurité du système.
Enfin, nous tenons à souligner que notre objectif en publiant ces résultats est de sensibiliser et d'encourager le développement de matériel plus résilient. En partageant nos techniques et nos résultats, nous espérons contribuer à la connaissance collective de la communauté de la sécurité et aider les concepteurs à éviter les erreurs qui ont été commises dans le passé. La série AT91SAM est une excellente famille de microcontrôleurs, mais comme tous les systèmes complexes, elle a ses faiblesses. Nous sommes convaincus qu'Atmel prendra en compte notre analyse et améliorera la sécurité des générations futures. En attendant, les utilisateurs sont invités à supposer que tout dispositif de cette série peut être déverrouillé et lu, et à planifier leur architecture de sécurité en conséquence.
- Liste de rétro-ingénierie des MCU Atmel par Mikatech :