This vulnerability occurs when hardware fails to erase sensitive data like cryptographic keys and intermediate values before entering debug mode, leaving them exposed.
During normal operation, hardware components temporarily store security-critical data in registers or cache. This includes encryption keys, intermediate calculation results from cryptographic processes, and other sensitive system information. If this data isn't proactively wiped when the system switches into debug mode, it remains resident in memory. Attackers or untrusted users with debug access can then read these uncleared values directly, potentially compromising entire security systems. This exposure bypasses software protections because the leak happens at the hardware level, where sensitive artifacts were never properly sanitized during the mode transition.
Impact: Read Memory
Impact: Bypass Protection Mechanism
In the above scenario, registers that store keys and intermediate values of cryptographic operations are not cleared when system enters debug mode. An untrusted actor running a debugger may read the contents of these registers and gain access to secret keys and other sensitive cryptographic information.
Whenever the chip enters debug mode, all registers containing security-sensitive data are be cleared rendering them unreadable.
module aes1_wrapper #( ...
verilog
assign core_key1 = { **
verilog
verilogmodule aes1_wrapper #( ...
verilog
debug_mode_i ? 'b0 :** {
verilog
... endmodule