Ps5-ipv6-kernel-exploit

Cryptogenic Cryptogenic
Dépôt créer le : 27/09/2022
Release du : 10/03/2026 v1.03
Forks: 107 Watcher: 0 918
Choisir une liste...
FR

PS5 3.xx / 4.xx Utilisation du noyau

Résumé

Cette repo contient une implémentation ROP WebKit expérimentale d'un exploit de noyau PS5 basé surAprès utilisation gratuite de l'IPV6 de TheFlow (UAF), qui étaitreported on HackerOne. La stratégie d'exploitation est pour la plupart basée sur le PoC BSD/PS4 de TheFlow avec quelques modifications pour accommoder la mise en page de la mémoire PS5 (pour plus de détails voirNotes de recherchede la section spécialisée). Il établit une lecture arbitraire / (semi-arbitraire) écrire primitive. Cet exploit et ses capacités ont beaucoup de limites, et en tant que tel, il est principalement destiné aux développeurs de jouer avec pour inverser l'ingénierie de certaines parties du système.

Avec les dernières améliorations de stabilité, la fiabilité est d'environ 80%. Ce document contiendra des renseignements de recherche sur le PS5, et cet exploit sera continuellement développé et amélioré au fur et à mesure du temps.

Ceux qui souhaitent contribuer à la recherche/dev PS5 peuvent rejoindre une discorde que j'ai mise en placehere.

Exploitez maintenant les firmwares suivants:

  • 3.00
  • 3.10
  • 3.20
  • 3.21
  • 4.00
  • 4.02
  • 4.03
  • 4.50
  • 4.51

Actuellement inclus

  • Obtient une lecture/écriture arbitraire et peut exécuter un serveur RPC de base pour lire/écrire (ou un serveur de dump pour lire) (doit modifier votre propre adresse/port dans le fichier d'exploitation sur les lignes 673-677)
  • Active le menu des paramètres de débogage (note : vous devrez quitter complètement les paramètres et revenir pour le voir).
  • Obtient des privilèges racine

Limites

  • Cet exploit permet de lire/écrire,mais pas d'exécution de code. C'est parce que nous ne pouvons pas télécharger le code du noyau pour les gadgets, car les pages du noyau .text sont marquées comme étant eXecute Only Memory (XOM). Essayer de lire les pointeurs du noyau .text va paniquer !
  • Comme indiqué ci-dessus + l'hyperviseur (HV) faisant appliquer la protection d'écriture du noyau, cet exploit aussiimpossible d'installer des correctifs ou des crochets dans l'espace du noyau, ce qui signifie qu'il n'y a pas de code pour le moment.
  • L'intégrité du débit de contrôle (IFC) à grain fin (Clang) est présente et appliquée.
  • La prévention et l'exécution de l'accès en mode de surveillance (SMAP/SMEP) ne peuvent être désactivées en raison du VH.
  • L'écriture primitive est quelque peu limitée, car les octets 0x10-0x14 doivent être zéro (ou une interface réseau valide). .
    • Bien qu'en raison de travaux plus récents utilisant des tuyaux, lecture/écriture complète arbitraire est maintenant possible

Comment utiliser

  1. Configurer les falsedns viadns.confvers le hautmanuals.playstation.netà votre adresse IP PC
  2. Lancez de fausses dns :python fakedns.py -c dns.conf
  3. Exécutez le serveur HTTPS & #160;:python host.py
  4. Allez dans les paramètres avancés du réseau PS5 et définissez DNS primaire à l'adresse IP de votre PC et laissez secondaire à0.0.0.0
    1. Parfois le manuel ne se charge toujours pas et un redémarrage est nécessaire, ne sait pas pourquoi c'est vraiment bizarre
  5. Allez dans le manuel d'utilisation dans les paramètres et acceptez l'invite de certificat non fiable, exécutez
  6. Optionnel : Exécuter des scripts de serveur rpc/dump (note : adresse/port doit être remplacé sous forme binaire par exploit.js).

Travaux futurs

  • [x] ~~Fix-up sockets pour sortir du navigateur proprement (top prio) ~~
  • [x] ~~Écrire quelques correctifs de données (deuxième prio) ~~
    • [x] ~~Activer les paramètres de débogage ~~
    • [x] ~~Patch creds pour uid0~~~
    • [x] ~~Jailbreak w/ cr prison écraser ~~
  • Amélioration de la fiabilité de la FAU
  • [x] ~~Améliorer la fiabilité de la prise de la victime (troisième prio) ~~
  • [x] ~~Utiliser une cible de fuite meilleure / plus cohérente que kqueue~~ (plus nécessaire)
  • [x] Relocaliser la chargeuse ELF
    • [ ] Ajout d'un soutien pour d'autres délocalisations et éventuellement un lien dynamique complet?

Utilisation du chargeur ELF

Pour utiliser le chargeur ELF, exécutez l'exploit jusqu'à sa fin. Une fois terminé, il exécutera un serveur sur le port:9020. Connectez et envoyez votre ELF à la PS5 sur ce port et il l'exécutera. En supposant que l'ELF n'écrase pas le navigateur, il peut continuer à exécuter des ELF pour toujours.

Étapes d'exploitation

Cette exploitation fonctionne en 5 étapes, et pour la plupart suit la même stratégie d'exploitation que le poc du flux.

  1. Déclencher l'UAF initiale surip6_pktoptset obtenir deux sockets pour pointer vers la mêmepktopts/ chevauchement (prise principale <-> prise de pulvérisation de chevauchement)
  2. Libérez lepktoptssur la prise principale et le faux avec unip6_rthdrvaporisateur contenant un marquagetclassles chevauchements.
  3. Étape d'information. Utilisationpktopts/rthdrchevauchement pour fuite d'un kqueue de la dalle 0x200 etpktoptsde la dalle 0x100.
  4. Étape arbitraire de lecture/écriture. Fauxpktoptsà nouveau et trouver la socket de chevauchement à utiliserIPV6_RTHDRcomme une lecture/écriture primitive.
  5. Nettoyage + étape patch. Augmenter le refcount sur les sockets corrompus pour une sortie réussie du navigateur + données patch pour activer le menu debug et les ucreds patch pour uid0.
  6. Exécutez le serveur de chargeur ELF qui accepte et charge/exécute les ELF. Actuellement WIP, ne soutient pas les délocalisations pour le moment.

Notes de stabilité

La stabilité pour cet exploit est d'environ ~30%~~ 80-90%, et a deux points potentiels d'échec. Par ordre décroissant observé:

  1. Étape 1ne reprend pas l'UAF, provoquant un accident immédiat ou une corruption latente qui provoque un accident.
  2. Étape 4ne trouve pas de prise pour victime

Notes de recherche

  • ~~Il semble basé sur divers tests et le dumping avec la lecture primitive, que la PS5 est revenue à la taille 0x1000 page par rapport à la PS4's 0x4000.~~

    • Après de plus amples recherches, la taille de la page est en effet toujours 0x4000, mais en raison de certains changements d'alcoator insensés, différentes dalles peuvent être attribuées dans la même page virtuelle.
  • Il semble également sur PS5 que les pages adjacentes appartiennent rarement à la même dalle, car vous obtiendrez des données très différentes dans les pages adjacentes. La disposition de la mémoire semble plus dispersée.

  • Souvent, lorsque la PS5 panique (au moins dans le contexte webkit), il y aura une sortie audio horrible que le tampon audio est corrompu d'une certaine manière.

  • Parfois, cette corruption audio persiste jusqu'au prochain démarrage, ne sait pas pourquoi.

  • Comme PS4, le PS5 exigera que le bouton d'alimentation soit appuyé manuellement sur la console deux fois pour redémarrer après une panique.

  • Il est normal que la PS5 prenne un temps absurde pour redémarrer d'une panique si elle est isolée d'Internet (malheureusement). Attendez-vous à démarrer 3-4 minutes.

Contributeurs / spéciaux Je vous remercie

Merci aux testeurs

  • Tamis (4.50/4.51)

Contributeurs GitHub

EchoStretch
EchoStretch
4 contributions
dmiller423
dmiller423
1 contributions
Cryptogenic
Cryptogenic
8 contributions
john-tornblom
john-tornblom
205 contributions
valincius
valincius
2 contributions
someguythatmods
someguythatmods
1 contributions
pquerner
pquerner
1 contributions