Hack@CHES 2026 - Phase 1 Bug Submissions

Team KattangalSec

View on GitHub

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

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

Located in this repository (GitHub is the cloud storage for the submission):