Aller au contenu


Photo

[Switch 1 & 2] CivSwitch : Le nouvel exploit XSS de Gezine exploite Civilization VII


  • Veuillez vous connecter pour répondre
11 réponses à ce sujet

Posté aujourd'hui, 06:39

#1
tralala

tralala

    \0/ Postman \0/

  • Newser Expert
  • 15 017 messages
  • Sexe:Male
La scène du hack Nintendo continue d'explorer de nouvelles pistes. Un projet baptisé CivSwitch propose une chaîne d'outils basée sur une vulnérabilité XSS présente dans la version Nintendo Switch de Civilization VII. L'objectif est de permettre l'exécution de code JavaScript sur la console, puis de mettre en place un déclencheur persistant permettant de relancer automatiquement un payloads au démarrage du jeu. Le projet se distingue par son fonctionnement : il combine un exploit déclenché depuis le chat multijoueur, un microcontrôleur USB et un mécanisme d'installation reposant sur les données de sauvegarde du jeu.
 
 
 
 
Une compatibilité annoncée avec les firmwares récents
 
D'après les informations fournies par le développeur, CivSwitch prend en charge les consoles Nintendo Switch 1 et Switch 2 sous les firmwares 20.x.x et supérieurs, jusqu'à la version 23.0.1. Les configurations suivantes ont notamment été testées :
 
- Switch 1 sous firmware 22.5.0 
- Switch 2 sous firmware 20.4.0 
- Switch 2 sous firmware 23.0.1
 
Attention toutefois : cette compatibilité concerne la chaîne d'exploitation CivSwitch et ne signifie pas que les consoles disposent d'un jailbreak complet. Il s'agit d'une méthode d'exécution de code JavaScript qui ouvre la voie à d'autres payloads. Autre restriction importante : seule la version 1.0.0 de Civilization VII, distribuée sur cartouche physique, est actuellement prise en charge. Les autres versions du jeu ne sont donc pas annoncées comme compatibles.
 
Un exploit XSS déclenché depuis le chat multijoueur
 
CivSwitch exploite une faille de type XSS (Cross-Site Scripting) dans l'interface de chat du jeu. Cette vulnérabilité permet d'injecter du code JavaScript dans un contexte où celui-ci peut être exécuté. Le déclenchement passe par le menu multijoueur de Civilization VII. L'utilisateur doit accéder à la section dédiée au jeu sans fil, créer un salon et ouvrir le chat. Un périphérique basé sur un microcontrôleur Raspberry Pi Pico envoie ensuite automatiquement le contenu nécessaire dans le champ de discussion. Le script transmis représente environ 87 lignes et nécessite approximativement 15 minutes de saisie automatisée. Une fois l'opération terminée, un Remote JS Loader est lancé sur la console et ouvre un service TCP sur le port 9026.
 
Ce service permet ensuite d'envoyer des fichiers JavaScript depuis un ordinateur, sans devoir recommencer toute la procédure d'injection à chaque fois que l'on souhaite transmettre une nouveau payload.
 
PicoSwitch et installer-creator : les deux composants de CivSwitch
 
Le projet est organisé autour de deux composants principaux.
 
PicoSwitch : le firmware chargé de l'injection
 
PicoSwitch est un firmware destiné aux microcontrôleurs Raspberry Pi Pico équipés d'une puce RP2040 ou RP2350. Il se comporte comme un clavier USB et reproduit automatiquement la saisie du code dans le chat du jeu. Le firmware contient également un outil de compression et de transformation du JavaScript afin de produire un payload adapté aux contraintes du champ de discussion. Le processus repose notamment sur la minification du code, la compression Deflate Raw et le découpage du contenu en plusieurs fragments utilisant une structure HTML de type img/onerror.
 
installer-creator : l'installation du déclencheur persistant
 
Le second composant permet de préparer un installateur à partir d'un payload javacript personnalisé.
 
Son objectif est d'écrire un déclencheur nommé XSTRIG.Civ7Save dans les données de sauvegarde du jeu. Ce mécanisme permet ensuite de relancer le paylaod depuis le menu de chargement des parties. L'installation initiale nécessite un ordinateur connecté au même réseau que la console. Le script prévu à cet effet transfère un modèle de sauvegarde, intègre le payload compressé et écrit le déclencheur dans les données du jeu. Le projet précise également que le contenu du dossier save:/saves/Single/ est effacé pendant cette opération. Il est donc important de prendre en compte ce comportement avant d'utiliser l'installateur.
 
Un déclenchement possible après chaque démarrage
 
L'une des particularités de CivSwitch est la possibilité de rendre le lancement de le payload persistant au niveau du jeu. Après l'installation du déclencheur, la procédure annoncée devient plus simple : il suffit de démarrer Civilization VII, puis de passer par le menu de chargement des parties pour déclencher l'exécution du code enregistré dans les données de sauvegarde. Si le payload installée correspond au Remote JS Loader, le service TCP sur le port 9026 peut être disponible dès cette étape. Le développeur indique également que le service peut rester accessible après une mise en veille puis un réveil de la console.
 
Cette persistance reste toutefois liée au mécanisme mis en place dans les sauvegardes de Civilization VII. Elle ne doit pas être confondue avec un exploit système permanent indépendant du jeu.
 
Un outil destiné à expérimenter avec des payloads JavaScript
 
CivSwitch ne se limite pas au lancement de son propre chargeur. Le projet prévoit également un script Python, send_js.py, capable de transmettre un fichier JavaScript au Remote JS Loader actif. Cela permet aux développeurs de tester différents payloads sans devoir modifier le firmware du microcontrôleur à chaque expérimentation. Le code source comprend les éléments nécessaires à la compilation du firmware PicoSwitch, ainsi que les scripts permettant de préparer et d'envoyer les payloads. Le développeur crédite notamment les travaux du projet Netflix-N-Hack pour certaines parties du cœur JavaScript de l'exploit, ainsi que le projet Pico-Switch-Controller pour la base du firmware destiné au firmware.
 
Alors ?
 
Avec CivSwitch, Civilization VII devient un nouveau terrain d'expérimentation pour la scène homebrew Nintendo. Le projet associe une injection XSS, un périphérique USB programmable et un déclencheur basé sur les sauvegardes pour proposer une chaîne d'exécution JavaScript annoncée comme compatible avec plusieurs firmwares récents de Switch 1 et Switch 2.
 
Il faut néanmoins garder à l'esprit les limites actuelles : la version 1.0.0 sur cartouche physique est indispensable, et l'exécution de JavaScript ne constitue pas, à elle seule, un jailbreak complet de la console.
 
La suite dépendra notamment des possibilités offertes par le Remote JS Loader et des payloads que les développeurs pourront exploiter à partir de cette première étape.
 
Source : CivSwitch 1.0
 

  • Retour en haut

Posté aujourd'hui, 06:44

#2
tralala

tralala

    \0/ Postman \0/

  • Newser Expert
  • 15 017 messages
  • Sexe:Male
un premier payload test :

https://x.com/Gamers...982770756923653
  • Retour en haut

Posté aujourd'hui, 07:13

#3
overload

overload

    Sunriseur PRIVILEGE

  • Members
  • PipPipPipPipPip
  • 2 485 messages
le Pi Pico se branche en usb du coup si ça emule un clavier usb comme ecrit dans la news ? je comprend pas trop la mise en place de celui ci a default de l'usage

EDIT : info trouvé merci quand meme

Modifié par overload, aujourd'hui, 08:43.

"Si ça saigne ça peut crever"

  • Retour en haut

Posté aujourd'hui, 07:41

#4
tralala

tralala

    \0/ Postman \0/

  • Newser Expert
  • 15 017 messages
  • Sexe:Male
il sert aussi au transfert des données des payloads
  • Retour en haut

Posté aujourd'hui, 08:26

#5
Waikiki

Waikiki

    Sunriseur elite

  • Modérateur
  • 1 384 messages
  • Sexe:Male
C'est la folie en ce moment on ne sait plus où donner de la tête.

Pour ceux qui cherchent un exemplaire (je ne sais pas pendant encore combien de temps il y en aura)

https://www.amazon.fr/dp/B0DDRD2CKY/
  • Retour en haut

Posté aujourd'hui, 08:40

#6
magicden

magicden

    Sunriseur

  • Members
  • PipPip
  • 55 messages
Pour la switch 2, est ce qu il faut la version switch 1 ou Switch 2 ? ( désolé si la question est bête). Pour info la version Switch 1 est à 10€ à sur le site Leclerc et pas en code in a box ;)

Modifié par magicden, aujourd'hui, 08:41.

  • Retour en haut

Posté aujourd'hui, 08:42

#7
overload

overload

    Sunriseur PRIVILEGE

  • Members
  • PipPipPipPipPip
  • 2 485 messages

Pour la switch 2, est ce qu il faut la version switch 1 ou Switch 2 ? ( désolé si la question est bête). Pour info la version Switch 1 est à 10€ à sur le site Leclerc et pas en code in a box ;)


version switch 1

"Si ça saigne ça peut crever"

  • Retour en haut

Posté aujourd'hui, 08:45

#8
magicden

magicden

    Sunriseur

  • Members
  • PipPip
  • 55 messages

version switch 1

Merki :)

Modifié par magicden, aujourd'hui, 08:46.

  • Retour en haut

Posté aujourd'hui, 09:10

#9
Linkynimes

Linkynimes

    Sunriseur PRIVILEGE

  • Members
  • PipPipPipPipPip
  • 3 954 messages
  • Sexe:Female
Le pico n'est pas forcément nécessaire, pour le POC Bad Apple, j'ai utilisé ma V1 Lite pucé pour effectué la première injection, j'ai juste eu besoin de modifié un peu le code de PlumeUSB pour qu'il le supporte (je peu le mettre sur github au besoin)
  • Retour en haut

Posté aujourd'hui, 09:13

#10
gromez

gromez

    Nouveau / peu actif

  • Members
  • Pip
  • 8 messages
Si on a déjà la démo SB4, c'est quand même utile d'avoir Civ VII "au cas où" ?
  • Retour en haut

Posté aujourd'hui, 09:17

#11
Natsu03

Natsu03

    Sunriseur

  • Members
  • PipPip
  • 36 messages
Bonjour à tous, désolé si ma question va paraître bête, mais pourquoi avoir une Switch pucée ? Une avec Atmosphere ne suffirait-elle pas ? Ne pourrait-on pas créer un homebrew qui se chargerait d'envoyer le code directement à la Switch 2, d'USB à USB ?
  • Retour en haut

Posté aujourd'hui, 09:27

#12
overload

overload

    Sunriseur PRIVILEGE

  • Members
  • PipPipPipPipPip
  • 2 485 messages

Le pico n'est pas forcément nécessaire, pour le POC Bad Apple, j'ai utilisé ma V1 Lite pucé pour effectué la première injection, j'ai juste eu besoin de modifié un peu le code de PlumeUSB pour qu'il le supporte (je peu le mettre sur github au besoin)


obligatoire si pas de switch 1 modifié du coup ?

"Si ça saigne ça peut crever"

  • Retour en haut




2 utilisateur(s) li(sen)t ce sujet

0 invité(s) et 2 utilisateur(s) anonyme(s)