TOPIC / DEBUG & PRODUCTION LOCKDOWN

The debug port you forgot is the attack path you tested everything else against.

Development needs debug access. Production needs to survive it. The transition between the two states is where products leak firmware, keys and control, and it is a lifecycle problem, not a switch.

Physical access Lifecycle state Memory exposure
Diagnostic question Can an attacker with physical access use debug interfaces, boot modes or lifecycle misconfiguration to reach memory, code or keys?
PRODUCTION DEVICE ACCESS SURFACE
↓  ALTERNATE MODE REACHES

Debug interfaces are built into every microcontroller because development requires them. JTAG, SWD, UART consoles and boot-mode pins are the engineering lifeline of a product, and simultaneously the most direct path an attacker with physical access can take. Flash readout, memory modification, code injection and key extraction all become possible when the lockdown is incomplete.

The problem is rarely a missing feature. Chips ship with readout protection levels, fuse options and lifecycle states that lock debug access down. The problem is the transition: development units with open access flow into production, test fixtures hold unlocked devices, RMA processes re-open what production closed, and lifecycle fuses that should be blown at final test are skipped when the line runs late.

And even a correctly configured lockdown has limits. Voltage fault injection has bypassed readout protection on widely deployed MCU families. A lockdown that assumes protection is absolute, without considering the physical attacker's toolset, is a design assumption waiting to be tested.

WHAT TO VERIFY

The lockdown property depends on several technical assumptions.

  • Interface states Which debug interfaces (JTAG, SWD, UART, trace) are open, locked, or permanently fused off on production units?
  • Boot modes Which alternate boot modes (ROM boot, USB-DFU, SD boot) exist, and what policy applies to them?
  • Readout protection At which RDP level do production units ship, and what does that level actually prevent, including known glitching results?
  • Lifecycle consistency Do development, test, RMA and production units ship with the same lifecycle configuration, and can states be downgraded?
  • Console exposure Does a UART console exist, what does it leak during boot, and does it offer a shell after boot?
  • Debug authentication Where debug access remains for service, is it authenticated, rate-limited and bound to a role?
EXAMPLE FAILURE

RDP level 2 on the datasheet, development lifecycle on the device.

The security concept specifies locked fuses and RDP level 2. The production line programs the firmware but skips the fuse step for a batch running behind schedule. The devices pass every functional test and ship.

An attacker with physical access connects SWD and reads the full firmware image, including embedded keys and credentials. The secure-boot design was correct; the lifecycle state defeated it.

HOW WE APPROACH IT

Test the lockdown as a physical attacker would.

We inventory the accessible interfaces and boot modes on production-representative units, verify the effective protection levels, and test the paths from debug access to memory, code and secrets, including fault-injection considerations where the threat model includes them.

INVENTORY INTERFACES → VERIFY LOCK STATES → TEST BOOT MODES → ATTEMPT EXTRACTION → ASSESS LIFECYCLE
TECHNICAL EVIDENCE
The useful outcome is a supported answer: which lockdown assumption holds or fails on shipped units, which interfaces and modes are affected, what an attacker with physical access can reach, and what the production process must change.
WHEN TO LOOK AT THIS
  • Product moving from development to production
  • New MCU or SoC with different debug architecture
  • RMA or service process re-enables debug access
  • Production line changes or test-fixture updates
  • Firmware or keys need protection against physical extraction
  • A device was accessed physically and the attack path is unclear