Reference

Security Reinforcement: Firmware Asset Publishing

The firmware channel in four bands. Build, sign with a non-exportable key, and publish sit inside your control; a dashed boundary marks origin, CDN, mirror and proxy as outside it; verify and flash sit on the device side. Below, two coverage bars: TLS spans only the connection and ends at the socket, while the signature runs from the key to the device. A third band opens the bundle into manifest, payload and installer with five attack routes; a fourth gives the device's check order, any failure meaning refuse rather than warn.

For release engineers, firmware teams, and whoever signs off that an update channel is safe.

Unfamiliar terms? Render and Runtime: A Working Dictionary defines the vocabulary used across these documents — hydration and ISR, Deno against Node, keys against cookies, UAT, adversarial testing and SRI — each by the decision it changes.

Every other asset class fails inside a process you control. Firmware executes on a device, outside your containers, your allow-lists and your monitoring — and persists through a reinstall of everything above it. The controls therefore have to hold on the device, not on the server that served the bytes.

Companion to Asset Management, Security and AI, which argues the case. This is the operational half: what to configure, what to test before publishing, and what it costs to leave the codebase unguarded.


Summary — challenge, solution, opportunity, risk

For the reader who signs the release rather than builds it.

Challenge

An update channel is the only route by which an organisation can change hardware it no longer possesses. In most estates that channel's entire integrity claim is transport: the file was fetched over HTTPS, therefore it is the right file. That does not follow. A valid certificate proves the connection reached a server, not that the bytes are the ones the business approved — and the routes to changing those bytes (a compromised build agent, an over-permissive storage bucket, a stolen deploy token, a CDN rule) do not touch the certificate at all.

Two conditions make the consequence disproportionate. A device executes what it is given, outside every control the organisation operates. And code that ships is code that can be read, so any credential inside it is disclosed to anyone who buys the product.

Solution

Move the integrity claim from the transport to the artifact, and move verification from the server to the device.

Opportunity

Risk of inaction

RiskExposureSeverityRecoverable?
Signing key disclosed or absentAny party can produce firmware the fleet acceptsCatastrophicOnly if the fleet can receive a key rotation — which a compromised channel may prevent
Substituted bytes at the download originFleet-wide compromise, with no on-device check to stop itCriticalRecall, and reputational cost beyond it
Credentials shipped inside the imageDisclosed to every purchaser; fleet-wide, permanentCriticalRequires a firmware update the device may never take
No bill of materialsCannot answer what shipped; regulatory and commercial exposureHighReconstructable only at significant cost
No anti-downgrade controlA known-vulnerable signed image can be replayed indefinitelyHighFixed forward, but the window stays open
No entitlement on downloadDistribution to unknown parties; analysis fuel for an attackerMediumCloseable at any time

The decision this document supports: the controls below cost engineering time measured in weeks. The first row of that table costs the product line. That asymmetry, rather than any technical argument, is why this is a release-gate item and not a backlog item.


1. Configuration tooling

Named tools, grouped by the job. Substitutes are fine; the job is not optional.

Signing and key custody

Bill of materials and provenance

Archive and manifest handling

Codebase protection

Distribution


2. UAT for a firmware publish

Every case below is expected to FAIL the install. A test that passes when it should refuse is the only kind that matters here. Run them against the real device, not an emulator, and run them on the artifact you are about to publish rather than a rebuild.

Signature and provenance

Archive handling

Manifest parsing

Version and device

Failure and recovery

Access

Definition of done: every refusal case refuses, the positive case installs, and the rollback works on real hardware. Anything else is not a publish, it is a hope.


3. Risks of an unguarded codebase, and what each is worth

Hardcoded secrets are the ordinary case, and in firmware they carry a severity they do not carry elsewhere. The reason is short and worth stating before the table:

A secret in firmware is a published secret. Anyone who buys the device has the binary. Anyone with the binary has the strings. There is no threat model in which shipped code keeps a secret — obfuscation changes how long extraction takes, not whether it succeeds.

Which means the question is never could this be found. It is what does it unlock, and how fast can we make it worthless.

FindingWhat it enablesSeverityNotes
Signing key in the repository or in the imageSign arbitrary firmware that every device acceptsCatastrophicEnds the entire trust model. Recovery requires a key rotation the fleet may be unable to receive
Hardcoded default device credentialsFleet-wide remote access, unchanged for the life of the hardwareCriticalHistorically the single most exploited firmware defect. Regulators now treat shipped default credentials as a defect in itself
Static encryption key or IV in the imageDecrypt every device's data and every captured sessionCriticalOne key, whole fleet, permanently
Cloud or API credential in the imageAccess to the backend as the device, at fleet scaleCriticalUsually over-scoped, because it was provisioned for convenience
Debug interface or test endpoint left enabledPrivileged local or remote access, no exploit requiredHighFound by anyone who reads a UART header or scans a port
Update endpoint without pinning or signature checkSubstitute firmware at the network layerHighThe channel described in section 1, absent
Credential in git history but removed from HEADSame as it ever wasHighDeletion is not rotation. Assume disclosed from the moment it was pushed
.env or config committedWhatever it heldHighThe most common finding, and the easiest to prevent
Internal hostnames, IPs or bucket namesReconnaissance, and often direct access to something unauthenticatedMediumRaises the value of every other finding
Verbose errors or symbols in a release buildFaster exploit developmentLow–MediumNot a breach alone. Compounds everything above it

The response is the same shape every time

  1. Rotate, do not delete. A committed secret is disclosed at push time. Removing it from HEAD changes nothing an attacker can observe.
  2. Scan the artifact, not the source. The binary is what ships, and build systems inline things the source did not obviously contain.
  3. Fail the build. A scanner whose output is a report is a scanner someone will learn to ignore. Blocking is the only setting that holds under deadline.
  4. Provision per device, not per fleet. Credentials unique to a unit turn a catastrophic finding into a single-device one.
  5. Assume the binary is public, because it is. Then design so that being public costs you nothing: the device holds a public key for verification, not a private key for anything.