Safeguard
Security Guides•

How do you reduce the attack surface of a firmware image?

ETSI EN 303 645 provision 5.6 asks for unused interfaces off, only needed services on, and trimmed code. A practical checklist for firmware images.

Safeguard Security Team
3 min read

Ship only what the device needs. ETSI EN 303 645 provision 5.6 asks that unused network and logical interfaces be disabled, that only used software services be enabled, that code be minimised to necessary functionality, and that software run with least privilege. Each removed item is one less thing to patch.

What provision 5.6 asks

The standard's section on minimising exposed attack surfaces includes these provisions, paraphrased here.

  • 5.6-1. All unused network and logical interfaces shall be disabled.
  • 5.6-2. In the initialized state, the network interfaces shall minimise unauthenticated security-relevant information.
  • 5.6-3. Hardware should not unnecessarily expose physical interfaces to attack.
  • 5.6-4. Where a debug interface is physically accessible, it shall be disabled in software.
  • 5.6-5. Only software services that are used or required should be enabled.
  • 5.6-6. Code should be minimised to the functionality necessary.
  • 5.6-7. Software should run with least necessary privileges.
  • 5.6-8. The device should include a hardware-level access control mechanism for memory.
  • 5.6-9. The manufacturer should follow secure development processes for software deployed on the device.

Why this is also a supply chain topic

Every library and service in the image is a component you must track and patch. A web server nobody uses, a debug shell, or a diagnostic daemon that stays in the build, adds exposure and adds entries to your inventory. Removing it reduces both.

A checklist

  1. List listening ports on a running image and justify each one.
  2. List running services at boot and remove anything without an owner.
  3. List packages in the image and remove build tools, test utilities and unused libraries.
  4. Check physical interfaces. The standard gives an example of a power-only micro-USB port configured not to allow command or debug operations, and a UART disabled through the bootloader so no login prompt appears.
  5. Run services with the least privilege that works, not as root by default.
  6. Repeat after every release, since features creep back in.
ItemQuestion
Network portNeeded in the initial state?
ServiceUsed for the intended function?
PackageRequired at runtime?
Debug interfaceDisabled in production?

Keep the evidence

Record what you removed and why, with the release it applies to. It will help a reviewer and your next engineer.

Where Safeguard fits

If you want an inventory your reviewers can query, Safeguard offers SBOM and dependency scanning with policies and gates on pull requests. It works from the source and manifests it supports. A free scan is at gold.safeguard.sh/scan.

Try it yourself

Count the components in the inventory, then ask how many your image truly needs.

Click through it at your own pace, or open it full screen.

Quick check

Is a smaller image automatically safer?

It has less to attack and less to patch, but it is not a guarantee. Still review what remains.

Does disabling a debug port in software count if the pins are exposed?

The provision asks for software disabling where the interface is physically accessible. Reducing physical exposure is a separate provision, 5.6-3.

Sources

Last reviewed: 19 October 2026.

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.