Changes

1,890 bytes added ,  01:43, 5 July 2014
no edit summary
Line 22: Line 22:     
SD card [[extdata]] and SD savegames can be attacked, for consoles where the console-unique [[Nand/private/movable.sed|movable.sed]] was dumped.
 
SD card [[extdata]] and SD savegames can be attacked, for consoles where the console-unique [[Nand/private/movable.sed|movable.sed]] was dumped.
 +
 +
==System flaws==
 +
=== ARM11 kernel ===
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Summary
 +
!  Description
 +
!  Fixed in system version
 +
|-
 +
|  [[SVC|svc7b]]
 +
|  This backdoor allows executing SVC-mode code at the user-specified code-address. This is used by Process9, using this on the ARM11(with NATIVE_FIRM) requires patching the kernel .text or modifying SVC-access-control.
 +
|  None
 +
|-
 +
| [[Memory_layout#ARM11_Detailed_virtual_memory_map|0xEFF00000]] ARM11 kernel virtual-mem
 +
| The ARM11 kernel-mode 0xEFF00000 virtual-mem(size 0x100000) is mapped to phys-mem 0x1FF00000(entire DSP-mem + entire AXIWRAM), with permissions RW-. This is used during ARM11 kernel startup, this never seems to be used after that however.
 +
| None
 +
|-
 +
| [[Services_API|Command]] input/output buffer permissions
 +
| Originally the ARM11 kernel didn't check memory permissions for the input/output buffers for commands. Starting with [[4.0.0-7]] the ARM11 kernel will trigger a kernelpanic() if the input/output buffers don't have the required memory permissions. For example, this allowed a FSUSER file-read to .text, which therefore allowed ARM11-userland code execution.
 +
| [[4.0.0-7]]
 +
|-
 +
| [[SVC|svcControlMemory]] MemoryOperation MAP memory-permissions
 +
| svcControlMemory with MemoryOperation=MAP allows mapping the already-mapped process virtual-mem at addr1, to addr0. The lowest address permitted for addr1 is 0x00100000. Originally the ARM11 kernel didn't check memory permissions for addr1. Therefore .text as addr1 could be mapped elsewhere as RW- memory, which allowed ARM11 userland code-execution.
 +
| [[4.1.0-8]]
 +
|-
 +
| [[SVC|svcReadProcessMemory/svcWriteProcessMemory memory]] permissions
 +
| Originally the kernel only checked the first page(0x1000-bytes) of the src/dst buffers, for svcReadProcessMemory and svcWriteProcessMemory. There is no known retail processes which have access to these SVCs.
 +
| [[4.0.0-7]]
 +
|}