Des avancées très intéressantes ont été faites par différents protagonistes du
forum Xboxhacker concernant la mise au point d'une solution autorisant le downgrade du kernel de la Xbox 360 même si les eFuses sont "brulés" pour empêcher cela. Cependant pour se faire il vous faudra obligatoirement la clé CPU (qui est elle même "cachée" dans les données eFuse).
Si vous suivez les informations concernant le downgrade du kernel Xbox 360, vous vous rappellerez que celui-ci était déjà possible (
voir notre article mais Microsoft a rapidement corrigé la faille en "brulant" des eFuses lors de la mise à jour du kernel 4548 vers le 4552 en même temps que corriger la
faille de l'hyperviseur qui fonctionnait sur les kernels 4532/4548 et permettait le lancement de code non signé et Linux. Il était déjà connu qu'en retirant la résistance r6t3 de la carte mère avant un upgrade vous pouviez éviter que Microsoft ne "brule" des eFuses afin de conserver la possibilité d'effectuer un downgrade du kernel 4552+ vers le pre-4552, cependant personne ne connait réellement l'impact de la suppression de cette résistance sur les kernels à venir.
Il faut également savoir que Microsoft ne "brule" pas de nouveaux eFuses (situés sur le CPU lui même) à chaque upgrade car le nombre, même s'il est conséquent, reste restreint : 768 (12 'fuselines' de 64 fuses chacun) au total et seulement une partie de ce nombre (5 'fuselines'(= 320 fuses)?) peut être utilisée pour empêcher le downgrade (= 80 downgrade des bans possible? - à noter qu'une fois "brulé" c'est irrémédiable). Les eFuses contiennent également d'autres données comme la fameuse 'CPU Key' qui est propre à chaque console.
Selon tmbinc, cette clé est utilisée pour:
- Cryptage de la *keyvault* (qui contient: les certificats de la console, des clés privés, la clé DVD, mais aucun code en relation avec le cryptage des clés).
- Cryptage de la table de revocation d'une console importée (CRLL, en relation avec la
fameuse histoire de 360gamesaves.com, mais qui n'a aucun lien avec le Live),
- "Cryptage" des informations de 'CB' et 'CF' (cependant la compréhension de ce code est difficile)
'CB' (2nd bootloader?) et 'CF' (kernel patches) sont situés sur le flash intégré de la carte mère dans la section "CPU data" (données qui sont lues lorsque vous allumez la console. Si ces données sont invalides, la console peut clignoter rouge etc.).
Voici quelques explications des intéressés eux-mêmes (tmbinc et TheSpecialist) :
Citation :
Toutes les différences entre le pre-4552 et le 4552 et plus sont les bits G/H [parties des eFuses]. Ils encodent une "séquence" de chiffre, qui sont également stockés dans les données CF, et un bit est ajouté pour "incrémenté" la séquence.
Explication: si vous savez comme calculer la donnée CF, vous pourriez modifier la valeur de la "séquence attendue" ici (ceci, peut cependant être vérifié par quelqu'un d'autre...). Pour pouvoir calculer cette donnée , vous avez besoin de la "per-box-key" (clé unique à chaque console). Mais si vous possédez cela vous pouvez placer le nombre 4532 sur le 4552, et il booterait encore.
Au byte 0x21F dans le CF vous trouverez le chiffre qui est incrémenté lorsqu'un eFuse est "brulé" (merci à Robinsod). Ce byte et seulement ce byte vous empêche de réaliser un downgrade. Nous voulions essayer de décrémenter ce chiffre, mais il est apparu que cela n'était pas possible sans connaitre la donnée fuse : les bytes 0x0 à 0x220 dans la CF sont "hashed" (hash situé à 0x220). La routine de hash utilise la clé CPU comme "entrée" et vérifie le hash calculé sur celui situé à 0x220. De ce fait, le downgrade n'est pas possible sans connaitre la clé CPU
Vous l'aurez compris, vous avez besoin de cette fameuse clé CPU pour espérer réaliser un downgrade vers le kernel pre-4552 et sur le kernel 4552+ il n'y pas (encore) de méthode pour récupérer cette clé. Sur les kernels 4532/4548 vous pouvez utiliser l'exploit Hyperviseur pour récupérer cette donnée (comme le fait
Xell Linux Loader) - mais si vous avez déjà un de ces kernels vous pouvez déjà lancer du code non signé. Cependant, si vous restez sur un de ces kernels ces nouvelles informations vous permettront de récupérer votre clé CPU et vous ouvrir la porte du downgrade même après une mise à jour ou après qu'un eFuse soit "brulé".
Robinsod a mis en pratique cette théorie:
Citation :
Dans le CF décrypté il y a un "compteur de version" à 0x21F. Chaque fois qu'une mise à jour est réalisée (depuis la version 4532) un eFuse est "brulé" et le compteur incrémenté de 1 avant d'être intégré dans le nouveau CF. Lors du boot, une vérification est effectuée pour s'assurer que le compteur dans le CF sélectionné affiche un nombre >= (supérieur ou égale) au nombre de eFuses "brulés".
La bonne nouvelle est qu'il est possible de modifier le byte du compteur et de ré-encrypter la section CF. Le point négatif est qu'un hash des premiers bytes 0x220 nécessite la clé CPU. Ainsi, dès l'instant ou vous connaitrez votre clé CPU vous pourrez downgrader vers un kernel vulnérable comme expliqué ci-dessous
1) Récupérer une nouvelle Xbox avec un kernel 1888 & 2241
Le compteur de version dans le CF de la Xbox de test utilisant un 2241 affichait 0
2) Installez le 4532
Le compteur de version dans le CF de la Xbox de test utilisant désormais le 4532 affichait 1
De même fuseset 07: f000000000000000
3) Installez le 4552
Le compteur de version dans le CF du 4552 affichait 2. Normalement il est désormais impossible de downgrader vers un dump non patché du 4532.
4) Modification du dump d'un 4532 en faisant afficher au compteur de version le chiffre 2. Boot!
Un dump de la donnée fuse indique bien fuseset 07: ff00000000000000
Un second eFuse a été "brulé" par le 4552
Conclusion: si vous parvenez à obtenir la clé CPU de votre Xbox 360, autant dire que la partie est quasiment gagnée contre Microsoft.
Source :
X360 GX-Mod.com - LE site de hack pour votre console XBox 360 - Articles