Le développeur Specter vient il y a quelques jours de mettre en ligne son writeup sur l'exploit utilisé sur le firmware 5.05 de la PlayStation 4 / PlayStation 4 Pro.
Comme vous le savez au délà du firmware 4.55, Sony a bouché une faille, il a donc fallu adapter la faille utilisée dans le driver BPF, son accès étant plus complexe sur le 5.05 que sur le 4.55, Sony ayant supprimé la fonction d'écriture BPF.
Specter décrit dans son article comment il parvient à l'exploit, comment le système vérifie régulièrement la cohérence des données, et comment l'implémentation est complexe dans ce contexte.
Il nous explique que les applications peuvent communiquer de plusieurs façons avec le système d'exploitation, les syscalls est une des façons de communiquer dans le kernel, il en existe plus de 600, et 500 sont des FreeBSD, les 100 autres ont été implémentées par Sony.
Généralement il s'agit de pilotes pour combler le fossé entre le hardware et le software (des drivers USB, des souris, des webcams), mais les pilotes sont de faible niveau car ils sont souvent écrits par des développeurs qui ne comprennent pas le fonctionnement du kernel.
Dans le 5.05, Sony semble avoir ajouté une fonction qui va vérifier SMAP, Supervisor Mode Access Prevention. Cela a eu pour effet de transformer un exploit simple à une manipulation complexe dans la mémoire du kernel pour éxécuter la chaîne ROP (kROP).
Généralement executer une chaîne ROP avec cette protection provoque un crash du kernel, c'est pourquoi Qwertyoruiopz s'est dit qu'il serait intéressant d'utiliser la méthode de l'iPhone 7 en utilisant une chaîne JOP. Ainsi en utilisant une chaîne JOP, une fonction memcpy et une chaîne RSP, il est possible d'accéder à la chaîne ROP en la transformant dans le kernel.
Le chaîne JOP est utilisé pour implémenter une chaîne ROP.
Pour parler simplement le ROP est une chaîne de gadgets exécutées sous forme de liste, quand un gadget est exécuté on passe au suivant, le JOP fonctionne par saut, avec une destination vous exécutez plusieurs gadgets mais il est limité en gadgets potentiels, c'est pourquoi elle n'est pas préférée.
Ensuite Specter explique comment il faut créer un espace pour exécuter du code, préparer l'appel de la fonction Memcpy, exécuter le débogage, et comment il lance le Kexec.
Il conclue en disant que Sony a bloqué l'utilisation de nombreux exploit webkit par le retrait de l'écriture BPF, mais qu'il est toujours présent. Le blocage de RSP ralenti désormais l'utilisation du kernel, mais obtenir une chaîne est toujours possible.
Du reste, Specter remercie qwertyoruiopz, flatz et surtout TheFlow ce qui ne manque pas d'étonner.