La scène PS5 accueille un nouvel exploit baptisé Relapse, une chaîne d’exploitation qui annonce une compatibilité particulièrement large, puisqu’elle couvre les firmwares 7.00 jusqu’au récent 13.60. Le projet combine une première étape basée sur le navigateur WebKit avec un exploit kernel permettant, une fois la chaîne menée à son terme, d'obtenir les primitives nécessaires à l'exécution de payloads sur la console.
Une compatibilité du firmware 7.00 au 13.60
Relapse cible donc plusieurs générations de firmwares PS5, avec une prise en charge annoncée des versions : 7.00 → 13.60
Cette compatibilité est particulièrement intéressante pour les utilisateurs qui disposent encore d'une console sur un firmware exploitable, notamment sur les versions récentes de la branche 13.xx. Le projet peut être utilisé directement depuis la PS5 en passant par le navigateur WebKit, ou exécuté localement afin d'héberger les différents éléments de l'exploit.
Comment lancer Relapse ?
Les développeurs recommandent, dans les paramètres réseau de la PS5, de configurer le DNS primaire sur 45.56.67.85. Il est également possible d'exécuter localement le serveur fourni avec le projet avec python serve.py
Après une exécution réussie, les payloads par défaut sont stockés dans le répertoire payloads/.
Le chargeur ELF intégré écoute quant à lui sur le port 9021, permettant ainsi d'envoyer les binaires nécessaires depuis le réseau.
Une chaîne WebKit + Kernel
Relapse repose sur une chaîne d'exploitation en deux étapes.
WebKit : corruption d'un TypedArray
La première partie exploite plusieurs primitives au niveau de JavaScriptCore.
Les développeurs indiquent que le navigateur utilise notamment des fuites d'informations JSC ainsi qu'un problème de type structured clone object pool mismatch permettant de provoquer une corruption d'un TypedArray.
Cette corruption fournit ensuite les primitives nécessaires pour poursuivre l'exploitation et atteindre l'étape kernel.
Kernel : fuite d'adresse et aio_multi_wait
La seconde partie combine une fuite d'adresse avec une condition de course de type Use-After-Free (UAF) impliquant aio_multi_wait.
L'objectif de cette chaîne est d'obtenir finalement des primitives de lecture/écriture mémoire au niveau kernel, ouvrant la voie à l'exécution des payloads.
Il s'agit donc d'une chaîne complète allant du navigateur WebKit jusqu'au kernel de la PS5.
Une stabilité encore perfectible
Les développeurs préviennent toutefois que Relapse n'est pas nécessairement fiable du premier coup.
Au niveau WebKit, plusieurs tentatives peuvent être nécessaires. Si le navigateur se bloque pendant l'exécution, il est recommandé de simplement recharger la page et de recommencer.
La partie kernel peut également provoquer un blocage ou un panic de la console. Dans ce cas, il est conseillé de redémarrer complètement la PS5 avant de tenter une nouvelle exécution.
Cette stabilité perfectible est donc à prendre en compte, particulièrement durant les premières utilisations du projet.
Le développement de Relapse repose sur le travail de plusieurs acteurs de la scène PS5 :
Sonic_Iso : Kernel Exploit
Jordy : WebKit Exploit et Kernel Bug
ntfargo : Exploit Development
ufm42 : Exploit Development
Dr. Yenyen : Testing
Les développeurs remercient également TheFlow, SlidyBat, Flatz, cow, nhk, bollarz, Sleirsgoevy, EchoStretch et EarthOnion pour leur aide.
Avec Relapse Exploit, la scène PS5 dispose donc d'une nouvelle chaîne d'exploitation couvrant les firmwares 7.00 à 13.60, combinant une vulnérabilité WebKit et un exploit kernel afin d'obtenir des primitives de lecture/écriture mémoire au niveau système.
Le projet reste encore soumis à quelques problèmes de stabilité et peut nécessiter plusieurs essais avant d'aboutir. Néanmoins, la prise en charge annoncée jusqu'au firmware 13.60 en fait une release particulièrement intéressante pour les utilisateurs concernés.