EU Cyber Resilience Act — Guide for Software Architect
What the CRA means for your role, your team, and your day-to-day responsibilities.
Software Architects make the structural decisions that determine how easy or difficult it will be for engineering teams to satisfy the CRA's ongoing security obligations across a product's entire support period. Decisions about language choice, framework selection, component architecture, update mechanisms, and data handling patterns all have direct Annex I implications. This guide explains how Software Architects translate the CRA's requirements into durable architectural patterns and produce the documentation required for conformity assessment.
Your CRA responsibilities:
- ›Define software architecture patterns that structurally satisfy Annex I Part I security requirements
- ›Select and govern third-party software dependencies and open-source components for security fitness
- ›Design update delivery architectures that meet Annex I §12 authenticated and integrity-verified update requirements
- ›Specify data handling and encryption standards across the software stack
- ›Produce and maintain architecture documentation for inclusion in the CRA technical file
- ›Conduct or co-lead threat modelling with the Security Architect for all in-scope software components
- ›Define software SBOM generation requirements for the CI/CD pipeline
Software Architecture Decisions Under the CRA
Software Architects make decisions at the beginning of a product's life that determine its CRA compliance posture for the entire support period — which may extend a decade or more. Annex I Part I establishes essential requirements that software design must satisfy structurally, not just through post-hoc controls.
High-impact architectural decisions with Annex I implications:
- Language and memory safety (Annex I §1): memory-unsafe languages (C, C++) require additional architectural controls — memory-safe subsystem boundaries, use of bounds-checking libraries, or migration to memory-safe equivalents — to satisfy the exploitable vulnerability prohibition
- Privilege architecture (Annex I §4): the software must implement least-privilege principles; architectural decisions about process isolation, capability-based security, and inter-process communication boundaries must be documented
- Cryptographic agility (Annex I §3): hardcoding specific cipher suites creates future compliance risk as algorithms are deprecated; the architecture must support algorithm rotation without full stack changes
- Logging and auditability (Article 14 support): the architecture must support the rapid incident analysis required by Article 14's 72-hour notification timeline — this means structured, queryable logs from the first release
Each of these decisions should be captured in a dated Architecture Decision Record (ADR) cross-referencing the relevant Annex I provision.
Selecting Secure Dependencies and OSS Components
Annex I §10 requires manufacturers to address the security of the software supply chain, including the integrity and security of third-party and open-source components. For Software Architects, this means establishing a dependency governance process that operates before components are adopted, not only after vulnerabilities are discovered.
Dependency selection criteria for CRA-regulated products:
- Maintenance status: prefer dependencies with active maintainers, recent release history, and a public security advisory channel — abandoned or unmaintained libraries create unresolvable Annex I §1 risk
- Vulnerability history: review the CVE history of candidate dependencies before adoption; a pattern of critical vulnerabilities signals structural security debt
- Licence compatibility: CRA does not mandate specific OSS licences, but copyleft licences may affect the ability to distribute security patches promptly
- SBOM availability: prefer upstream components that themselves publish SBOMs — this simplifies transitive dependency tracking
- Minimal transitive footprint: prefer dependencies with few transitive dependencies; each transitive dependency is an additional attack surface and SBOM entry
Document the dependency selection criteria as an architecture standard and include a record of the evaluation for significant new dependencies in the technical file.
Designing for Updatability and Patch Delivery
Annex I §12 requires products with digital elements to support secure, authenticated software updates throughout their support period. This is an architectural requirement — systems that were not designed for updatability cannot be made updatable after the fact without significant rework.
Update architecture requirements under Annex I §12:
- Authenticated update channel: the update delivery mechanism must cryptographically verify the authenticity of update packages before installation — unsigned updates must be rejected
- Integrity verification: each update package must be verified against a cryptographic signature from a key held in a hardware-backed store, not a software keystore
- Rollback protection: the architecture must prevent downgrade attacks by tracking installed versions in tamper-resistant storage and rejecting packages with lower version numbers than the current installation
- Staged rollout capability: the update architecture should support canary deployments and staged rollouts to limit the blast radius of a defective update
- Offline update path: for products deployed in air-gapped or intermittently connected environments, design an authenticated offline update mechanism (e.g., signed update packages deliverable via USB or SD card)
The update architecture must be documented in the technical file, including the key management scheme and the rollback protection mechanism.
Secure Data Handling Architecture
Annex I §3 requires products to protect the confidentiality and integrity of stored and transmitted data. For Software Architects, this translates into data classification, encryption standards, and key management architecture decisions that must be made explicitly rather than left to individual developers.
CRA-aligned data handling architecture includes:
- Data classification: define data categories (e.g., device credentials, user PII, telemetry) and specify the encryption and access control requirements for each class — document this as a data classification policy in the technical file
- Encryption at rest: sensitive data stored on-device must be encrypted using current NIST-recommended algorithms (AES-256-GCM or equivalent); document algorithm selection with rationale
- Encryption in transit: all network communication must use TLS 1.2 minimum, TLS 1.3 preferred; enforce certificate pinning for product-to-backend communication on high-risk products
- Key management architecture: specify where keys are generated, stored, rotated, and destroyed — keys used for product security functions must be stored in hardware-backed keystores, not application memory
- Data minimisation: only data necessary for the product's intended function should be collected and retained — excess data collection expands the confidentiality risk addressed by Annex I §3
Getting Started Checklist
Practical first steps for Software Architects building CRA compliance into their architecture programme:
- Audit the current architecture against Annex I Part I requirements — identify where controls are implemented but undocumented, and where structural gaps exist that require design changes
- Establish an ADR process with CRA Annex I cross-referencing as a mandatory field for all security-relevant architecture decisions
- Define the dependency governance policy: document the evaluation criteria for new dependencies and create a review record template for significant adoptions
- Review the update delivery architecture: confirm that update packages are signed, integrity-verified, and rollback-protected — if not, plan the remediation before CRA application date
- Define data classification and encryption standards: ensure encryption algorithm choices are documented with rationale and that key management is specified at the architecture level
- Generate an initial software SBOM: run SBOM tooling across the codebase to establish the baseline dependency inventory — identify any unmaintained or unpatched components
- Run the CVD Portal CRA Readiness Score to benchmark the architecture against Annex I and identify the highest-risk gaps to address first
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 SW Architects and their teams.
Start your free portalFrequently asked by SW Architects
Does the CRA require specific programming languages or prohibit memory-unsafe languages?+
The CRA does not prohibit any programming language. Annex I §1 requires the absence of known exploitable vulnerabilities, which in practice means that if memory-unsafe languages are used, the architecture must compensate with additional controls: memory-safe subsystem boundaries, use of sanitisers in testing, static analysis gates in CI, and fuzz testing. Documenting the rationale for language choices and the compensating controls in the technical file demonstrates proportionate risk treatment. Regulators and notified bodies are aware of the widespread use of C and C++ in embedded systems.
How should the software architecture handle the CRA's support period obligations?+
Article 13(8) requires manufacturers to provide security updates for the duration of the expected support period, which must be stated in the Declaration of Conformity. Software Architects must design systems that can receive, verify, and install security patches throughout this period — potentially 10 years or more for some product categories. This means avoiding hard dependencies on deprecated cryptographic algorithms, designing for cryptographic agility, and ensuring the update mechanism itself can be updated if compromised.
What SBOM format should a Software Architect specify for product software?+
The CRA does not mandate a specific SBOM format, but ENISA guidance and current notified body practice align on CycloneDX 1.5+ or SPDX 2.3+ as the expected machine-readable formats. Software Architects should specify SBOM generation as part of the build pipeline for all product software, producing a versioned SBOM artefact for every release. The SBOM must cover all direct and transitive software dependencies with name, version, package URL (PURL), and licence identifier at minimum.
Key CRA articles for SW Architects
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.