Safeguard
Application Security•

CWE-1221 Incorrect Register Defaults or Module Parameters

Register defaults and IP parameters are hardcoded in silicon. Get a security setting wrong and no firmware patch can fix it.

Safeguard Security Team
2 min read

CWE-1221 is about hardware description language (HDL) code that sets register defaults or hardware IP parameters to insecure values. It is a concern for hardware designers writing Verilog or VHDL, and for security reviewers who read their work.

How it happens

Integrated circuits store software programmable controls and settings in registers. At reset, those registers take default values that are hard coded in the HDL. Hardware languages also support parameters, which configure a specific instance of a hardware IP when it is instantiated.

If a default or parameter is wrong, the IP is in an insecure state at power reset, and untrusted software running on the system can expose or exploit it.

The cost of the mistake is what sets this apart from software. Register defaults and parameters are hardcoded, so they cannot be changed by a software or firmware patch. They must be changed in the silicon, which makes these problems far harder to address later in the lifecycle. MITRE adds that designs can have a large number of such settings, so design tool support is important for checking them automatically and for identifying which are security sensitive.

What an attacker gains

The record describes degradation of system functionality, or loss of access control enforcement, with effects that vary by context across confidentiality, integrity, availability and access control.

How to find it

MITRE lists automated analysis: use tools to test that values are configured per the design specifications. Start by producing an inventory of every register default and parameter, flagged by whether it affects security.

How to fix it

MITRE splits the mitigation across two phases.

  1. During architecture and design, review all system parameters and register defaults to identify security sensitive settings.
  2. During implementation, define the default values of those security sensitive settings as part of the design review phase.

Do this before tape out. After that, the only fix is new silicon.

Quick check

Why can't firmware fix a bad register default?

Register defaults and parameters are hardcoded in the hardware, so they must be changed in silicon and cannot be changed by a software or firmware patch.

Sources

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.