Faille CivSwitch sur Nintendo Switch 2 : comment la cartouche Switch 1 de Civilization VII ouvre une brèche sur le firmware 23.0.1

Sid Meier's Civilization VII sur Nintendo Switch 2 illustrant la faille userland CivSwitch

La scène homebrew vient de trouver un nouveau cheval de Troie pour s’inviter dans les entrailles de la dernière console hybride de Kyoto. Baptisée CivSwitch et publiée en open source sur GitHub par le chercheur en sécurité et développeur Gezine, cette nouvelle chaîne d’exploitation ouvre un point d’entrée logiciel (userland entry point) hors ligne sur la Nintendo Switch 2 ainsi que sur la première Switch, en détournant tout simplement l’édition Nintendo Switch 1 de Sid Meier’s Civilization VII lancée via la rétrocompatibilité.

Depuis que Nintendo a purgé l’eShop de plusieurs anciens vecteurs historiques comme l’application SmileBASIC, les chercheurs en sécurité cherchaient une porte d’entrée pressée sur une cartouche physique que le constructeur ne peut pas effacer à distance. Après les secousses provoquées par l’exploit logiciel ns2jb sur le firmware 23.0.1 de la Nintendo Switch 2, cette méthode baptisée CivSwitch prouve que les couches héritées de la génération précédente restent un terrain d’expérimentation privilégié sur les firmwares allant de la branche 20.x.x jusqu’à l’actuelle version 23.0.1.

Une faille XSS cachée dans le chat multijoueur de la cartouche Switch 1 en version 1.0.0

Le fonctionnement technique de CivSwitch repose sur une vulnérabilité de type XSS (Cross-Site Scripting) nichée au cœur de l’interface du salon multijoueur sans fil local de Sid Meier’s Civilization VII. Concrètement, la boîte de discussion textuelle du lobby interprète certaines balises sans les filtrer correctement, ce qui permet d’injecter du code JavaScript arbitraire directement dans le moteur d’interface du jeu.

Toutes les copies du célèbre 4X de Firaxis Games et 2K ne sont toutefois pas éligibles : l’exploit exige strictement la cartouche physique Nintendo Switch 1 en version 1.0.0 d’origine, telle qu’elle a été gravée en usine. Les éditions dématérialisées téléchargées sur l’eShop, les boîtes contenant un simple code de téléchargement ou les cartouches ayant reçu un correctif en ligne ne permettent pas de reproduire la faille. Pour préserver cette version initiale sur une Switch 2 (testée avec succès par Gezine sur les firmwares 20.4.0 et 23.0.1, ainsi qu’en 22.5.0 sur la première Switch), la documentation recommande de bloquer au préalable les serveurs de mise à jour de Nintendo via un pare-feu DNS comme 90DNS.

Partie stratégique dans Sid Meier's Civilization VII utilisé comme point d'entrée sur Nintendo Switch 2
La version 1.0.0 sur cartouche Switch 1 de Sid Meier’s Civilization VII sert de point d’entrée userland sur la Nintendo Switch 2 via son salon multijoueur sans fil.

PicoSwitch et sauvegarde persistante : comment l’injection s’automatise en 15 minutes

Comme la saisie manuelle d’une charge utile complète à la manette ou au clavier serait interminable, la chaîne d’outils de Gezine se divise en deux briques complémentaires qui s’appuient notamment sur les travaux antérieurs de Netflix-N-Hack (et le fork d’ufm42) ainsi que sur le projet Pico-Switch-Controller d’Element2424 :

  • Le module matériel PicoSwitch : compilé au format UF2 pour un microcontrôleur Raspberry Pi Pico (puces RP2040 ou RP2350), ce petit circuit imprimé à quelques euros se comporte comme un clavier USB HID lorsqu’on le branche au dock de la console. Une fois le joueur placé dans le menu du chat sans fil local (Multiplayer > Wireless > Create Game > Host Lobby > Chat) avec le clavier système réglé en anglais américain, le Pico tape automatiquement environ 87 lignes de code compressées (via terser, deflateRaw et un encodage base-25 contournant le filtre de censure par des balises img/onerror) en une quinzaine de minutes.
  • Le Remote JS Loader sur le port TCP 9026 : dès que la frappe automatisée s’achève, un serveur d’écoute local s’ouvre sur la console via le port TCP 9026. Le développeur peut alors envoyer n’importe quel script JavaScript depuis son PC à l’aide de l’utilitaire Python send_js.py et lire les journaux d’exécution renvoyés en direct par la machine.
  • Le déclencheur persistant dans la sauvegarde : pour éviter de rebrancher le Raspberry Pi Pico à chaque session, le second outil baptisé installer-creator génère un fichier de sauvegarde modifié (XSTRIG.Civ7Save) injecté dans le répertoire du jeu. Lors des démarrages suivants, il suffit de cliquer sur « Charger une partie » (Load Game) depuis l’écran titre pour activer instantanément le chargeur TCP, qui survit même à la mise en veille de la console.

Détail astucieux relevé par Gezine pour les possesseurs d’une Nintendo Switch 2 japonaise verrouillée en langue : si le firmware ne permet pas de basculer la saisie USB en alphabet latin, il est possible de connecter une première Switch en sans-fil local au salon de la Switch 2 et de brancher le Raspberry Pi Pico sur la console secondaire afin de transmettre la charge utile à travers le réseau local du lobby.

Trailer video

Ce que CivSwitch permet aujourd’hui (et pourquoi le noyau de la Switch 2 reste verrouillé)

Si l’ouverture d’un accès sur le dernier firmware 23.0.1 marque une étape technique notable, il convient de mesurer précisément la portée de cette démonstration. CivSwitch est strictement un point d’entrée userland : le code exécuté demeure confiné aux privilèges restreints du conteneur de rétrocompatibilité attribué au jeu Switch 1.

À l’heure actuelle, cet outil ne fournit ni élévation de privilèges vers le noyau (kernel) de la Switch 2, ni accès étendu au système de fichiers global (filesystem escalation). Il ne permet donc pas d’installer un Custom Firmware (CFW) complet, de modifier l’interface native de la console ou d’extraire des cartouches Switch 2 pour alimenter les premiers émulateurs PC de la Nintendo Switch 2 comme Eden-NX2 et Eglantine. Pour les chercheurs en sécurité et les développeurs de logiciels amateurs, il constitue en revanche un tremplin stable, reproductible hors ligne et indépendant de l’eShop pour explorer le bac à sable de rétrocompatibilité de Nintendo.

Mon regard

C’est un classique indémodable de l’histoire des consoles Nintendo : on blinde la porte d’entrée principale avec une puce flambant neuve et des vérifications cryptographiques dernier cri, mais on laisse une fenêtre entrebâillée au sous-sol à cause de la rétrocompatibilité. En voyant un Raspberry Pi Pico taper patiemment 87 lignes de code dans le chat multijoueur de Civilization VII pendant un quart d’heure pour transformer une sauvegarde en cheval de Troie permanent, impossible de ne pas repenser à l’époque dorée de Cubic Ninja sur 3DS ou aux failles du mode Wii virtuel sur Wii U.

Certes, le grand public n’en fera rien dans l’immédiat puisque tout reste enfermé dans le bac à sable userland d’un jeu Switch 1 sans accès au noyau de la Switch 2. Mais sur le plan symbolique comme technique, le coup de maître de Gezine rappelle une règle d’or aux ingénieurs de Kyoto : dès qu’une cartouche physique version 1.0.0 circule dans la nature avec une faille de saisie, aucun retrait sur l’eShop ne peut plus jamais la faire disparaître.

Fiche Complète du Jeu Disponible

Civilization VII

Retrouvez toutes les bandes-annonces, la fiche technique et les actualités dédiées à Civilization VII.

Suivez Pro-Gamer sur Discord
Recevez toutes nos actus gaming, les alertes de prix hardware et votez sur les sorties en direct avec la communauté.
Rejoindre le Discord →

Retrouvez Pro-Gamer en priorité sur Google

Ajoutez pro-gamer.fr à vos sources préférées pour retrouver nos guides et actus directement dans votre flux Google Discover et vos résultats de recherche.

Chaya "Chayane"
Rédigé par Chaya "Chayane"
🧠 Rédactrice Tech & IA 🗽 New York & Montréal

Américaine installée dans la périphérie de New York, Chaya « Chayane » a passé 5 ans à Montréal pour ses études d'ingénierie logicielle avant de revenir dans sa région natale. Développeuse Full-Stack et chercheuse en architectures de Deep Learning et d'IA, elle explore les réseaux neuronaux et l'optimisation algorithmique tout en concevant les outils de Retrocharting et Gamescharting aux côtés de Grimtag. Gamer depuis plus de 20 ans, collectionneuse passionnée de l'univers Nintendo et de la saga The Legend of Zelda, elle a arpenté Azeroth sur World of Warcraft avant de mettre son expertise technique au service de l'analyse vidéoludique.

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.