This vulnerability occurs when hardware or firmware uses a lock bit to protect critical system registers or memory regions, but fails to properly prevent that lock bit from being changed after it has been enabled. This design flaw allows attackers to bypass hardware-enforced security restrictions.
In hardware design and system-on-chip (SoC) architectures, a lock bit acts as a hardware-enforced security switch. Trusted firmware like a BIOS or bootloader typically sets this bit during initialization to permanently disable writes to protected configuration registers—such as those controlling debug modes, memory protection, or secure boot settings. Once locked, these settings should become immutable to prevent runtime tampering. If the implementation contains flaws—like allowing the lock bit itself to be written, clearing it via a side channel, or failing to verify its state—attackers can reverse the lock. This effectively unlocks the protected resources, enabling unauthorized reconfiguration, privilege escalation, or extraction of sensitive data that the hardware was designed to guard.
Impact: Modify Memory
Registers protected by lock bit can be modified even when lock is set.
Effectiveness: High
| Register | Field description |
|---|---|
| CRITICAL_TEMP_LIMIT | [31:8] Reserved field; Read only; Default 0 [7:0] Critical temp 0-255 Centigrade; Read-write-lock; Default 125 |
| TEMP_SENSOR_CALIB | [31:0] Thermal sensor calibration data. Slope value used to map sensor reading to degrees Centigrade. |
| TEMP_SENSOR_LOCK | [31:1] Reserved field; Read only; Default 0 [0] Lock bit, locks CRITICAL_TEMP_LIMIT and TEMP_SENSOR_CALIB registers; Write-1-once; Default 0 |
| TEMP_HW_SHUTDOWN | [31:2] Reserved field; Read only; Default 0 [1] Enable hardware shutdown on critical temperature detection; Read-write; Default 0 |
| CURRENT_TEMP | [31:8] Reserved field; Read only; Default 0 [7:0] Current Temp 0-255 Centigrade; Read-only; Default 0 |
To fix this weakness, one could change the TEMP_HW_SHUTDOWN field to be locked by TEMP_SENSOR_LOCK.
| | | | TEMP_HW_SHUTDOWN | [31:2] Reserved field; Read only; Default 0 [1] Enable hardware shutdown on critical temperature detection; Read-write-Lock; Default 0 [0] Locked by TEMP_SENSOR_LOCK |
verilog
if(~(rst_ni && ~jtag_unlock && ~rst_9))**
verilog
verilog
if(~(rst_ni && ~jtag_unlock))**
verilog