Deux consoles, deux boîtiers KVM et un interrupteur pour le bouton d’alimentation
Le 18 octobre 2026, le développeur pepsipu a rendu public ns2jb : le tout premier jailbreak purement logiciel ciblant la Nintendo Switch 2 sur son dernier firmware en date (23.0.1). Aucun démontage, aucune soudure, aucune puce modifiée requise : toute la chaîne d’attaque, du démarrage initial à la prise de contrôle totale, se déroule exclusivement au niveau logiciel. Le code exécuté au sein de l’environnement déverrouillé tourne avec les privilèges d’un module système, autorisant l’exécution d’applications maison (homebrew), la sauvegarde de parties, le modding de jeux et l’accès direct à l’essentiel des périphériques matériels.
Ce qui a véritablement pris la communauté de court n’est pas seulement l’exploit en lui-même, mais la méthode mise en œuvre pour le dénicher. L’intégralité du travail de rétro-ingénierie a été menée par l’agent Codex d’OpenAI, équipé de « mains » physiques conçues à partir de matériel grand public bon marché.
Figure : La boucle automatisée de rétro-ingénierie — la Switch 1 et la Switch 2 côte à côte, deux boîtiers JetKVM assurant la capture vidéo HDMI et l’envoi des commandes de manette, accompagnés d’un interrupteur à bascule Bluetooth modifié. Source : blog de pepsipu
En cas de plantage, l’interrupteur presse le bouton Power
Ce banc d’essai mérite une attention particulière tant son coût est dérisoire : une Switch 1, une Switch 2, deux boîtiers JetKVM — de petits modules réseau capables d’injecter des signaux USB HID et de relayer le flux vidéo HDMI — ainsi qu’un mécanisme d’interrupteur Bluetooth acheté sur Amazon et adapté pour l’occasion.
La Switch 2 présente une contrainte particulièrement frustrante pour les chercheurs en sécurité : en cas de plantage complet ou de panique du noyau, la console refuse de redémarrer automatiquement. Une pression physique sur le bouton d’alimentation est indispensable. Jusqu’alors, cela condamnait le chercheur à faire le pied de grue devant la machine : lancer un test, attendre le crash, appuyer sur le bouton et attendre le redémarrage. Grâce à l’interrupteur Bluetooth, cette corvée a été confiée à la cinématique : un bras mécanique s’abaisse pour presser le bouton d’alimentation puis, la course achevée, le couple résiduel du moteur le fait remonter à sa position initiale. Un doigt mécanique infatigable.
La boucle de rétroaction s’est ainsi refermée : Codex analysait les images vidéo, envoyait des commandes de touches, testait les comportements et, dès qu’un plantage survenait, déclenchait l’interrupteur pour redémarrer et reprendre ses essais. L’auteur avait initialement légendé son dispositif d’une formule lapidaire : « set a goal to jailbreak the switch 2. make no mistakes ». Il a précisé par la suite dans les commentaires qu’il ne s’agissait que d’une boutade : l’aboutissement de l’exploit a nécessité environ deux semaines pleines d’exécution automatisée ininterrompue. Les machines ont enchaîné les tests jour et nuit sans fatigue ; l’humain n’a eu qu’à assembler la boucle.
La piste du navigateur s’est heurtée à une impasse
Dans un premier temps, Codex a tenté la stratégie la plus familière : exploiter une vulnérabilité n-day connue de WebKit sur le navigateur intégré de la Switch 2 via un faux portail captif Wi-Fi. D’après les journaux de bord de l’agent, le détournement natif du flux de contrôle (Control Flow Hijacking) a été obtenu avec succès, le compteur de programme basculant sous le contrôle de l’attaquant.
Cependant, Nintendo a blindé la Switch 2 avec des défenses modernes : la mémoire à exécution seule (XOM) empêche la lecture et l’écriture des segments de code, les codes d’authentification de pointeurs (PAC) vérifient l’intégrité des adresses, et le contrôle d’intégrité du flux (CFI) restreint strictement les cibles des sauts indirects. Bien que le flux de contrôle ait été détourné, il s’est avéré impossible de généraliser la primitive vers des appels système arbitraires. L’agent a fini par abandonner cette piste.
Figure : Journal de bord de Codex confirmant la prise de contrôle du flux d’exécution via un n-day WebKit, étape où l’attaque s’est finalement arrêtée. Source : blog de pepsipu
Sur une autre console, l’issue aurait pu être différente — mais c’est l’histoire d’une autre machine.
La faille se dissimulait dans un interpréteur BASIC
La véritable brèche s’est ouverte du côté de la Switch 1. Celle-ci ne dispose d’aucune protection PAC, sa racine de confiance (Root of Trust) a été cassée depuis des années par la communauté, et les binaires des jeux peuvent être déchiffrés et étudiés hors ligne. Codex a jeté son dévolu sur SmileBASIC, un jeu commercial permettant aux utilisateurs d’écrire et d’exécuter des mini-programmes en langage BASIC.
La vulnérabilité se nichait dans la routine de suppression d’éléments de tableau : le programme vérifiait si position + count dépassait la taille du tableau. Cependant, s’agissant d’entiers signés 32 bits, cette addition pouvait déborder et devenir négative, contournant purement et simplement le contrôle de limites. La copie mémoire consécutive s’effectuait sur (length - position) * 8 octets, provoquant une copie hors limites (Out-of-bounds copy). Un dépassement d’entier d’école, tapi dans un titre commercial commercialisé depuis des années.
Dans la mesure où les deux générations de consoles partagent des pans entiers d’architecture matérielle et logicielle, relier la tête de pont obtenue sur Switch 1 aux privilèges d’exécution sur Switch 2 a permis de franchir la dernière étape.
Modder Mario Kart, simplement pour le plaisir
La démonstration post-exploit ne manquait pas d’humour : Codex s’est attaqué au jeu exclusif Mario Kart World, injectant sur la grille de départ une ribambelle de modèles 3D personnalisés — Cinnamoroll de Sanrio, Reze de Chainsaw Man, Steve de Minecraft, Walter White de Breaking Bad et Hatsune Miku, tous lancés sur la même piste.
Figure : Écran des résultats dans Mario Kart World après l’injection des modèles personnalisés, montrant Walter White et Hatsune Miku concourant sur le même circuit. Source : blog de pepsipu
L’auteur a souligné que la modification de Mario Kart relevait du pur « vibe coding » — bouclé en une seule après-midi pour le plaisir ; en revanche, le code du jailbreak lui-même a été développé avec une rigueur absolue. Dans les commentaires, d’autres bidouilleurs ont partagé des installations similaires : l’un couplant des cartes d’acquisition et des prises connectées pour laisser Claude porter d’anciens jeux sous DOS, un autre utilisant deux microcontrôleurs ESP et des servomoteurs pour actionner le bouton de réinitialisation de cartes x86. Le constat unanime s’est imposé : la force majeure de ces boucles fermées réside dans leur capacité de parallélisation massive et leur exécution continue 24 h/24.
Le goulot d’étranglement n’a jamais été intellectuel
Revenons à cet interrupteur Bluetooth pressant inlassablement le bouton d’alimentation. La rétro-ingénierie matérielle a longtemps été ralentie par la pénibilité de la boucle « exécuter, planter, redémarrer, recommencer ». Dès lors que caméras, cartes de capture et relais mécaniques prennent en charge cette routine mécanique, la rétro-ingénierie cesse d’être une contrainte de main-d’œuvre pour devenir un problème de débit et de traitement automatisé (Throughput). L’humain conçoit la boucle, la machine exécute les répétitions — condensant des mois de tâtonnements humains en seulement deux semaines de calcul.
Nintendo ne restera sans doute pas les bras croisés. Dans une note de bas de page, l’auteur anticipe les ripostes possibles : si Nintendo choisit de ne confier le déchiffrement du code des jeux qu’au seul espace noyau, le mode utilisateur (Userland) n’aura plus aucun mappage exécutable. Même le chargeur d’applications devra solliciter des niveaux de privilège supérieurs pour obtenir du code — au prix d’interdire aux jeux de lire leur propre code à l’exécution. Nintendo s’emploie déjà à restreindre les fonctionnalités de code dynamique, et cette orientation s’inscrit dans la même logique.
Mais les règles de ce jeu du chat et de la souris ont fondamentalement changé. Auparavant, les systèmes de protection n’avaient qu’à épuiser la patience des chercheurs ; désormais, cette patience est assurée par des relais mécaniques. Quand la prochaine mise à jour 23.0.1 tombera, ce ne seront plus des doigts humains qui appuieront sur le bouton d’alimentation.
Liens de référence :
- Billet de blog original de pepsipu : ns2jb
- Discussion sur Hacker News (item?id=50192536)