- C 58.5%
- Python 38.6%
- Makefile 2.4%
- Linker Script 0.5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| hv-test | ||
| hv-unlock | ||
| offsets | ||
| scripts | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
ps5-hv-defeat
Contournement du hyperviseur AMD SVM du PlayStation 5 via GPU DMA (FW 9.60).
Auteur : Cedsaill
Firmware cible : PS5 FW 9.60
Statut : RING0_OK + JAILBREAK_OK (confirmés)
Résumé
Ce projet documente une technique de contournement du hyperviseur AMD SVM du PlayStation 5, permettant l'obtention d'un contexte d'exécution ring-0 puis d'un jailbreak complet.
La méthode repose sur trois primitives :
- Écriture physique arbitraire via GPU DMA — l'IOMMU du GPU RDNA2
ne respecte pas le NPT du CPU, ce qui permet d'écrire dans
kdatamalgré la protectionW=0imposée par le hyperviseur. - Hook
sysent[661]— un slot syscall non utilisé sert de point d'entrée pour exécuter du code ring-0 depuis le userland. - Désactivation du
NP_ENABLEsur les VMCBs — un shellcode copié àPA=0modifie directement les structures du hyperviseur depuis son propre contexte d'exécution.
Deux payloads sont fournis :
| Payload | Fichier | Rôle |
|---|---|---|
hv-test |
src/hv-test-main.c |
Ring-0 test → confirme la maîtrise du HV |
hv-unlock |
src/hv-unlock.c |
Jailbreak + unlock + root escape |
Différences avec les approches connues
La méthode décrite ici n'utilise pas :
- De chaîne ROP kernel
- D'exploit UAF kernel (type Relapse)
- De désactivation S3 (
suspend-to-RAM)
Elle exploite une faiblesse structurelle du SoC PS5 : la séparation des IOMMUs CPU / GPU. L'IOMMU du GPU ne partage pas les restrictions NPT du CPU, ce qui crée un canal d'écriture physique indépendant du hyperviseur.
Documentation
| Document | Contenu |
|---|---|
docs/METHOD.md |
Technique GPU DMA détaillée |
docs/OFFSETS.md |
Offsets FW 9.60 (validés par dump) |
docs/LIMITATIONS.md |
Limites connues et évolutions FW |
Prérequis
- PS5 en FW 9.60
- Un point d'entrée kernel r/w (via le PS5 Payload SDK)
- Un listener TCP sur le PC cible pour les logs (
192.168.1.100:9999)
Avertissement
Ce projet est publié à des fins de recherche en sécurité. Toute utilisation en dehors de ce cadre est de la responsabilité de l'utilisateur. L'auteur décline toute responsabilité en cas de dommage.
Licence
MIT — voir LICENSE.
Preuves d'exécution
Testé sur PS5 FW 9.60 — log complet : docs/logs/hv-test-2026-10-12.log
Extraits :
*** RING0_OK *** (wret=0)
=== jailbreak ===
ucred_va=0xfffffe5636475e00
uid_after_dmap=0x0000000000000000
auth_after=0x4800000000000007
getuid=0x0000000000000000
*** JAILBREAK_OK ***
--- DONE ---
RING0_OK: hooksysent[661]→ shellcode ring-0 exécuté (wret=0)JAILBREAK_OK:ucredmodifié,getuid()retourne 0