Archive of https://github.com/ArkSama/ps5-hv-defeat — PS5 HV defeat via GPU DMA (FW 9.60) https://github.com/ArkSama/ps5-hv-defeat
  • C 58.5%
  • Python 38.6%
  • Makefile 2.4%
  • Linker Script 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-13 00:22:09 +02:00
hv-test Remove personal IP and paths from code 2026-10-12 23:03:42 +02:00
hv-unlock Remove personal IP and paths from code 2026-10-12 23:03:42 +02:00
offsets Initial commit: PS5 HV defeat via GPU DMA (FW 9.60) 2026-10-12 22:51:45 +02:00
scripts Remove personal IP and paths from code 2026-10-12 23:03:42 +02:00
.gitignore Initial commit: PS5 HV defeat via GPU DMA (FW 9.60) 2026-10-12 22:51:45 +02:00
LICENSE Initial commit: PS5 HV defeat via GPU DMA (FW 9.60) 2026-10-12 22:51:45 +02:00
README.md Add test logs (RING0_OK + JAILBREAK_OK on PS5 FW 9.60) 2026-10-12 23:30:33 +02:00

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 :

  1. Écriture physique arbitraire via GPU DMA — l'IOMMU du GPU RDNA2 ne respecte pas le NPT du CPU, ce qui permet d'écrire dans kdata malgré la protection W=0 imposée par le hyperviseur.
  2. Hook sysent[661] — un slot syscall non utilisé sert de point d'entrée pour exécuter du code ring-0 depuis le userland.
  3. Désactivation du NP_ENABLE sur les VMCBs — un shellcode copié à PA=0 modifie 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 : hook sysent[661] → shellcode ring-0 exécuté (wret=0)
  • JAILBREAK_OK : ucred modifié, getuid() retourne 0