Changes

500 bytes added ,  20:56, 14 May 2015
Line 16: Line 16:  
!  Summary
 
!  Summary
 
!  Description
 
!  Description
 +
!  Fixed with hardware model/revision
 +
!  Newest hardware model/revision this flaw was checked for
 
!  Timeframe this was discovered
 
!  Timeframe this was discovered
 
!  Discovered by
 
!  Discovered by
Line 23: Line 25:  
Since RAM isn't cleared on boot (see below), one can immediately start execution of their own code here to dump bootrom, OTP, etc.
 
Since RAM isn't cleared on boot (see below), one can immediately start execution of their own code here to dump bootrom, OTP, etc.
 
The ARM9 bootrom does the following at reset:  reset vector branches to another instruction, then branches to bootrom+0x8000. Hence, there's no way to know for certain when exactly the ARM9 exception-vector data stored in memory gets initialized.
 
The ARM9 bootrom does the following at reset:  reset vector branches to another instruction, then branches to bootrom+0x8000. Hence, there's no way to know for certain when exactly the ARM9 exception-vector data stored in memory gets initialized.
 +
 +
This requires *very* *precise* timing for triggering the hardware fault: it's unknown if anyone actually exploited this successfully at the time of writing(the one who attempted+discovered it *originally* as listed in this wiki section hasn't).
 +
| None: all available 3DS models at the time of writing have the exact same ARM9/ARM11 bootrom for the unprotected areas.
 +
| New3DS
 
| End of February 2014
 
| End of February 2014
 
| [[User:Derrek|derrek]], WulfyStylez (May 2015) independently
 
| [[User:Derrek|derrek]], WulfyStylez (May 2015) independently
Line 28: Line 34:  
| Missing AES key clearing
 
| Missing AES key clearing
 
| The hardware AES engine does not clear keys when doing a hard reset/reboot.
 
| The hardware AES engine does not clear keys when doing a hard reset/reboot.
This applies for New3DS too.
+
| None
 +
| New3DS
 
| August 2014
 
| August 2014
 
| Mathieulh/Others
 
| Mathieulh/Others
Line 34: Line 41:  
| No RAM clearing on reboots
 
| No RAM clearing on reboots
 
| On an MCU-triggered reboot all RAM including FCRAM/ARM9 memory/AXIWRAM keeps its contents.
 
| On an MCU-triggered reboot all RAM including FCRAM/ARM9 memory/AXIWRAM keeps its contents.
 +
| None
 +
| New3DS
 
| March 2014
 
| March 2014
 
| [[User:Derrek|derrek]]
 
| [[User:Derrek|derrek]]
Line 40: Line 49:  
| On retail the 8-bytes at ARM9 address [[Memory_layout|0x01FFB808]] are XORed with hard-coded data, to generate the TWL console-unique keys, including TWLNAND. On Old3DS the high u32 is always 0x0, while on New3DS that u32 is always 0x2. Therefore, only the first 32bits of the TWL console-unique keydata / TWL consoleID are actually console-unique.
 
| On retail the 8-bytes at ARM9 address [[Memory_layout|0x01FFB808]] are XORed with hard-coded data, to generate the TWL console-unique keys, including TWLNAND. On Old3DS the high u32 is always 0x0, while on New3DS that u32 is always 0x2. Therefore, only the first 32bits of the TWL console-unique keydata / TWL consoleID are actually console-unique.
 
This allows one to easily bruteforce the TWL console-unique keydata with *just* data from TWLNAND. On DSi the actual console-unique data for key generation is 8-bytes(all bytes actually set).
 
This allows one to easily bruteforce the TWL console-unique keydata with *just* data from TWLNAND. On DSi the actual console-unique data for key generation is 8-bytes(all bytes actually set).
 +
| None
 +
| New3DS
 
| 2012?
 
| 2012?
 
| [[User:Yellows8|Yellows8]]
 
| [[User:Yellows8|Yellows8]]
Line 48: Line 59:     
This attack does not work for the 3DS key-generator because keyslots 0-3 are only for TWL keys.
 
This attack does not work for the 3DS key-generator because keyslots 0-3 are only for TWL keys.
 +
|
 +
|
 
| 2011
 
| 2011
 
| [[User:Yellows8|Yellows8]]
 
| [[User:Yellows8|Yellows8]]