EU Cyber Resilience Act — Guide for Firmware & Embedded Software Developer
What the CRA means for your role, your team, and your day-to-day responsibilities.
Firmware and embedded software sit at the lowest trust boundary of connected products. The Cyber Resilience Act's Annex I technical requirements apply fully to firmware, including secure coding practices, signed update delivery, and maintaining an accurate Software Bill of Materials for embedded components. Developers who understand these obligations early can embed compliance into the build process rather than retrofitting it under time pressure.
Your CRA responsibilities:
- ›Write firmware that meets Annex I Part I security properties, including minimal attack surface and protection against unauthorised access
- ›Implement memory-safe coding practices or compensating controls where unsafe languages are used
- ›Produce and maintain a firmware SBOM covering all open-source and third-party components
- ›Implement signed firmware builds and verify secure boot chains
- ›Ensure the product can receive and apply security updates throughout the defined support period
- ›Document cryptographic algorithms, key management procedures, and boot integrity mechanisms
- ›Track CVEs in embedded libraries and escalate confirmed findings to the PSIRT
CRA impact on firmware development
Firmware in connected products — routers, IoT sensors, industrial controllers, medical devices — falls squarely within the CRA's scope as software that enables a product's primary function. Article 13 requires manufacturers to ensure products conform to Annex I across their entire lifecycle, which includes the firmware layer. Developers must treat security as a first-class design requirement rather than a post-shipping concern. Specific obligations relevant to firmware include: shipping without known exploitable vulnerabilities, enabling secure configuration by default, limiting attack surface to what is required for declared functionality, and ensuring the product can be updated securely after deployment. Firmware that ships with default credentials, open debug interfaces, or unpatched library code will constitute non-conformity.
Secure coding and memory safety
Annex I Part I requires that products be designed to minimise the number of exploitable vulnerabilities. For firmware written in C or C++, this means applying rigorous coding standards — MISRA C, CERT C, or equivalent — that eliminate classes of memory safety bugs including buffer overflows, use-after-free, and format string vulnerabilities. Where the codebase cannot be migrated to memory-safe languages such as Rust, compensating controls must be documented: stack canaries, address space layout randomisation, read-only memory sections, and static analysis integrated into the build pipeline. The technical file must record which standards were applied and include evidence of static analysis runs. Regulators will scrutinise firmware products closely because memory corruption vulnerabilities in embedded code commonly result in full device compromise.
Signed firmware builds and secure boot
Annex I Part I requires that security updates be delivered with integrity and authenticity protections. For firmware, this means every release build must be cryptographically signed using a key held in a hardware security module or equivalent protected storage, and devices must verify that signature before applying any update. Secure boot — where each stage of the boot sequence verifies the next using a root of trust anchored in hardware — provides the complementary assurance that only authorised firmware runs on the device. Developers must document the key management lifecycle: key generation, storage, rotation, and revocation procedures. If a signing key is compromised, the manufacturer must be capable of re-keying the device population, which requires planning during the hardware design phase.
Tracking dependencies in firmware SBOM
Firmware frequently incorporates dozens of open-source libraries — FreeRTOS, lwIP, mbed TLS, BusyBox — plus vendor-supplied SDKs and silicon manufacturer libraries. Annex I Part II requires manufacturers to identify and document all components in a machine-readable SBOM. For firmware, generating this SBOM automatically is challenging because embedded build systems vary widely. Developers should integrate SBOM generation into the Yocto, BuildRoot, or CMake build pipeline using tooling that can extract component names, versions, and licence information from the dependency tree. The SBOM must be updated with every firmware release. When CVEs are published against listed components, developers must assess whether the vulnerable feature is compiled in and whether the call path is reachable in the product's configuration.
Getting started checklist
Start by inventorying all third-party and open-source components in the firmware build and generating an initial SBOM in CycloneDX or SPDX format. Run the SBOM against NVD to identify any known vulnerabilities in current components and triage each finding. Enable compiler security flags — stack protectors, FORTIFY_SOURCE, PIE — if not already active, and integrate a static analyser such as Clang Static Analyzer or Coverity into the CI pipeline. Verify that the firmware update mechanism validates signatures before applying any image. If secure boot is not yet implemented, raise it as an architecture task with a defined completion milestone. Record all of these measures in the product's technical file and set a recurring review cadence tied to each firmware release.
CVD Portal handles your CRA Article 13 obligations automatically.
Public CVD submission portal, 48-hour acknowledgment tracking, Article 14 deadline alerts, and CSAF advisory generation — built for FW Devs and their teams.
Start your free portalFrequently asked by FW Devs
Does the CRA apply to firmware in products sold before August 2025?+
The CRA applies to products placed on the EU market from 11 December 2027 (the application date following the 36-month transitional period). Products already on the market before that date are not required to be retrofitted, but any substantial modification that changes the product's intended purpose or security profile may trigger the obligation to re-conform. Manufacturers should also consider that active exploitation of pre-CRA products may affect their market reputation even if it carries no direct regulatory consequence.
What counts as a 'security update' under the CRA for firmware products?+
A security update is any update whose primary purpose is to address a vulnerability. For firmware, this includes patches to embedded libraries, mitigations for hardware-level vulnerabilities (such as Spectre-class issues), and fixes to authentication or cryptographic components. The CRA requires that security updates be delivered separately from functional updates where technically feasible, so users can apply security fixes without accepting untested functional changes.
How long must a firmware product receive security updates under the CRA?+
The CRA does not specify a fixed minimum support period for all products. Instead, Article 13 requires manufacturers to define a support period that reflects the product's expected use. Guidance and implementing regulations are expected to establish minimum periods — currently anticipated to be at least five years for most consumer-facing connected products. Manufacturers must publish the support period end date at the time of placing the product on the market, and must not shorten it retroactively without regulatory justification.
Key CRA articles for FW Devs
Need a CVD policy template your team can deploy today?
Free CRA-compliant templates for every stage — from first CVD policy to full PSIRT programme.