Vulnerabilities

From PS3 Developer wiki
Jump to navigation Jump to search

Unpatched

XDR-DRAM exploit

Credits

  • zecoxao (2015-05-10) for disclosing the vulnerability

Analysis

Bug description

In every PS3 console, there is a serial data line on the console’s XDR chip used to initialize the RAM's test pattern. It has read/write mode and it is freely accessible. The address is obtained from the XDR interface. You can see it on service manual. You can write a payload to memory for example on a loaded game or in a game savedata. Then it will run the payload and do stuff.

Some pictures of CMD, SCK, SDO and RST can be found (dead links).

Whilst the hypervisor HTAB glitch has around 10 percents of chances of success, the XDR-DRAM exploit has 100 percents of success.

See also XDR Configuration.

Patched

Not patchable because it is a hardware vulnerability.

Hypervisor HTAB glitch

Credits

  • geohot (2009-2011) for initial HTAB glitch
  • xorloser (2009-2010) for XorHack and XorHack v2.0
  • zecoxao (2023) for some tests and writeups
  • Kafuu / aomsin2526 (2025) for reimplementation on recent hardware (superslim PS3) and software (4.92) revisions
  • esc0rtd3w (2025-05) for some improvements

Bug Description

See also the SPU LS Overflow Exploit, Hypervisor_Reverse_Engineering#Exploiting_HV_with_memory_glitching_and_HV_call_lv1_undocumented_function_114.

The hypervisor HTAB glitch has around 10 percents of chances of success. When it fails, it is necessary to reboot the PS3 hence this exploit can be long to trigger.

Notes on Dumping_Metldr. The PS3 Hypervisor HTAB exploit allows us to write to isolated SPU and load the secure loader. After that we need to glitch the SPU processor to pass the ECDSA check on verify_header() function in metldr (any version of metldr) which checks the ECDSA signature of the secure loader. You need to glitch the signature verification when metldr loads the secure loader and execute your custom loader to dump the local store with metldr and eid-root-key. PS3 keys (including per-console ones) are inside the SPU isolated local store. You cannot dump them from XDR. If it works, our custom loader will be loaded and started and we will get isolated SPU local store content in the shared local store, which is accessible from the PPU side.

Analysis

Implementation

Current implementations support PS3 System Software versions from 4.70 to 4.92.

Patched

Not patchable because it is a hardware vulnerability.

SPU Local Storage access from other SPEs and PPE

Credits

  • Confirmed by Shuffle2 (2011-04-22)

Bug description

Normally, if the SPE is in isolation mode, then only the code running on this particular SPE should be allowed to access its Local Storage. However the high segment of the Local Storage is accessible from the other SPEs and the PPE. High segment of the SPU Local Storage can be accessed from the other SPEs and the PPE.

SPE local store dump via software - LSPWN

LSPWN v0.1 by adrianc is a PS3 homebrew that dumps the local store of an spe to /dev_hdd0/game/LSPWN0ADC/USRDIR/localstore.bin. It is a neat PoC for developers, but also a noob friendly introduction to the SPE environment. Thanks to gitbrew, mathieulh, geohot, sonic iso, #ps3secret, uf6667, zerkman.

Instructions:

1. run the LSPWN application
2. copy the dumped binary from the PS3 HDD using your preferred method (FTP, USB, socket, etc.)
3. disassemble using IDA PRO and give a look at the local store

Notes:

- source code forthcoming after some cleanup (ever released?)
- GUI in v0.2 release (ever released?)
- support for isolation mode if there is demand

Patched

No (probably unpatchable).

WebKit parseFloat() type confusion leading to stack buffer overflow

Credits

  • Zuk Avraham
  • TODO

Bug Description

When inserting NaN with a parameter as an argument into parseFloat(), we can overflow the tiny buffer created by parseFloat().

Analysis

Implementation

Patched

Yes since PS3 FW 4.83. Remains exploitable on higher System Software version by installing old WebKit SPRX files using an "hybrid" PUP.

WebKit CSS font face source type confusion leading to read primitive

Credits

TODO

Bug Description

While parsing the source of a CSS font face, CSSParser::parseFontFaceSrc() assumes the value given is a string, but if we insert a specific double value into an exploitable function like insert() or format(), we can leak the memory via an overlap between two variables.

Implementation

Patched

Yes since PS3 FW 4.83. Remains exploitable on higher System Software version by installing old WebKit SPRX files using an "hybrid" PUP.

RSX VRAM Access exploit

Credits

  • Discovered by AlexAltea and released on 2016-03-23.
  • Thanks a lot to @3141card, for his LV1 RE files, and to people from Nouveau/Envytools people, especially mwk.

Bug description

Full RSX VRAM/IO access exploit allows usermode/lv2 access to the entire 256 MB RSX VRAM range and the entire RSX IO address space and works on all firmwares up to the last version. Particularly interesting, is that this allows to access the last 2 MB of VRAM, reserved only for the LV1 driver, and maybe slightly less interesting, accessing 'vsh.self' VRAM area and IO mapped memory.

The requirements are quite hard to satisfy (many of you either don't need this, or can't run this) and it is only relevant for devs (so some do not need to care about it either). It just gives you access to something inaccessible before with usermode/supervisor privileges, nothing else.

To execute the RSX VRAM Access exploit, you need either

  • a usermode entry point (e.g. web browser exploit) + NAND console (although probably if you have this, you already hacked it and have LV1 access).
  • or a LV2 entry point (e.g. rsxploit). You will need to replace the `sys_rsx_device_map` LV2 syscall (#675) with the `lv1_gpu_device_map` LV1 call in the source code of the PoC provided below (and remove all the GCM library code among other things).

Analysis

Patched

No as of PS3 FW 4.92.

pexploit

Credits

  • KaKaRoTo for keeping the vulnerability private for years then disclosing it
  • flatz for PS3 IDPS research
  • TheDarkProgrammer for implementation of user-friendly tools

Bug description

To be documented.

See also KaKaRoTo_Kind_of_´Jailbreak´.

Patched

Partially since PS3 FW ?4.75? (to be documented)

MacOS X 10.5/10.6 libc/strtod(3) buffer overflow

Unsure if it applies to PS3.

OpenPrinter() stack-based buffer overflow

Patched

Maybe

DOM flaw

Patched

Maybe

PS3Xploit Kernel Exploit

Credits

  • Team PS3Xploit
  • TODO

Bug description

To be documented.

Implementation

Patched

No as of PS3 FW 4.90.

Leakage of PTCH body plaintext over SPI on all BGA SYSCONs

When reading the body via the EEPROM read command, in all cases, the MISO of the SPI will leak the plaintext of the PTCH body to someone who might be interacting with the EEPROM interface. Note that this ONLY happens when SC interacts with patch body and some specific areas.

Examples

MISO
04 C8 34 30 BD E4 9F 27 16 DE 5C C1 E7 A3 DA 9C 
7F 5B 29 9A 5A 48 5C 14 ED B2 DE 28 84 43 68 82 
98 87 4E D4 62 51 01 A9 24 34 02 B3 FF 26 63 17 
77 8E 95 56 B1 5F 9F 22 93 46 DE 4E 3A 5E 8A D3
MOSI
3C 3A 04 3F 25 A6 68 09 02 00 04 00 00 00 00 00 (0x26B0)
3C 3A 04 3F 71 AD 00 00 09 00 00 00 00 00 00 00 (0x26C0)
3C 3A 04 3F 8E D5 75 0D 00 00 00 00 00 00 00 00 (0x26D0)
3C 3A 04 3F 80 86 48 0B 0B 00 03 00 00 00 00 00 (0x26E0)

LV2 sys_fs_mount stack overflow

Analysis

Bug description

Stack buffer overflow with required privileges when passing a length greater than 10. It now checks for length less than or equal to 10. If larger than 10, the length gets set to 10.

Implementation

Patched

Yes sometime before 4.40 (only fw I checked)

RSX syscalls bug (rsxploit)

Credits

  • Discovered by Hykem the Demon 2014-12-13.
  • Improved by Zer0Tolerance, IronMan and zecoxao on 2017-08-18.

Analysis

Bug Description

There is a flaw in the sys_rsx_context_allocate LV2 syscall (#670) that leads to lv2 code execution. In most lv2 syscalls, Sony reduces a pointer to 32 bits and use a special function to write to that pointer. However, in certain RSX syscalls, Sony forgot about it, allowing the attacker to write to any part of lv2 memory. There is not just one unchecked pointer, but four! They are the context_id, lpar_dma_control, lpar_driver_info and lpar_reports pointers. We can write values at:

  • rsx_context + 0x04 (4Bytes) - context_id
  • rsx_context + 0x20 (8Bytes) - lpar_dma_control
  • rsx_context + 0x30 (8Bytes) - lpar_driver_info
  • rsx_context + 0x40 (8Bytes) - lpar_reports

To properly specify a kernel address, use ULL for large numbers.

/*
* sys_rsx_context_allocate()
* @param context_id (OUT): RSX context. e.g. 0x55555555 (in vsh.self)
* @param lpar_dma_control (OUT): Control register area. e.g. 0x60100000 (in vsh.self)
* @param lpar_driver_info (OUT): RSX data like frequencies, sizes, version... e.g. 0x60200000 (in vsh.self)
* @param lpar_reports (OUT): Report data area. e.g. 0x60300000 (in vsh.self)
* @param mem_ctx (IN): mem_ctx given by sys_rsx_memory_allocate
* @param system_mode (IN): ?
*/

Instructions for the initial rsxploit PoC by hykem:

  • 1- Change the pointer unk2 in rsx_bug.cpp (there is a comment there)
  • 2- Compile with Visual Studio 2010 and official SDK
  • 3- Load on proDG and analyze
  • 4- ?

Patched

Yes since PS3 4.40. The four flawed pointers are checked since PS3 FW 4.40.

LV2 syscall 484 (sys_prx_register_module) stack overflow

LV2 Syscall 484 (sys_prx_register_module) contains a stack overflow.

LV2 Syscall 484 does not require root privileges.

Patched

Yes since 4.3x or 4.4x.

LV2 Syscall 578 (sys_bluetooth) stack overflow

LV2 Syscall 578 (sys_bluetooth) contains a stack overflow.

LV2 Syscall 578 requires root privileges and is compiled with stack cookies.

Patched

Yes since 4.3x or 4.4x.

AES CTR vulnerability on SELFs (and ebootroms maybe?)

Sometimes SCE reused the same AES CTR keys and IVs in different Certified Files.

See also [6].

See also [7].

Patched

Yes since some PS Vita prototype FWs as their Certified Files started having always different IVs. Maybe not patched on PS3 ebootroms.

PARAM.SFO stack-based buffer overflow

Analysis

Proof of Concept

Unsigned code can be added to the PARAM.SFO because the console does not recognize special characters.

PoC: PARAM.SFO

PSF�� Ä @� � � � � � ��� � � � ��� � � � ��h � � % � � � �� , � � � �� 4
��� �
$� C ��� @ (� V ��� � h� j ��
€ p� t ��� € ð�
ACCOUNT_ID ATTRIBUTE CATEGORY DETAIL PARAMS PARAMS2 PARENTAL_LEVEL SAVEDATA_DIRECTORY SAVEDATA_LIST_PARAM SUB_TITLE
TITLE
40ac78551a88fdc
SD
PSHACK: Benjamin Ninja H%20'>"<[PERSISTENT INJECTED SYSTEM COMMAND OR CODE!]

Hackizeit: 1:33:07

ExpSkills: VL-LAB-TRAINING

Operation: 1%
Trojaners: 0%
... Õõ~\˜òíA×éú�;óç� 40ac78551a88fdc
...
BLES00371-NARUTO_STORM-0
HACKINGBKM 1
PSHACK: Benjamin Ninja H%20'>"<[PERSISTENT INJECTED SYSTEM COMMAND OR CODE!];

Patched

Yes since 4.40. Working on 4.31.

AVP patch bypass exploit

Patched: since 3.70 and later.

PSN security intrusion

Patched: since 3.61 enforced password change

Sony PSN Account Service - Password Reset Vulnerability

Patched: since 2012-05-01

ECDSA private key non-random fail

See fail0verfl0w talk (TODO: add link).

Patched: since 3.56.1

JIG downgrade

Patched: since 3.56

USB config heap-based buffer overflow (PSjailbreak/PSGroove)

Bug description

Using an AVR/PIC or another active USB device like a PSP, that runs specific code can exploit the USB descriptor parser of the PS3.

See also ReDRM_/_Piracy_dongles, PSJailbreak_Exploit_Payload_Reverse_Engineering, PSGroove.

Patched

Yes since 3.42.

Leap year bug

Patched: since 3.40 and later

MP4 vulnerability

Patched: since 3.21 and later

CELL Reset Exploit

See CELL Reset Exploit.

This vulnerability was documented on 12 March 2011‎ by Defyboy

This exploit relies on the fact that RAM is not cleared on reset of the CELL processor. Simply pull the cell_reset line on the processor for around 60 ns and the CELL processor will reset without clearing RAM and begin the boot process again. This hack is largely useless except in special circumstances.

Patched: it is not patched as of 3.55 but useless since 3.15 and later

Playback of Cinavia DRM protected titles

Patched: since 3.10 and later

Open Remote Play

Patched: since 2.80 and later

BD-J homebrew

Patched: since 2.50 and later

However, this "patched" claim is not precise enough and BD-JB like on PS4 and PS5 may be possible.

System Software Downgrade with hardware flasher

See also: Downgrading with Hardware flasher.

Patched

Yes since 2.20 and later (by adding CoreOS hashing in Syscon to be checked by hypervisor; worked around by patching hypervisor on 3.56 and lower capable consoles).

Full RSX access in OtherOS

Patched

Yes since PS3 2.10.

Web browser DoS via a large integer value for the length property of a Select object

Analysis

Patched

Yes since 2009-09-04.

Game vulnerabilities

Vulnerabilities in F.E.A.R. and F.E.A.R. 2: Project Origin

F.E.A.R., F.E.A.R. 2: Project Origin and F.E.A.R. 3 are games available on PS3.

Credits

  • Luigi Auriemma (luigi_auriemma)

Implementation

Call Of Duty: Modern Warfare 3 Null pointer dereference

Credits

  • Luigi Auriemma (luigi_auriemma)

Analysis

Implementation

Electronic Arts Origin games vulnerabilities

Origin has a large number of games, and several of them are available exclusively on this platform, such as:

  • Battlefield 3 (PS3)
  • Crysis 3 (PS3)
  • Dead Space 3 (PS3)
  • FIFA 13 (PS3)
  • Mass Effect 3 (PS3)

These games may be vulnerable on PS3 in case of a bug in the Origin client.

Analysis

Final Fantasy XIV A Realm Reborn network vulnerabilities

Maybe vulnerable via network.

CryEngine 3 multiple vulnerabilities

Credits

  • Luigi Auriemma (luigi_auriemma)
  • Donato Ferrante (dntbug)

Bug description

There are two vulnerabilities in CryEngine 3 due to improper handling of fragmented packets via CryEngine.

HEAP OVERFLOW VIA FRAGMENTED PACKETS

There is a heap overflow vulnerability, which can be triggered by sending a sequence of fragmented packets with opcode 0x93. By using this sequence an attacker is able to reach the following vulnerable code, and take control over the process execution.

MEMORY CORRUPTION VIA FRAGMENTED PACKETS

There is a integer overflow vulnerability, which can be triggered by using a truncated fragment packet, which has a packet size lesser than 4. By sending, for instance a 2-byte packet, the following vulnerable code can be reached.

Games that use CryEngine 3:

  • Crysis 2

Analysis

Implementation

Unreal Engine 3

The third and current generation of the Unreal Engine (UE3) is designed for DirectX (versions 9-11 for Windows and Xbox 360), as well as systems using OpenGL, including the Sony PlayStation 3 and PlayStation Vita.

Homefront

Homefront is based on a customized version of the Unreal Engine 3, with RCON [12] support. It contains many vulnerabilities:

  • INVALID READ ACCESS: The RCON command CT followed by 0x7fffffff triggers an invalid read access, while attempting to read the address 0x7fffffff.
  • NULL POINTER: The RCON command CD triggers a NULL pointer.
  • 16-BIT ADJACENT MEMORY OVERWRITE: The RCON command CT followed by a negative number, allows the setting of 16-bit adjacent memory to 0.
  • STACK-BASED OVERFLOW: The RCON command CT followed by a negative number, can be used to trigger a stack-based overflow.

Sanctum 2

Sanctum 2 is maybe vulnerable since the first Sanctum was vulnerable and Sanctum 2 uses Unreal Engine 3 as well.

Analysis

Implementation

idTech 4

Bug description

The idTech 4 engine exposes a function named idBitMsg::ReadData, which can be used to achieve remote code execution against games using customized version of this engine. Some games, including Doom 3 are not affected by this issue. However, others such as Enemy Territory: Quake Wars and Brink, are affected due to customizations to the original idTech 4 engine.

Games using the idTech 4 engine:

  • Enemy Territory: Quake Wars (PS3) -> vulnerable
  • Wolfenstein (PS3)
  • Brink (PS3) -> vulnerable
  • Doom 3: BFG Edition (PS3)

Analysis

Implementation

Aliens vs. Predator (2010) multiple vulnerabilities

Credits

  • Luigi Auriemma

Implementation

Star Trek D·A·C (Deathmatch. Assault. Conquest) DoS

Credits

  • Luigi Auriemma

Implementation

Source game engine vulnerabilities

Credits

  • Luigi Auriemma

Implementation

Techland Chrome Engine 4 DoS

Credits

  • Luigi Auriemma

Implementation

Memory corruption and NULL pointer in Unreal Tournament III 1.2

Unreal Tournament 3 (UT3) is a first-person arena shooter video game developed by Epic Games and published by Midway Games.

Credits

  • Luigi Auriemma

Analysis

Implementation

Patched

Probably with a game patch.

Remote Play UDP packets DoS

Affected: PS3 1.60, and PSP 3.10 (tested on 3.10 OE-A)

Patched

Yes since 2008-11-13.

Resistance: Fall of Man network update exploit

Resistance: Fall of Man is a 2006 first-person shooter video game developed by Insomniac Games and published by Sony Computer Entertainment for the PlayStation 3. The game used a different system to download the game updates, by entering the multiplayer modes, unlike most titles which search for updates from the XMB or after starting them. This different system was required because at the time of development of the game the PS3 OS was not supporting game updates via XMB. The Resistance: Fall of Man update system contained a vulnerability.

As of December 11, 2008, all map packs for Resistance: Fall of Man were made available for free as a holiday gift from Insomniac due to the release of Resistance 2. All map packs are available for local split-screen multiplayer.

The map packs were removed from PlayStation Store in March 2014, although only in Europe. They are still available on PlayStation Store in USA although they cannot be used because of the aforementioned server closure. Since the game used a different system to download the game updates (by entering the multiplayer modes, unlike most titles which search for updates from the XMB or after starting them), and since the updates were required for DLC compatibility, the map packs became usable only by people who downloaded the updates before the server closure, in March 2014. Shortly after the closure of the game servers, a digital version of the game was released on PlayStation Store, exclusively in Europe. It comes with all game updates and map packs, and full compatibility with savedata from the physical edition.

Patched

?Was the physical version actually patched?

Warhawk network update exploit

Warhawk was a 2007 online multiplayer third-person shooter video game developed by Incognito Entertainment and published by Sony Computer Entertainment for the PlayStation 3. It was the first PlayStation 3 game to be available both physically and digitally on the PlayStation Network.

The game used a different system to download the game updates, by entering the multiplayer modes, unlike most titles which search for updates from the XMB or after starting them. This different system was required because at the time of development of the game the PS3 OS was not supporting game updates via XMB. The Warhawk update system contained a vulnerability.

Patched

?Was the physical version actually patched?

Unsorted network vulnerabilities

Game vulnerabilities patched via System Software update

Afro Samurai Black Screen

Analysis

Bug description

The Afro Samurai game on PS3 gives a black screen as a failed attempt to call:

cellAudioOutConfigure
cellSysutilAvconfExt_FA611DF4

Occurs in Firmware 3.01

BLUS30264
NPUB90215
BLES00516
In order to fix this problem, start up your PlayStation 3 system and while on the XMB (Cross Media Bar/System Menu), go to "Settings" and select "Sound Settings" from here select "Audio Multi-Output" and set this option to "OFF". You should be able to play the Afro Samurai Demo or update the retail game properly to the latest patch after this.

Patched

Yes in VSH since an unknown version but after PS3 FW 3.01.

Syscon

Renesas verify function works on 4 byte values in all Renesas/NEC SysCon chips

All NEC/Renesas syscon chips have their verify function working for a 4 byte array but 256 byte size, increasing the probability of finding the correct bytes as opposed to the intended 256 bytes.

Patched

No because unpatchable.

(Universal) Renesas checksum function works on 256 byte values (all Syscon chips, stock, PSP, PS Vita, PS3, PS4)

Renesas checksum feature works on 256 byte values instead of the intended block size, which means glitching could be done in a narrower margin, making the efforts a lot easier. It is also possible to identify 256 byte constants contiguous to each other by their checksums.

Patched

No because unpatchable.