3DS System Flaws: Difference between revisions

SciresM (talk | contribs)
vectors -> uninitialized ram has been exploited.
Mtgxyz (talk | contribs)
No edit summary
Line 88: Line 88:


== ARM9 software ==
== ARM9 software ==
=== boot9 ===
{| class="wikitable" border="1"
!  Summary
!  Description
!  Fixed with hardware model/revision
!  Newest hardware model/revision this flaw was checked for
!  Timeframe this was discovered
!  Discovered by
|-
| Incorrect padding check
| The FIRM signature is using PKCS #1 padding, which mandates that the padding is all 0xFF bytes. This is not checked correctly, because it only checks whether none of the bytes in the padding are 0x00. This allows a signature to be crafted more easily (sighax)
| N/A
| New3DS
| Summer 2015
| derrek and/or nedwill
|-
| No bound checks inside of ASN.1 parser
| The hash inside of the signature is stored in an ASN.1 structure. However the length fields are not bounds-checked, allowing one to point the header hash to the hash the 3DS calculated before verification. This and because of the aforementioned bug, you can brute-force a signature that will always work easily, as essentially only a few bytes need to be valid.
| N/A
| New3DS
| Summer 2015
| derrek and/or nedwill
|}
=== arm9loader ===
=== arm9loader ===
{| class="wikitable" border="1"
{| class="wikitable" border="1"