Nintendo Switch : on en sait plus sur « Fusée Gelée »
La faille qui permet de lancer Linux sur la console de jeu

Le , par Patrick Ruiz, Chroniqueur Actualités
Il y a déjà deux mois qu’un groupe de hackers baptisé Fail0verflow a publié une vidéo d’une Nintendo Switch en train de faire tourner Linux. Mis à part la brève mention de la boot ROM (la mémoire de démarrage) dans ces développements, rien de vraiment croustillant n’avait vraiment filtré, mais des détails commencent à être publiés.

Dans une FAQ parue le 4 avril dernier, la team ReSwitched balise le chemin vers la compréhension de la vulnérabilité – baptisée « Fusée Gelée » – avant d’enchaîner il y a peu avec la publication d’un dépôt GitHub plutôt détaillé. La faille au sein de la Nintendo Switch réside bel et bien dans sa mémoire de démarrage. En substance, c’est la pile logicielle USB contenue dans la boot ROM qui est le talon d’Achille de la console. ReSwitched a publié une portion de la fonction rcm_read_command_and_payload en cause ; celle qui permet à la Switch de gérer les requêtes de contrôle émises par un hôte au travers du port USB.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Temporary, automatic variables, located on the stack.
uint16_t status;
void *data_to_tx;
 
// The amount of data available to transmit.
uint16_t size_to_tx   = 0;
 
 // The amount of data the USB host requested.
uint16_t length_read  = setup_packet.length;
 
/* Lots of handler cases have omitted for brevity. */
 
// Handle GET_STATUS requests.
if (setup_packet.request == REQUEST_GET_STATUS)
{
  // If this is asking for the DEVICE's status, respond accordingly.
  if(setup_packet.recipient == RECIPIENT_DEVICE) {
      status     = get_usb_device_status();
      size_to_tx = sizeof(status);
  }
  // Otherwise, respond with the ENDPOINT status.
  else if (setup_packet.recipient == RECIPIENT_ENDPOINT){
      status     = get_usb_endpoint_status(setup_packet.index);
      size_to_tx = length_read; // <-- This is a critical error!
  }
  else {
    /* ... */
  }
 
  // Send the status value, which we'll copy from the stack variable 'status'.
  data_to_tx = &status;
}
 
// Copy the data we have into our DMA buffer for transmission.
// For a GET_STATUS request, this copies data from the stack into our DMA buffer.
memcpy(dma_buffer, data_to_tx, size_to_tx);
 
// If the host requested less data than we have, only send the amount requested.
// This effectively selects min(size_to_tx, length_read).
if (length_read < size_to_tx) {
  size_to_tx = length_read;
}
 
// Transmit the response we've constructed back to the host.
respond_to_control_request(dma_buffer, length_to_send);

Le souci avec cette dernière est qu’un attaquant a la possibilité de manipuler l’entier non signé length_read à sa guise au travers d’un paquet émis par un hôte connecté à la console. La suite ne se comprend mieux qu’avec la cartographie mémoire de la boot ROM d’un SoC Tegra 210 de Nvidia. Le contrôle de la variable length_read permet à l’attaquant de provoquer un dépassement de tampon dma qui se répercute sur la pile d’exécution de la boot ROM. Si l’on ajoute que dans le Recovery Mode (RCM) – prévu par Nintendo pour l’installation d’images en usine ou la récupération de consoles défectueuses –, les données chargées dans les tampons dma proviennent d’une zone mémoire contrôlée par l’attaquant, alors on éclaire un gros pan de l’obscurité qu’il y avait autour du procédé employé par Fail0verflow pour parvenir à lancer Linux sur la console. Le passage en mode RCM permet donc d’exécuter du code non signé par Nvidia.


Pour ne pas laisser à ReSwitched toute la gloire liée à la publication de ces détails, Fail0verflow a également posté des détails sur l’exploitation de la vulnérabilité, notamment, sur la façon d’accéder au Recovery Mode à l’aide d’un tweak matériel. Dans leurs notes d’information, Fail0verflow et ReSwitched indiquent qu’il suffit de provoquer un court-circuit entre certaines broches du connecteur USB. Fail0verflow a publié des images d’un gadget de sa conception qui permet de réaliser l’opération.


De façon brossée, l’exploitation de la faille requiert donc de réaliser cette adaptation matérielle puis de se connecter à la console au travers du port USB pour charger le code nécessaire ; pas simple pour un néophyte. La vulnérabilité est toutefois fâcheuse pour Nintendo, car le géant du gaming japonais ne peut la corriger en diffusant un correctif logiciel comme on en a l’habitude. Le seul moyen pour l’entreprise de rectifier le tir est de programmer de nouvelles ROM pour les prochaines consoles qui sortiront de ses laboratoires – tâche qui se fera en tandem avec Nvidia qui est le fournisseur des systèmes sur puce que la console utilise ; bienheureux donc les bidouilleurs qui possèdent déjà une Switch puisque la faille demeure exploitable dans leur cas, et ce, à jamais.

Sources

Dépôt GitHub de « Fusée Gelée »

Fail0verflow

Et vous ?

Qu’en pensez-vous ?

Ces détails vous donnent-ils envie d’acquérir une Switch pour reproduire la manœuvre ?

Si oui, pour quel usage particulier envisagez-vous de le faire ?

Voir aussi

Plus de 10 millions de Nintendo Switch écoulées en l'espace de neuf mois, la Switch rencontrera-t-elle le succès de la PS4 ou de la Wii ?

Gaming : un émulateur Nintendo Switch en cours de développement, Yuzu sera disponible sur Windows, macOS et Linux

Les développeurs d'un émulateur WiiU reçoivent 24 000 dollars par mois pour leur travail, leur Patreon grimpe depuis la sortie de Zelda


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Ryu2000 Ryu2000 - Membre extrêmement actif https://www.developpez.com
le 26/04/2018 à 9:13
Citation Envoyé par Patrick Ruiz Voir le message
Ces détails vous donnent-ils envie d’acquérir une Switch pour reproduire la manœuvre ?
J'ai envie d'acquérir une Switch pour le Zelda et le Mario.
Mais je n'ai pas envie d’exploiter la faille.

Le piratage c'était hyper fun du temps de la Playstation 1, c'est un des facteurs qui a participé à son succès.
La puce et les CD gravé c'était tout une époque, pour la Saturn et la Dreamcast c'était un peu pareil.

Mais après le piratage de console c'était plutôt triste.
Comme la carte R4 pour la DS qui était beaucoup trop mainstream, il parait que même des comités d'entreprises en donnait à leur employés pour leur enfants.
Du coup des jeux ne se sont pas assez vendu à cause du piratage (Grand Theft Auto : Chinatown Wars).

Aujourd'hui avec internet tout le monde à accès à tout, pour la DS c'était abusé, les gens n'avaient pas tous conscience qu'ils faisaient quelque chose d'illégales.
Nintendo : La vente de linkers est interdite en France‏
Un sujet comme celui du piratage suscite tellement le débat qu’il semble complètement vain de se lancer dans ce terrain à la fois glissant et brûlant. Entre les ados sans-le-sou qui justifie la copie de jeux comme un acte salutaire, les jemenfoutiste qui se fiche de se procurer aussi bien les derniers titres que les petites production indépendante de manière illégale et autres mères au foyer se procurant des puces R4 par leur comité d’entreprise, c’est sur, le piratage, ça fait parler.
Avatar de Kannagi Kannagi - Expert éminent https://www.developpez.com
le 26/04/2018 à 10:28
Citation Envoyé par Ryu2000 Voir le message
Mais après le piratage de console c'était plutôt triste.
Comme la carte R4 pour la DS qui était beaucoup trop mainstream, il parait que même des comités d'entreprises en donnait à leur employés pour leur enfants.
Du coup des jeux ne se sont pas assez vendu à cause du piratage (Grand Theft Auto : Chinatown Wars).

Aujourd'hui avec internet tout le monde à accès à tout, pour la DS c'était abusé, les gens n'avaient pas tous conscience qu'ils faisaient quelque chose d'illégales.
Nintendo : La vente de linkers est interdite en France‏
Je ne pense pas que c'est illégal vu qu'un linker n'est pas forcément pour le piratage , j'ai pas mal de linker chez moi et je l'utilise que pour une chose : le Homebrew
Techniquement cela n'a rien d'illégal de mettre son propre programme sur une console.,néanmoins l'article date de 2011 et j'ai pu acheter pas mal de linker après cette sans trop de soucis
Avatar de Steinvikel Steinvikel - Membre actif https://www.developpez.com
le 26/04/2018 à 10:31
Pour rebondir sur "le piratage c'est mal" :
effectivement on peut critiquer les mauvaise intentions de ceux qui en profite pour payer le moins possible. Mais ce qui rend le sujet si compliqué c'est que l'apparition de ce phénomène n'est pas apparu pour le fun, mais pour contourner des limitations... parfois philosophiques, ou logistiques (exclusivité d'accès), de censure, et parfois économiques.
J'en oublie sûrement plein d'autres.

- philosophique >> refus de payer une grosse somme pour un jeu ayant beaucoup de succès, renflouant très facilement son développement, ayant déjà une très bonne notoriété.
Ces jeux là sont en général écoulé en très grands nombre et sont plus cher que la majorité des autres. Dans la vente physique (IRL) le prix fondamental est basé sur l'économie de la rareté >> acheteur disponible (demande hypothétique) divisé par nombre d'exemplaire (l'offre) = ordre de grandeur du prix
Les acheteurs augmentent lentement avec l'écoulement des consoles, les succès (prévisibles) d'un jeu devrais donc amener as un prix plus bas de ces derniers (bon, après ya le coût du développement aussi).
Quand le support est dématérialisé, le nombre d’exemplaires disponible est infini, et le nombre d'humains, toujours restreint >> donc le prix proche de zéro $ théoriquement... mais il n'en est rien, ils sont même vendu au même tarif (plus cher même quand il est question de chasse gardé en littérature >> les manuels).
On comprend donc aisément le sentiment de vol (d'abus) que certains ressentent.
... ou encore, de traduire ou RE-traduire une oeuvre, ou modifier le jeu à sa convenance (avoir des vie infini dans un Mario...).
- logistique >> un jeux (ou console) n'étant parfois vendu que dans peu d'endroit du monde, ou bien possédant une exclusivité le liant à une console précise.
- censure >> certain contenu sont adaptés pour "plaire" au pays visé... ainsi zelda II a vu son ambiance musicale et visuelle retravaillé (voir ici).
- économique >> Certains (peut-être une minorité), ne peuvent ce permettre les pleins tarif dans leur budget de vie, c'est malheureux mais ça existe, d'autres ne le peuvent que "trop peu" fréquemment (certains le définiront 1fois par trimestre, d'autres 1fois par semaine).

PS: le jour ou chaque studio de développement auront un portail internet pour récupérer les dons... tu sera surpris de voir le nombre de dons provenant de personnes ayant joué gratuitement.
C'est un point de vu adopté (à l'essai) par certaine productions cinématographiques.
exemple: The Man from Earth: Holocene (faisant suite à The Man from Earth), puisque malgrès le grand succès en Amérique du premier volet, n'a pas été édité en France (en Europe plus généralement), et a donc vu sa diffusion d'autant plus limité, il a donc parié pour Holocene sur une diffusion gratuite par internet, demandant de penser à payer si aprécié.
Avatar de AoCannaille AoCannaille - Membre chevronné https://www.developpez.com
le 26/04/2018 à 10:50
Citation Envoyé par Kannagi Voir le message
j'ai pas mal de linker chez moi et je l'utilise que pour une chose : le Homebrew
Techniquement cela n'a rien d'illégal de mettre son propre programme sur une console.,
Je pense que c'est illegal de faire ça sans le kit de dev officiel de nitendo (vendu je suppose à un prix orienté entreprise, donc pas donné pour un particulier) ^^

Ceci dit c'est moralement beaucoup plus louable
Avatar de zecreator zecreator - Membre expérimenté https://www.developpez.com
le 26/04/2018 à 19:42
Quand on voit un jeu comme GTA, dont les ventes records le jour de sa sortie, ont remboursés 10 fois le prix de production du jeu, on a pas forcément mauvaise conscience de le télécharger illégalement. Cela me gêne plus sur des jeux de petits studios qui comptent sur les ventes pour vivre.

Après le téléchargement illégal à aussi permit à une masse populaire l'accés à des oeuvres (cinéma, jeux, musiques...) que leur budget ne permettait pas.
Avatar de MikeRowSoft MikeRowSoft - I.A. en bêta-test https://www.developpez.com
le 04/05/2018 à 12:20
La virtualisation n'exclus pas Windows 10... Curieux...
Avatar de zecreator zecreator - Membre expérimenté https://www.developpez.com
le 14/05/2018 à 7:28
Les cartes comme les R4 ou les hacks et autres USB Loader ont eu surtout un effet néfaste sur le plaisir des enfants d'acquérir un nouveau jeu. Il n'y a plus d'attente d'un anniversaire ou d'un Noel pour avoir le dernier Pokémon ou Mario, on leur apprend très tôt la consommation à outrance. Du coup, les gamins jouent à leurs jeux sans vraiment de motivation. Ils sont vite blasés...
Contacter le responsable de la rubrique Accueil