CTurt nous propose sur son blog l'explication du kernel exploit PS4, après les articles sur la sécurité de la PS4, l'Userland ROP et l'exécution de code dans l'Userland, c'est donc désormais l'exploit kernel qui est abordé.
Premier rappel, CTurt informe qu'il a récemment reçu de nombreuses demandes de libération d'un CFW ou du Jailbreak dans l'objectif de pirater les jeux sur la PS4, il ne cautionne pas cette pratique et se contente de comprendre la sécurisation de l'informatique, il est avant tout passionné par l'InfoSec (la protection informatique), et si vous attendez une solution toute faite comme un CFW qu'il ne le proposera pas.
Depuis plus d'une semaine il a la capacité d'exécuter du code dans le kernel de la PS4, il confirme que la vulnérabilité qu'il utilise a été patchée sur le firmware 2.xx, probablement 2.00 ou 2.04. Il explique alors comment fonctionne cet exploit "1.76" dans l'espoir que certains développeurs l'utilise pour avancer sur leur propre travail.
Comme il ne souhaite pas que l'exploit soit utilisé à des fins de piratages, il ne souhaite pas pour le moment dévoilé le code source, mais il explique le bug dans FreeBSD qui permet l'exécution du code.
L'exécution du code
Cela passe par l'exploit webkit présent sur le firmware 1.76 tout d'abord, le noyau Javascript du webkit utilise JIT (Just-in-time compilation), qui permet de compiler dynamiquement du code natif en Javascript, ce qui lui avait permi de montrer son émulateur GameBoy. Pour l'exécuter il faut une zone de mémoire, Sony a créé deux parties de la zone, sys_jitshm_create et sys_jitshm_alias, qui vont ensuite charger un sprx nommé libSceJitBridge.sprx.
L'exécution se fait donc dans une zone particulière ROP, ce qui signifie donc que l'exploit est limité aux applications tirant partie du JIT, Sony ayant ajouté un contrôle de privilèges dans le noyau, les seuls processus autorisés qui passeront le contrôle seront ceux qui utilisent JIT, ce qui en d'autres termes signifient que les exploits des jeux et des applications web comme YouTube ou NetFix seront limités a cette zone ROP.
En résumé l'exploit tant annoncé, est limité à l'exécution d'un code compatible JIT !
Il a ensuite découvert qu'une faille corrigée sur Linux en 2014, BadIRET, n'a pas été corrigée sur FreeBSD, BadIRET est une faille de vulnérabilité du kernel, il confirme que le firmware 1.76 de la PS4 est vulnérable à BadIRET.
Si ses recherches vous intéresse, c'est par ici : CTurt.github.io