Hack@CHES 2026 - Phase 1 Bug Submissions

Team KattangalSec

View on GitHub

Bug 07 - LC State Transition Validity Check Uses || Instead of && (Dual-Replica FI Countermeasure Defeated)

Legacy reference: Bug #5 in the working set


Security feature bypassed

Lifecycle Controller redundant state-transition validity check - the dual-replica fault-injection countermeasure

Attack type

Type 2 - physical attacker with fault injection equipment

Finding

The transition-validity check combines two replicated lookups with || (OR) instead of && (AND):

// lc_ctrl_state_transition.sv:140-141
if (TransTokenIdxMatrix[dec_lc_state_i[0]][trans_target_i[0]] != InvalidTokenIdx ||
    TransTokenIdxMatrix[dec_lc_state_i[1]][trans_target_i[1]] != InvalidTokenIdx) begin

The transition is authorized if either replica indicates validity. The dual-replica countermeasure requires both to agree - a single fault corrupting one replica suffices to authorize a forbidden transition. The module comment (lines 138-139) states the dual-replica intent; the operator contradicts it.

Location or code reference

New Tools

Yes - custom VCS (U-2023.03) redundancy-checker fuzzer: enumerated all pass/fail combinations of the two replicas and verified that the OR gate allows single-replica bypass while the AND gate requires both. Directed testbench on the real lc_ctrl_state_transition.sv RTL confirms the behavior (bug-005-tb-lc-or-and.sv).

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

Manual RTL inspection (comment-vs-operator contradiction) + automated VCS redundancy fuzzing. Security property: a transition is valid only if both replicas agree; the fuzzer proved every single-replica-corrupted case is wrongly accepted.

Security impact

A physical attacker with FI capability (laser, EM, voltage glitch) corrupts one replica’s decode path; a single-bit fault making a forbidden transition look valid in one replica passes the OR gate. Worst case: transition from a locked state to an unlocked state without the correct token.

Adversary profile

Type 2 - physical attacker with fault injection equipment (laser/EM/voltage glitch) and knowledge of the LC decode timing.

Proposed mitigation

if (TransTokenIdxMatrix[dec_lc_state_i[0]][trans_target_i[0]] != InvalidTokenIdx &&
    TransTokenIdxMatrix[dec_lc_state_i[1]][trans_target_i[1]] != InvalidTokenIdx) begin

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:H/A:H

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