
Ein experimenteller WebKit-basierter Kernel-Exploit (Arb. R/W) für die PS5 auf <= 4.51FW
Dieses Repository enthält eine experimentelle WebKit-ROP-Implementierung eines PS5-Kernel-Exploits, die auf TheFlows IPV6 Use-After-Free (UAF) basiert, welche auf HackerOne gemeldet wurde. Die Exploit-Strategie basiert größtenteils auf TheFlows BSD/PS4-PoC mit einigen Änderungen, um das lästige PS5-Speicherlayout zu berücksichtigen (weitere Details siehe Abschnitt Forschungsnotizen). Sie etabliert eine beliebige Lese- / (semi-beliebige) Schreib-Primitive. Dieser Exploit und seine Fähigkeiten haben viele Einschränkungen, und daher ist er hauptsächlich für Entwickler gedacht, die damit herumspielen möchten, um Teile des Systems zu reverse-engineeren.
Mit den neuesten Stabilitätsverbesserungen liegt die Zuverlässigkeit bei etwa 80 %. Dieses Dokument enthält Forschungsinformationen über die PS5, und dieser Exploit wird im Laufe der Zeit weiterentwickelt und verbessert.
Wer zur PS5-Forschung/-Entwicklung beitragen möchte, kann einem Discord beitreten, den ich hier eingerichtet habe.
Der Exploit sollte jetzt folgende Firmwares unterstützen:
dns.conf, sodass manuals.playstation.net auf die IP-Adresse deines PCs zeigt.python fakedns.py -c dns.confpython host.py0.0.0.0
Um den ELF-Loader zu verwenden, führe den Exploit bis zum Abschluss aus. Nach Abschluss startet er einen Server auf Port :9020. Verbinde dich und sende dein ELF über diesen Port an die PS5, und es wird ausgeführt. Vorausgesetzt, das ELF bringt den Browser nicht zum Absturz, können danach beliebig viele ELFs ausgeführt werden.
Dieser Exploit arbeitet in 5 Phasen und folgt größtenteils derselben Exploit-Strategie wie theflows PoC.
ip6_pktopts auslösen und zwei Sockets dazu bringen, auf dieselben pktopts zu zeigen / zu überlappen (Master-Socket <-> Overlap-Spray-Socket)pktopts auf dem Master-Socket freigeben und sie mit einem ip6_rthdr-Spray fälschen, das eine getaggte tclass-Überlappung enthält.pktopts/rthdr-Überlappung nutzen, um ein kqueue aus dem 0x200-Slab und pktopts aus dem 0x100-Slab zu leaken.pktopts erneut fälschen und den Überlappungs-Socket finden, um IPV6_RTHDR als Lese-/Schreib-Primitive zu verwenden.Die Stabilität dieses Exploits liegt bei etwa 30 % 80-90 % und hat zwei potenzielle Fehlerquellen. In der Reihenfolge der beobachteten absteigenden Wahrscheinlichkeit:
Es scheint basierend auf verschiedenen Tests und Dumps mit der Lese-Primitive, dass die PS5 im Vergleich zur 0x4000-Seitengröße der PS4 auf 0x1000 zurückgegangen ist.
Außerdem scheint es bei der PS5 so, dass benachbarte Seiten selten zum selben Slab gehören, da man in benachbarten Seiten stark unterschiedliche Daten erhält. Das Speicherlayout wirkt verstreuter.
Wenn die PS5 einen Panic hat (zumindest im WebKit-Kontext), gibt es oft schreckliche Audioausgabe, da der Audiopuffer auf irgendeine Weise beschädigt wird.
Manchmal bleibt diese Audio-Korruption bis zum nächsten Start bestehen, warum auch immer.
Ähnlich wie die PS4 muss bei der PS5 nach einem Panic der Netzschalter an der Konsole zweimal manuell gedrückt werden, um neu zu starten.
Es ist normal, dass die PS5 nach einem Panic eine absurd lange Zeit zum Neustart benötigt, wenn sie vom Internet isoliert ist (leider). Erwarte eine Boot-Zeit von 3-4 Minuten.