This vulnerability occurs when a system's access controls are too broad, allowing unauthorized users or processes to read or modify sensitive resources. Instead of implementing precise, fine-grained permissions, the security policy uses overly permissive rules that fail to properly restrict access to critical assets like configuration data, keys, or system registers.
In hardware and integrated circuits, access to security-sensitive assets (such as device configuration registers or encryption keys) is often managed by trusted firmware like the BIOS or bootloader. Upon startup, hardware registers default to permissive states, and this firmware is responsible for configuring proper access controls. If these controls are not granular enough—for example, protecting an entire register block instead of individual fields—unauthorized software or firmware components may gain access they shouldn't have. This lack of precision creates serious security risks. Attackers or less-privileged agents can leak sensitive data, modify secure configurations, or extract cryptographic keys. The result is a compromised device state that undermines system integrity, functionality, and overall security posture, often enabling further exploitation.
Impact: Modify MemoryRead MemoryExecute Unauthorized Code or CommandsGain Privileges or Assume IdentityBypass Protection MechanismOther
Effectiveness: High
| Register | Field description |
|---|---|
| AES_ENC_DEC_KEY_0 | AES key [0:31] for encryption or decryption Default 0x00000000 |
| AES_ENC_DEC_KEY_1 | AES key [32:63] for encryption or decryption Default 0x00000000 |
| AES_ENC_DEC_KEY_2 | AES key [64:95] for encryption or decryption Default 0x00000000 |
| AES_ENC_DEC_KEY_4 | AES key [96:127] for encryption or decryption Default 0x00000000 |
| AES_KEY_READ_WRITE_POLICY | [31:0] Default 0x00000006 - meaning agent with identities "1" and "2" can both read from and write to key registers |
| | | | AES_KEY_READ_POLICY | [31:0] Default 0x00000002 - meaning only Crypto engine with identity "1" can read registers: AES_ENC_DEC_KEY_0, AES_ENC_DEC_KEY_1, AES_ENC_DEC_KEY_2, AES_ENC_DEC_KEY_3 | | AES_KEY_WRITE_POLICY | [31:0] Default 0x00000004 - meaning only trusted firmware with identity "2" can program registers: AES_ENC_DEC_KEY_0, AES_ENC_DEC_KEY_1, AES_ENC_DEC_KEY_2, AES_ENC_DEC_KEY_3 |
verilog
assign connectivity_map_o[i][j] = access_ctrl_i[i][j][priv_lvl_i] || ((j==6) && access_ctrl_i[i][7][priv_lvl_i]);** end end ...
verilog
assign connectivity_map_o[i][j] = access_ctrl_i[i][j][priv_lvl_i];** end end ...