Vulnerabilities: Difference between revisions
CelesteBlue (talk | contribs) |
CelesteBlue (talk | contribs) |
||
Line 358: | Line 358: | ||
== <=2.50 - Hypervisor vulnerability leading to compromise and XOM bypass == | == <=2.50 - Hypervisor vulnerability leading to compromise and XOM bypass == | ||
Credits | === Credits === | ||
* Discovered by Specter (2023-07-01) and Flatz (before 2023-07-27). | * Discovered by Specter (2023-07-01) and Flatz (before 2023-07-27). | ||
* Exploited privately by Specter and ChendoChap (2024-09-29). | * Exploited privately by Specter and ChendoChap (2024-09-29). | ||
* | * Disclosed publicly by Specter at Hardwear.io 2024 conference (2024-10-24). | ||
=== Bug description === | |||
Bug #1: Unprotected PS5 Hypervisor virtual tables | Bug #1: Unprotected PS5 Hypervisor virtual tables | ||
It is possible to hijack VMMCALL_HV_SET_CPUID_PS4 | It is possible to hijack some entries (for example VMMCALL_HV_SET_CPUID_PS4) in the hypervisor virtual table to jump to a hypervisor ROP chain. By using two ROP chains, one for setting up hypervisor registers and one for executing code in hypervisor. Indeed, the registers used by the PS5 Hypervisor are preserved accross VM exit boundary. | ||
=== Analysis === | |||
=== Implementation === | |||
* [https://github.com/PS5Dev/Byepervisor Implementation by Specter (to be disclosed)] | |||
=== Patched === | |||
'''Yes''' since PS5 FW 3.00. | |||
== <=2.50 - Hypervisor integrated as part of the kernel binary == | == <=2.50 - Hypervisor integrated as part of the kernel binary == |
Revision as of 22:14, 24 October 2024
Usermode
BD-J exploits
FW <= 7.61 - BD-JB2 - Path traversal sandbox escape by TheFloW
See [1].
Patched
Yes on PS5 FW 8.00.
FW <= 4.51 - BD-JB - Five vulnerabilities chained by TheFloW
See [2].
Implementations
- PS5 BD-JB implementation by Antonio Jose Ramos Marquez (psxdev)
- PS5 BD-JB implementation by John Törnblom
- PS5 BD-JB implementation by sleirsgoevy
- PS5 BD-JB implementation by TheFloW
Patched
Yes partially on PS5 FWs > 4.50 (need to test). Probably unpatched on FW 4.51 and patched on FW 5.00.
WebKit exploits
Modal Browser HTTPS Bypass
- It is possible to bypass HTTPS in the modal browser, if you reply to the HTTPS CONNECT with a standard HTTP 1.1 response, instead of attempting to create a tunnel. The web browser will just display that response. The downside to this is that you have no idea of what the contents of even the HTTP REQUEST would have been, but it is useful for redirecting the web browser to any website you want.
Patched
No as of PS5 FW 5.10.
FW 6.00-9.60 - Unknown heap and string overflow (no CVE) leading to crash
See also [3].
Patched
Yes on PS4 FW 12.00 and PS5 FW 10.00.
Tested
Tested and working on PS4 FWs 10.00-11.52 and PS5 FWs 6.00-9.60.
FW 6.00-8.60 - JSC DFG Abstract Intepreter clobberWorld Type Confusion (no CVE) leading to arbitrary RW
See also [4].
Patched
Yes on PS4 FW 11.50 and PS5 FW 9.00.
Tested
Tested and working on PS4 FWs 10.00-11.02 and PS5 FWs 6.00-8.60.
FW <= 5.50 - FrameLoader::loadInSameDocument() UaF (CVE-2022-22620) leading to arbitrary RW
See also [5].
Patched
Yes on PS4 FW 10.00 and PS5 FW 6.00.
Tested
Tested and working on PS4 FWs 6.00-9.60 and PS5 FWs 1.00-5.50.
FW 3.00-4.51 - WebCore::CSSFontFaceSet vulnerabilities leading to usermode ROP code execution
Contrarly to PS4, on PS5 this exploit does not allow arbitrary usermode memory RW because of PS5 memory protections. However thanks to tricks it is possible to get usermode ROP code execution from this exploit.
See also [6].
Implementations
Patched
No as of PS5 FW 4.51 (need to test on PS5 FWs >=5.00).
Tested
Tested and working on PS4 FWs 9.00-9.04 and PS5 FWs 3.00-4.51. Untested: PS5 FWs 2.10-2.50 and >=5.00.
Game savedata exploits
PS1 games savedata exploits
See PS4 Dev Wiki.
PS2 game savedata exploits
See PS4 Dev Wiki.
PSP games savedata exploits
See PS4 Dev Wiki.
PS4/PS5 PS2emu sandbox escape (mast1c0re)
See PS4 Dev Wiki.
PS4/PS5 game savedata LUA exploit
See PS4 Dev Wiki.
PS4 emulator exploits
Nothing yet.
Usermode securities
See also PS4 usermode securities.
>=8.00 - Syscalls and libkernel blocked from main usermode applications
Since PS5 System Software version 8.00, in order to make the PS5 less vulnerable to kernel escalation from usermode after TheFloW's disclose of BD-JB2, Sony blocked syscall and libkernel access from the main contenders such as BD JAVA, WebKit, PS2emu and probably more else all usermode applications.
Kernel
CR0.WP and XOM bypass
See PS4 dev wiki.
Credits
- sleirsgoevy for proposing it in PS4 kernel exploit since System Software version 6.51.
- Specter for adapting it to PS5 and explaining it.
Patched
Maybe in PS5 FW 5.00.
Physical memory readable by kernel (Meme Dumper)
Credits
Discovered by cheburek3000. Released on 2023-02-07 by cheburek3000.
Bug Description
Steps:
1. Find kernel_pmap_store offset in kernel data segment. You can guess its location by specific signature (see guess_kernel_pmap_store_offset code). Luckily kernel_pmap_store has physical and virtual addresses for PML4.
2. Through physical and virtual addresses for PML4, you can find physical memory mapped directly to the kernel memory (DMAP). See PADDR_TO_DMAP macro and vmparam.h from FreeBSD for reference.
3. Use page tables to convert any kernel virtual address to physical address (see vaddr_to_paddr code).
4. Access data by physical address through DMAP.
Exploit Implementation
Patched
No in PS5 FW 4.51.
FW <= 7.61 - umtx UaF (yielding arbitrary kernel R/W) (CVE-2024-43102)
Credits
- [email protected] for discovering the vulnerability, keeping it secret (2020-12) then sharing a writeup (2024-09-06)
- Rebecca Cran for discovering the bug in umtx (2023-05-07)
- Synacktiv for finding and disclosing publicly the vulnerability (2024-09-04)
- Olivier Certner for fixing the bug (2024-09-04), kib for reviewing the bug fix (2024-09-04), Ed Maste for approving the bug fix commit (2024-09-04)
- Shuffle from Fail0verflow for the FreeBSD 11 and PS5 PoC in C++ (2024-09-14)
- Flatz for writing a PS5 exploit chain with TheFloW's BD-JB2 (2024-09-14)
- Specter for chaining the kernel exploit with PsFree WebKit exploit (2024-09-21)
Analysis
- Crash report by Rebecca Cran (2023-05-07)
- FreeBSD Security Advisory for CVE-2024-43102 (2024-09-04)
- Fix commit (2024-09-04)
- Vulnerability press release (2024-09-09)
- Writeup by [email protected] (2024-09-06)
- Exploitation strategy explanation by Specter (2024-09-21)
Bug Description
The _umtx_op(2) system call provides support for the implementation of synchronization primitives between threads, and is used by the 1:1 Threading Library (libthr, -lthr) to implement IEEE Std 1003.1-2001 (POSIX.1-2001) pthread locks, like mutexes, condition variables and so on. In particular, its UMTX_OP_SHM operation provides support for anonymous shared memory associated to a particular physical address, which is used to implement process-shared mutexes (PTHREAD_PROCESS_SHARED).
Concurrent removals of such a mapping by using the UMTX_SHM_DESTROY sub-request of UMTX_OP_SHM can lead to decreasing the reference count of the object representing the mapping too many times, causing it to be freed too early.
umtx_shm_unref_reg_locked() would unconditionally drop the "registry" reference, tied to USHMF_LINKED.
This is not a problem for caller umtx_shm_object_terminated(), which operates under the 'umtx_shm_lock' lock end-to-end, but it is for indirect caller umtx_shm(), which drops the lock between umtx_shm_find_reg() and the call to umtx_shm_unref_reg(true) that deregisters the umtx shared region (from 'umtx_shm_registry'; umtx_shm_find_reg() only finds registered shared mutexes).
Thus, two concurrent user-space callers of _umtx_op() with UMTX_OP_SHM and flags UMTX_SHM_DESTROY, both progressing past umtx_shm_find_reg() but before umtx_shm_unref_reg(true), would then decrease twice the reference count for the single reference standing for the shared mutex's registration.
A malicious code exercizing the UMTX_SHM_DESTROY sub-request in parallel can panic the kernel or enable further Use-After-Free attacks, potentially including code execution or Capsicum sandbox escape.
Exploit Implementation
- C++ implementation for FreeBSD 11 virtual machine near of PS5 by Fail0verflow (2024-09-14)
- JAVA implementation for PS5 chained with BD-JB2 by Flatz (2024-09-14)
- LUA implementation for PS5 chained with LUA exploit by Flatz (2024-09-14)
- WebKit implementation for PS5 1.00-5.50 chained with PS Free by Specter (2024-09-21)
Patched
Yes in PS5 FW 8.00.
FW <= 8.20 - Remote vulnerabilities in spp (yielding kernel panic) (CVE-2006-4304 and no-CVE)
See the PS4 wiki.
Note that kernel ASLR defeat is currently not working on PS5 and there are protections remaining before being able to get ROP chain execution in kernel.
Patched
Yes in PS5 FW 8.40.
FW <= ?3.21? - PPPoE driver remote buffer overflow (CVE-2022-29867)
See the PS4 wiki.
Note that PS5 is maybe not affected even though PS4 is.
Patched
Probably in PS5 FW 4.00.
FW 3.00-4.51 - IPV6_2292PKTOPTIONS UaF (yielding arbitrary kernel R/W) (CVE-2020-7457)
See the PS4 wiki.
Credits
- Discovered for PS4 and ported to PS5 by TheFloW.
Exploit Implementation
- See also implementation for FreeBSD 9 or 12 or PS4.
- Kernel exploit implementation for PS5 3.00-4.51 by Specter (2022-10-02)
Patched
Yes in PS5 FW 5.00. Invulnerable in PS5 FW 2.50 and below.
FW <= 4.03 - exFAT driver heap-based buffer overflow
See the PS4 wiki.
Credits
Discovered by TheFloW. Disclosed by ChendoChap.
Exploit Implementation
Not yet because even though there is ChendoChap's method to execute usermode code in WebKit, there is no PS5 kernel dump to build a kernel ROP chain. Exploiting this kernel vulnerability blind is almost impossible because once the USB device is inserted it corrupts the kernel heap memory and if the offsets in the kernel ROP chain are bad it creates a kernel panic.
Patched
Yes in PS5 FW 4.50.
SMAP bypass (CVE-2021-29628)
See also PS4 SMAP bypass.
Credits
- Discovered and disclosed publicly by m00nbsd. Disclosed to SIE on 2020-12-01.
Analysis
- HackerOne report for CVE-2021-29628 by m00nbsd (2020-12-01)
- FreeBSD fix commit by kib (2021-05-15)
- FreeBSD fix commit by markjdb (2021-05-16)
- FreeBSD advisory for CVE-2021-29628 (2021-05-26)
Bug Description
In FreeBSD 13.0-STABLE before n245764-876ffe28796c, 12.2-STABLE before r369857, 13.0-RELEASE before p1, and 12.2-RELEASE before p7, a system call triggering a fault could cause SMAP protections to be disabled for the duration of the system call. This weakness could be combined with other kernel bugs to craft an exploit. It does not work on PS4 because PS4 kernel is based on FreeBSD 9 which did not contain the vulnerability and because PS4 SMAP does not come from FreeBSD but is custom from Sony. It used to work on PS5 before it was disclosed and patched.
Patched
Yes in PS5 FW 2.30 or later according to dates.
Kernel securities
dlsym syscall removed
Since PS5 System Software version 5.00, dlsym syscall is disabled (?removed?). dlsym could be used to resolve functions and variables addresses by their name. This was convenient for multi-firmware support.
Workaround: in the same way as in PSP and PS Vita HBL, and vitasploit, a workaround is to resolve functions by per-version offsets manually.
MAP_SELF flag removed
Since PS5 System Software version 5.00, MAP_SELF flag is nonexistent. MAP_SELF flag could be used for decrypting PS5 usermode SELFs such as eboot.bin and SUPRXs for games and applications, and system SELFs from /system and /system_ex, etc.
Workaround: using the PSP functions directly like Specter does.
Secure Kernel
Untested: Partial SAMU KeyRings bruteforce by missing HMAC length check in secure kernel
See [8].
Potentially vulnerable on PS5 FWs <= 4.03.
Secure Loader
Symmetric PS5 root keys dump by software exploit by Fail0verflow
See Fail0verflow's announcement on Twitter (2021-11-08)
Fail0verflow either has a bootrom execution exploit or an AMD/ARM PSP hack.
It is speculated that this exploit is a derivative of the ZenBleed CVE-2023-20593 exploit, as the PS5 APU is a custom ZEN 2 Ryzen chip.
This allows to decrypt on PC most parts of the PS5 System Software files including:
- PUP
- secure loader (?AMD? ARM Platform Security Processor module) of Oberon
And by derivation, mostly like on PS Vita:
- secure modules
- kernel boot loader / BIOS
- non-secure kernel
- usermode system modules
Potentially unpatched.
Hypervisor
<= ?10.01? - APIC pointers in kernel data segment
- Discovered by flatz. Disclosed publicly by flatz (2024-10-09).
The apic_ops structure is located in the PS5 kernel .data segment which has RW permissions. Using a kernel vulnerability, you can overwrite a function pointer inside the apic_ops structure, like xapic_mode. This allows to launch a ROP chain but one has to bypass the CFI protection. After doing a PS5 suspend/resume cycle, the ROP code will be executed before Hypervisor restarts. The ROP chain can apply patches in kernel .text section.
- Maybe unpatched as of PS5 FW 10.01.
<=4.51 - Hypervisor bypass vulnerability
- Discovered by anonymous (probably fail0verflow or TheFloW). Announced by Flatz (2024-10-05).
- Patched since PS5 FW 5.00.
<=2.50 - Hypervisor vulnerability leading to compromise and XOM bypass
Credits
- Discovered by Specter (2023-07-01) and Flatz (before 2023-07-27).
- Exploited privately by Specter and ChendoChap (2024-09-29).
- Disclosed publicly by Specter at Hardwear.io 2024 conference (2024-10-24).
Bug description
Bug #1: Unprotected PS5 Hypervisor virtual tables
It is possible to hijack some entries (for example VMMCALL_HV_SET_CPUID_PS4) in the hypervisor virtual table to jump to a hypervisor ROP chain. By using two ROP chains, one for setting up hypervisor registers and one for executing code in hypervisor. Indeed, the registers used by the PS5 Hypervisor are preserved accross VM exit boundary.
Analysis
Implementation
Patched
Yes since PS5 FW 3.00.
<=2.50 - Hypervisor integrated as part of the kernel binary
- Discovered by Specter (2023-07-01) and Flatz (before 2023-07-27).
- Exploited privately by Specter and ChendoChap (2024-09-29).
- This makes Hypervisor exploitation easier as it can be triggered by usermode directly without the need of a kernel exploit.
- This also allows to dump kernel .text segment once one has code execution in hypervisor. See Specter's tweet about PS5 kernel .text dump.
- Patched since PS5 FW 3.00.
Platform Secure Processor
<=2.50 - PSP dump via Hypervisor exploit
- Discovered by Fail0verflow before 2023-07-27, discovered independently and announced on 2023-07-27 by flatz (Announcement by flatz (2023-07-27)).
- Thanks to this software exploit, flatz got access to most PS5 decryption keys.
- See also flatz's comments.
- Vulnerable on PS5 FWs <= 2.50 and potentially patched since 3.00.
Southbridge
EMC, EFC and EAP vulnerabilities leading to code execution
Credits
- Disclosed by Shawn Hoffman (of SYMBRKRS LLC, @shuffle2 of fail0verflow) at the Security Analyst Summit Conference 2024 (2024-10-23).
Bug description
These exploits allow code execution on EMC, EFC and EAP. The exploits are interesting as they cover a hard-to-spot bug in a firmware state machine, and abusing hardware misconfiguration to bypass memory protection measures.
It is required to solder to Service Connectors to make use of these vulnerabilities.
In shuffle's implementation, only the Raspberry Pi Pico is supported with one of the following UF2 firmware (see shuffle's ps5-uart source code):
- E1E 0001 0000 0004 13d0
- E1E 0001 0002 0003 1580
- E1E 0001 0004 0002 1752
Analysis
Implementation
Unclassified
TheFloW's neither usermode nor kernel exploit
- On 2024-08-29, TheFloW received 10.000$ from Sony for disclosing privately on Sony's HackerOne bug bounty program a vulnerability.
- According to Flatz, this vulnerability affects neither usermode nor kernel, so it might be either about hardware or more likely about Hypervisor.
- This vulnerability probably got patched in PS5 FW 10.00 or in PS5 FW 9.60, or if it is not patchable by software, is patched in new hardware revisions of the PS5.
Hardware
Untested: ZenBleed (CVE-2023-20593) leak register contents directly from the CPU.
This is a well documented CPU vulnerability in AMD Processors with the Zen 2 microarchitecture. There is no proof of concept specifically for the PS5, however we do know the PS5 uses a custom Zen 2 chip. This is a hardware bug that uses software to exploit the system. AMD has since patched this with software, but we are unsure of the status for the latest PS5 firmware (assumed to be patched). For more information see PS-Chi.