Bug 12 - Key Manager: Data-Enable FSM Illegal-State Silent Recovery (No Alert)
Legacy reference: Bug #19 in the working set
Security feature bypassed
Key Manager FSM integrity monitoring - the alert path that must report fault-injected illegal FSM states
Attack type
Type 2 - physical attacker with FSM state-register fault injection
Finding
The data-enable FSM uses a 10-bit state encoding (1024 encodings, 7 legal states). The
unique case default recovers to the safe state but leaves fsm_err_o = 0 - fault-injected
states recover silently:
// keymgr_data_en_state.sv:80,127-132
unique case (state_q)
...
default: begin
state_d = StIdle; // Safe recovery - correct
// BUG: fsm_err_o stays 0 - alert never fires
end
endcase
Location or code reference
- hw/ip/keymgr/rtl/keymgr_data_en_state.sv:127-132 -
default:recovers to StIdle but never sets fsm_err_o - hw/ip/keymgr/rtl/keymgr_data_en_state.sv:80 - 10-bit sparse FSM state register
New Tools
Yes - actual-RTL module instantiation (Verilator 4.210):
keymgr_data_en_state_tb.sv instantiates the real keymgr_data_en_state.sv with its genuine
dependency chain, exercises the FSM through valid operations, and verifies fsm_err_o stays 0
throughout (see testbench/logs/rtl-test-simulation.log). Also custom HWF-AFL pipeline
(standalone model).
AI Tools
No.
LLM
No.
LLM Details
PLACEHOLDER - to be completed (model name/version, parameters, download link or API endpoint).
Online LLM Details
PLACEHOLDER - to be completed (input/output/total token counts, verification script).
LLM Prompts
PLACEHOLDER - to be completed (complete prompt, full model response, step-by-step explanation).
Detection method
Actual-RTL instantiation (property: illegal states must raise fsm_err_o) + VCS FI demo:
fi19.v forces an illegal 10-bit state (10'b1111111111) into the real FSM; it silently
recovers with fsm_err_o=0 (see exploit/logs/fi19_run.log:
*** BUG #19 FI CONFIRMED: fault is SILENT ***).
Security impact
FSM corruption during key derivation can skip/repeat data-enable stages; the system is unaware - no alert, no log. Key derivation may produce corrupted or predictable output while the security monitors report healthy.
Adversary profile
Type 2 - physical attacker with clock-glitch / EM fault injection on the FSM state register, timed during key derivation.
Proposed mitigation
default: begin
state_d = StIdle;
fsm_err_o = 1'b1; // raise alert on illegal state
end
Or use Hamming-protected state encoding (distance ≥ 2).
CVSSv3.1 score and severity
6.3 - MEDIUM
CVSSv3.1 Details
CVSS:3.1/AV:P/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
- AV: Physical - fault injection on the device
- AC: High - precise timing during derivation
- PR: None
- S: Unchanged - within the Key Manager domain
- C: High - corrupted/predictable derived keys
Attachment links
Located in this repository (GitHub is the cloud storage for the submission):