Le développement d'un outil qui permettrait de charger et d'exécuter des modules de kernel personnalisé sur PS5 il n'y a pas à dire cela interpelle.
C'est le projet du développeur buzzer-re qui a récemment dévoilé PS5 kldload, un loader de module kernel pour la PS5, initialement créé pour bien entendu comprendre le fonctionnement sécuritaire de la console.
Cet outil est à plusieurs égards intéressants, le premier point est qu'il permet de se projeter sur un système de lancement alternatif sur PS5, permettant d'accéder à un kernel sans pour autant devoir passer par l'hyperviseur, qui en conséquence peut rester actif et sans aucune modification.
Et pour cause, contrairement à ce qui se fait jusqu'à présent, où les attaques tentent de rentrer un objet dans le kernel avec des primitives de lecture, d'écriture et d'exécution, sur PS5, l'hyperviseur et la protection XOM empêche toute modification, ou insertion par exemple de code .text.
L'idée est alors née de créé PS5_kldload afin de contourner ces limitations, en s'appuyant sur un kernel alternatif sans modifier le kernel de la console. Basé sur kstuff, le framework de Sleirgoevy, il permet de lancer des primitives de lecture et d'écriture sans correctif direct.
Deux étapes sont nécessaires au bon fonctionnement de PS5_kldload :
Kekcalls, une interface utilisateur et le kernel
Le concept de kekcalls a été introduit par kstuff, des calls sont encodés dans le registre RAX lors d'un syscall depuis l'Userland. Deux nouveaux Kekcalls ont été ajouté par buzzer-re, un nommé kmalloc pour allouer la mémoire dans le kernel et un autre nommé kproc_create pour créer des threads du kernel, aussi appelé kthreads.
Gestion de la mémoire du kernel
Afin d'obtenir une allocation de la mémoire exécutable dans le kernel de la PS5, la fonction kmem_alloc doit être modifiée et manipulée, des points d'arrêts spécifiques pour la PS5 doivent être utilisés, contrairement à la PS4 où un patch direct de la mémoire RWX est suffisant. Sur PS5, il faut utiliser kmem_alloc, et aussi un second correctif qui remplace les autorisations par défaut.
PS5_kldload est nécessaire pour exécuter Linux sur PS5, actuellement, le loader ne prend en charge que la version 4.03. Il sera probablement porté vers d'autres versions prises en charge dans les prochains jours/semaines. Un tutoriel devrait également être disponible prochainement, car cet outil est relativement récent.
Téléchargement : PS5_kldload