Instrumentation of Hack@DAC 2018 Phase 2 Buggy SoC

June 16, 2022 · View on GitHub

Warning: Do not use the SRAM between addresses 0x1C00_0000 (included) and 0x1C00_8000 (excluded).

Original Readme

SoC used for the second phase of the 2018 Hack@DAC hardware security competition (https://hack-dac18.trust-sysec.com/). This SoC is a modified version of the PULPissimo SoC, which was created by ETH Zurich and the University of Bologna (https://github.com/pulp-platform/pulpissimo). A collobaration of researchers at Texas A&M University, Technische Universität Darmstadt, and Intel expanded the PULPissimo SoC by adding additional security features and inserting hardware security bugs.

Bugs

The following bugs were inserted into the SoC:

#Bug
1Address range overlap between peripherals SPI Master and SoC.
2Addresses for L2 memory is out of the specified range.
3Processor assigns privilege level of execution incorrectly from CSR.
4Register that controls GPIO lock can be written to with software.
5Reset clears the GPIO lock control register.
6Incorrect address range for APB allows memory aliasing.
7AXI address decoder ignores errors.
8Address range overlap between GPIO, SPI, and SoC control peripherals.
9Incorrect password checking logic in debug unit.
10Advanced debug unit only checks 31 of the 32 bits of the password.
11Able to access debug register when in halt mode.
12Password check for the debug unit does not reset after successful check.
13Faulty decoder state machine logic in RISC-V core results in a hang.
14Incomplete case statement in ALU can cause unpredictable behavior.
15Faulty logic in the RTC causing inaccurate time calculation for security-critical flows, e.g., DRM.
16Reset for the advanced debug unit not operational.
17Memory-mapped register file allows code injection.
18Non-functioning cryptography module causes DOS.
19Insecure hash function in the cryptography module.
20Cryptographic key for AES stored in unprotected memory.
21Temperature sensor is muxed with the cryptography modules.
22ROM size is too small preventing execution of security code.
23Disabled the ability to activate the security-enhanced core.
24GPIO enable always high.
25Unprivileged user-space code can write to the privileged CSR.
26Advanced debug unit password is hard-coded and set on reset.
27Secure mode is not required to write to interrupt registers.
28JTAG interface is not password protected.
29Output of MAC is not erased on reset.
30Supervisor mode signal of a core is floating preventing the use of SMAP.
31GPIO is able to read/write to instruction and data cache.

Getting Started

To install the SoC, please follow the steps listed in the PULPissimo readme (https://github.com/pulp-platform/pulpissimo/blob/master/README.md).

Support & Questions

For any issues with the SoC or any questions, please add an issue to our issue tracker.