Les eFuses et la Nintendo Switch

Certains d’entre vous ont été suffisamment sages en 2018 pour recevoir une Nintendo Switch à noël ! Les plus retords, l’ont sûrement déjà équipée d’un SX Pro** dans le but d’y faire tourner Linux. De ce fait, vous avez peut-être entendu parler d’eFuse ou d’eFuse brûlé, mais sans savoir réellement de quoi il s’agissait.

La première fois que j’ai entendu parler d’eFuse fût à la sortie de la console Microsoft Xbox 360, qui « brûlait » des eFuses à chaque mise à jour du firmware, afin d’empêcher l’installation d’un ancien firmware, qui serait vulnérable et permettrait de contourner les protections de la console et installer des jeux piratés.

La technologie a été inventée par IBM dans le but de protéger des circuits électroniques soumis à de fortes contraintes et de reprogrammer physiquement un circuit électronique qui, normalement, est imprimé (gravé) une fois, en usine. Les eFuses sont censés protéger les circuits de surintensités, de surconsommations de puissance, de courts-circuits, d’inversions de polarité en entrée, de surtensions ou de sous-tensions. Quand l’une de ces problématiques est détectée sur une partie d’un circuit électronique, une décharge électrique de forte intensité est envoyée sur une partie très fine en métal (ou polyéthylène) de l’eFuse, qui est alors détruite.

Cela revient à avoir un mini fusible, que l’on peut faire sauter au besoin depuis un logiciel mais sans pouvoir revenir en arrière.

Voici des photos au microscope d’eFuse :

https://semiengineering.com/the-benefits-of-antifuse-otp/

Il est ensuite possible de vérifier si un eFuse en particulier a été brûlé. C’est ce qui permet d’obtenir un état non réversible sur les consoles de jeux vidéo.

La Nintendo Switch brûle les eFuses uniquement au redémarrage. En la démarrant sur un bootloader non officiel, les eFuses ne brûleront pas et elle lancera ensuite le firmware officiel de Nintendo (ou un autre). Ce contournement est uniquement possible en cas de faille dans le microprocesseur, ce qui est le cas sur les anciennes consoles Nintendo Switch**.

La console Nintendo Switch, dispose d’un système d’eFuse dans le registre interne FUSE_RESERVED_ODM7 du processeur Tegra X1 de la console. Il y’a 256 bits de réservés dans l’index ODM_RESERVED du processeur, ce qui permet, théoriquement, d’avoir 32 mises à jour du firmware.

https://switchbrew.org/wiki/Fuses#odm_reserved

Nintendo a déjà publié 8 versions majeures de son firmware en brûlant 8 eFuses. Le tableau ci-dessous présente les correspondances entre les versions des firmwares et le nombre d’eFuses brûlés :

https://switchbrew.org/wiki/Fuses#Anti-downgrade

En cas de démarrage d’un firmware 6.0.0, s’il ne détecte pas 7 eFuses brûlés, le firmware considère que la console a été piratée et la bloque. Il existe des outils permettant de contourner cela en démarrant sur un firmware alternatif pour ensuite, choisir le firmware officiel de son choix. C’est ce que fait ChoiDuJourNX https://switchtools.sshnuke.net/.

** Fonctionnel uniquement sur les anciennes consoles Switch ayant une vulnérabilité dans la rom de la carte graphique Nvidia Tegra X1 ne pouvant pas être mis à jour sans changer physiquement le composant : https://twitter.com/fail0verflow/status/960894909304786945/photo/1