[{"data":1,"prerenderedAt":1173},["ShallowReactive",2],{"blog-cra-threat-modeling-embedded":3},{"id":4,"title":5,"body":6,"date":1156,"description":1157,"extension":1158,"image":1159,"keywords":1160,"meta":1167,"navigation":987,"path":1168,"readTime":1169,"seo":1170,"stem":1171,"__hash__":1172},"blog/blog/cra-threat-modeling-embedded.md","CRA Threat Modeling for Embedded Products",{"type":7,"value":8,"toc":1130},"minimark",[9,18,21,24,29,32,45,48,53,64,69,83,87,90,96,102,108,114,117,156,160,163,168,269,273,278,281,295,300,303,338,343,346,351,354,365,368,373,376,387,391,394,398,405,416,420,638,642,757,760,764,768,771,775,778,782,785,789,792,796,799,804,821,826,837,842,850,855,863,868,876,880,883,888,926,938,942,948,954,960,966,972,976,1066,1074,1077,1083,1087],[10,11,12,13,17],"p",{},"Annex VII of the Cyber Resilience Act requires manufacturers to include a ",[14,15,16],"strong",{},"cybersecurity risk assessment"," in their technical documentation. In practice, this means you need a threat model — a structured analysis of how your product could be attacked and what you've done about it.",[10,19,20],{},"For firmware and embedded product teams, this is unfamiliar territory. Threat modeling has been a standard practice in web application and cloud security for years (OWASP, Microsoft SDL), but embedded teams have historically relied on security-by-obscurity, physical inaccessibility, or simply not thinking about it.",[10,22,23],{},"The CRA changes that. You need a documented threat model, it needs to cover the embedded-specific attack surface (physical access, debug interfaces, side channels, supply chain), and it needs to map to your Annex I mitigations. This post shows you how.",[25,26,28],"h2",{"id":27},"what-annex-vii-requires","What Annex VII Requires",[10,30,31],{},"Annex VII, Section 2 requires the technical documentation to include:",[33,34,35,39,42],"ul",{},[36,37,38],"li",{},"An assessment of the cybersecurity risks against which the product is designed, developed, and manufactured",[36,40,41],{},"How the essential requirements in Annex I are addressed based on that assessment",[36,43,44],{},"The security design and architecture of the product",[10,46,47],{},"In regulatory terms: the threat model is the justification for your security design decisions. It answers \"why did you implement these specific security controls?\" with \"because our risk assessment identified these specific threats.\"",[10,49,50],{},[14,51,52],{},"What it doesn't require:",[33,54,55,58,61],{},[36,56,57],{},"A specific threat modeling methodology (STRIDE, PASTA, LINDDUN, attack trees — any recognised approach is acceptable)",[36,59,60],{},"A specific format or template",[36,62,63],{},"Third-party validation (for default-category products)",[10,65,66],{},[14,67,68],{},"What market surveillance authorities will look for:",[33,70,71,74,77,80],{},[36,72,73],{},"Evidence that the threat model was created before or during development (not retroactively slapped together for compliance)",[36,75,76],{},"Coverage of the product's actual attack surface (not a generic template)",[36,78,79],{},"Traceability from identified threats to implemented mitigations",[36,81,82],{},"Alignment between the threat model and the Annex I requirements you claim to satisfy",[25,84,86],{"id":85},"why-it-threat-models-dont-fit-embedded","Why IT Threat Models Don't Fit Embedded",[10,88,89],{},"Standard IT threat models (STRIDE applied to web applications, OWASP Top 10 for APIs) assume a context that doesn't match embedded products:",[10,91,92,95],{},[14,93,94],{},"IT assumes network-only attackers."," Embedded products have physical attack surfaces: debug ports, flash memory that can be desoldered and read, RF interfaces that can be intercepted at close range, side-channel emissions.",[10,97,98,101],{},[14,99,100],{},"IT assumes patching is fast."," Web applications deploy patches in hours. Firmware updates for devices in the field take days to weeks, and many devices may never update. The threat model needs to account for the window of exposure.",[10,103,104,107],{},[14,105,106],{},"IT assumes abundant resources."," Crypto libraries, logging infrastructure, intrusion detection — all of these consume CPU, RAM, and flash that may be severely constrained on an MCU.",[10,109,110,113],{},[14,111,112],{},"IT ignores supply chain hardware attacks."," For embedded products, the supply chain includes PCB fabrication, component sourcing, firmware programming during manufacturing — each is an attack surface.",[10,115,116],{},"An embedded threat model needs to cover:",[118,119,120,126,132,138,144,150],"ol",{},[36,121,122,125],{},[14,123,124],{},"Network attacks"," (same as IT, but for constrained devices)",[36,127,128,131],{},[14,129,130],{},"Physical attacks"," (debug ports, flash readout, hardware tampering)",[36,133,134,137],{},[14,135,136],{},"Side-channel attacks"," (power analysis, EM analysis, timing attacks)",[36,139,140,143],{},[14,141,142],{},"Supply chain attacks"," (counterfeit components, firmware tampering during manufacturing)",[36,145,146,149],{},[14,147,148],{},"RF/wireless attacks"," (BLE spoofing, Wi-Fi deauth, Zigbee interception)",[36,151,152,155],{},[14,153,154],{},"Firmware-specific attacks"," (rollback, unsigned updates, bootloader exploits)",[25,157,159],{"id":158},"stride-adapted-for-embedded-systems","STRIDE Adapted for Embedded Systems",[10,161,162],{},"STRIDE (Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege) is a good starting framework because it's well-documented and widely recognised by conformity assessment bodies. But it needs adaptation for embedded contexts.",[164,165,167],"h3",{"id":166},"embedded-stride-categories","Embedded STRIDE Categories",[169,170,171,187],"table",{},[172,173,174],"thead",{},[175,176,177,181,184],"tr",{},[178,179,180],"th",{},"STRIDE Category",[178,182,183],{},"IT Example",[178,185,186],{},"Embedded Example",[188,189,190,204,217,230,243,256],"tbody",{},[175,191,192,198,201],{},[193,194,195],"td",{},[14,196,197],{},"Spoofing",[193,199,200],{},"Forged authentication token",[193,202,203],{},"Cloned device identity, spoofed BLE peripheral, rogue OTA server",[175,205,206,211,214],{},[193,207,208],{},[14,209,210],{},"Tampering",[193,212,213],{},"Modified HTTP request",[193,215,216],{},"Firmware replacement via JTAG, flash chip swap, OTA image manipulation",[175,218,219,224,227],{},[193,220,221],{},[14,222,223],{},"Repudiation",[193,225,226],{},"User denies sending a message",[193,228,229],{},"Device denies it was in a specific state; no audit logs on constrained device",[175,231,232,237,240],{},[193,233,234],{},[14,235,236],{},"Information Disclosure",[193,238,239],{},"SQL injection leaks database",[193,241,242],{},"JTAG readout of firmware and keys, side-channel key extraction, unencrypted BLE data",[175,244,245,250,253],{},[193,246,247],{},[14,248,249],{},"Denial of Service",[193,251,252],{},"HTTP flood",[193,254,255],{},"Network stack crash via malformed packets, radio jamming, flash wear-out",[175,257,258,263,266],{},[193,259,260],{},[14,261,262],{},"Elevation of Privilege",[193,264,265],{},"SQL injection to admin",[193,267,268],{},"Buffer overflow to code execution, debug port to full device access, MPU bypass",[164,270,272],{"id":271},"step-by-step-embedded-stride-process","Step-by-Step Embedded STRIDE Process",[10,274,275],{},[14,276,277],{},"Step 1: Define the system boundary",[10,279,280],{},"Draw a context diagram showing:",[33,282,283,286,289,292],{},[36,284,285],{},"Your device and its internal components (MCU, flash, sensors, radio)",[36,287,288],{},"External entities that interact with it (cloud services, mobile apps, other devices, users, maintenance technicians)",[36,290,291],{},"Data flows between them (MQTT, BLE, UART, JTAG, OTA updates, sensor data)",[36,293,294],{},"Trust boundaries (what's inside your device vs. what's external and untrusted)",[10,296,297],{},[14,298,299],{},"Step 2: Decompose into elements",[10,301,302],{},"Break the system into individual components:",[33,304,305,308,311,314,317,320,323,326,329,332,335],{},[36,306,307],{},"Bootloader",[36,309,310],{},"Application firmware",[36,312,313],{},"Network stack",[36,315,316],{},"Cryptographic module",[36,318,319],{},"Key storage",[36,321,322],{},"Configuration storage",[36,324,325],{},"Debug interfaces",[36,327,328],{},"Physical interfaces (USB, UART, GPIO)",[36,330,331],{},"Wireless interfaces (Wi-Fi, BLE, Zigbee, LoRa)",[36,333,334],{},"OTA update mechanism",[36,336,337],{},"Sensor inputs",[10,339,340],{},[14,341,342],{},"Step 3: Apply STRIDE to each element and data flow",[10,344,345],{},"For each component and each data flow, ask the six STRIDE questions. Not every category applies to every element, but you need to consider each one.",[10,347,348],{},[14,349,350],{},"Step 4: Rate and prioritise",[10,352,353],{},"For each identified threat:",[33,355,356,359,362],{},[36,357,358],{},"Likelihood: How likely is this attack given your product's deployment context?",[36,360,361],{},"Impact: What happens if this attack succeeds?",[36,363,364],{},"Risk: Likelihood x Impact",[10,366,367],{},"Use a simple scale (High/Medium/Low) or CVSS-style scoring. The CRA doesn't mandate a specific risk rating system.",[10,369,370],{},[14,371,372],{},"Step 5: Map to mitigations and Annex I requirements",[10,374,375],{},"For each threat rated Medium or above, document:",[33,377,378,381,384],{},[36,379,380],{},"The mitigation you've implemented",[36,382,383],{},"Which Annex I requirement the mitigation satisfies",[36,385,386],{},"Test evidence that the mitigation works",[25,388,390],{"id":389},"worked-example-stm32-sensor-node","Worked Example: STM32 Sensor Node",[10,392,393],{},"Consider a temperature/humidity sensor node based on an STM32L4 with BLE connectivity, deployed in a commercial building.",[164,395,397],{"id":396},"system-context","System Context",[10,399,400],{},[401,402],"img",{"alt":403,"src":404},"STM32 Sensor Node — System Context and Threat Model","/images/blog/threat-model-stm32.svg",[406,407,412],"pre",{"className":408,"code":410,"language":411},[409],"language-text","┌──────────────────────────────────┐\n│         Cloud Backend            │\n│  (MQTT broker, device registry)  │\n└──────────────┬───────────────────┘\n               │ TLS/MQTT\n┌──────────────┴───────────────────┐\n│          BLE Gateway             │\n│    (Raspberry Pi, nRF dongle)    │\n└──────────────┬───────────────────┘\n               │ BLE (GATT)\n┌──────────────┴───────────────────┐\n│      STM32L4 Sensor Node         │\n│  ┌─────────┐  ┌───────────────┐  │\n│  │ Sensors │  │ BLE Radio     │  │\n│  └─────────┘  └───────────────┘  │\n│  ┌─────────┐  ┌───────────────┐  │\n│  │ Flash   │  │ JTAG/SWD Port │  │\n│  └─────────┘  └───────────────┘  │\n└──────────────────────────────────┘\n","text",[413,414,410],"code",{"__ignoreMap":415},"",[164,417,419],{"id":418},"threat-analysis-selected-threats","Threat Analysis (Selected Threats)",[169,421,422,447],{},[172,423,424],{},[175,425,426,429,432,435,438,441,444],{},[178,427,428],{},"#",[178,430,431],{},"Element",[178,433,434],{},"STRIDE",[178,436,437],{},"Threat",[178,439,440],{},"Likelihood",[178,442,443],{},"Impact",[178,445,446],{},"Risk",[188,448,449,470,489,508,526,545,564,582,600,619],{},[175,450,451,454,457,459,462,465,468],{},[193,452,453],{},"T1",[193,455,456],{},"BLE interface",[193,458,197],{},[193,460,461],{},"Attacker impersonates gateway to extract sensor data",[193,463,464],{},"Medium",[193,466,467],{},"Low",[193,469,467],{},[175,471,472,475,477,479,482,485,487],{},[193,473,474],{},"T2",[193,476,456],{},[193,478,236],{},[193,480,481],{},"Unencrypted BLE advertising leaks sensor readings",[193,483,484],{},"High",[193,486,467],{},[193,488,464],{},[175,490,491,494,497,499,502,504,506],{},[193,492,493],{},"T3",[193,495,496],{},"JTAG/SWD port",[193,498,236],{},[193,500,501],{},"Attacker with physical access reads firmware and keys",[193,503,464],{},[193,505,484],{},[193,507,484],{},[175,509,510,513,515,517,520,522,524],{},[193,511,512],{},"T4",[193,514,496],{},[193,516,210],{},[193,518,519],{},"Attacker installs malicious firmware via debug port",[193,521,464],{},[193,523,484],{},[193,525,484],{},[175,527,528,531,534,536,539,541,543],{},[193,529,530],{},"T5",[193,532,533],{},"Flash storage",[193,535,236],{},[193,537,538],{},"Attacker desolders flash and reads keys",[193,540,467],{},[193,542,484],{},[193,544,464],{},[175,546,547,550,553,555,558,560,562],{},[193,548,549],{},"T6",[193,551,552],{},"OTA update",[193,554,210],{},[193,556,557],{},"Man-in-the-middle replaces OTA image",[193,559,464],{},[193,561,484],{},[193,563,484],{},[175,565,566,569,571,573,576,578,580],{},[193,567,568],{},"T7",[193,570,552],{},[193,572,210],{},[193,574,575],{},"Attacker rolls back to vulnerable firmware version",[193,577,464],{},[193,579,484],{},[193,581,484],{},[175,583,584,587,589,591,594,596,598],{},[193,585,586],{},"T8",[193,588,307],{},[193,590,262],{},[193,592,593],{},"Attacker exploits bootloader vulnerability to execute arbitrary code",[193,595,467],{},[193,597,484],{},[193,599,464],{},[175,601,602,605,608,610,613,615,617],{},[193,603,604],{},"T9",[193,606,607],{},"Application",[193,609,249],{},[193,611,612],{},"Malformed BLE packets crash the network stack",[193,614,464],{},[193,616,464],{},[193,618,464],{},[175,620,621,624,627,629,632,634,636],{},[193,622,623],{},"T10",[193,625,626],{},"Supply chain",[193,628,210],{},[193,630,631],{},"Counterfeit MCU with modified ROM bootloader",[193,633,467],{},[193,635,484],{},[193,637,464],{},[164,639,641],{"id":640},"mitigation-mapping","Mitigation Mapping",[169,643,644,656],{},[172,645,646],{},[175,647,648,650,653],{},[178,649,437],{},[178,651,652],{},"Mitigation",[178,654,655],{},"Annex I Requirement",[188,657,658,669,680,691,702,713,724,735,746],{},[175,659,660,663,666],{},[193,661,662],{},"T2 — BLE data leakage",[193,664,665],{},"BLE LE Secure Connections with encryption enabled",[193,667,668],{},"Req 4 (Confidentiality), Req 10 (Secure comms)",[175,670,671,674,677],{},[193,672,673],{},"T3 — JTAG key readout",[193,675,676],{},"RDP Level 2 set in production; JTAG permanently disabled",[193,678,679],{},"Req 6 (Attack surface)",[175,681,682,685,688],{},[193,683,684],{},"T4 — JTAG firmware install",[193,686,687],{},"RDP Level 2; secure boot verifies firmware signature",[193,689,690],{},"Req 3 (Integrity), Req 6 (Attack surface)",[175,692,693,696,699],{},[193,694,695],{},"T5 — Flash readout",[193,697,698],{},"Encryption keys stored in STM32 OTP, not external flash",[193,700,701],{},"Req 4 (Confidentiality)",[175,703,704,707,710],{},[193,705,706],{},"T6 — OTA MITM",[193,708,709],{},"OTA images signed with ECDSA P-256; verified by bootloader",[193,711,712],{},"Req 3 (Integrity)",[175,714,715,718,721],{},[193,716,717],{},"T7 — Firmware rollback",[193,719,720],{},"Anti-rollback counter in protected flash",[193,722,723],{},"Req 2 (No known vulns), Req 3 (Integrity)",[175,725,726,729,732],{},[193,727,728],{},"T8 — Bootloader exploit",[193,730,731],{},"MCUboot with minimal attack surface, verified boot chain",[193,733,734],{},"Req 6 (Attack surface), Req 3 (Integrity)",[175,736,737,740,743],{},[193,738,739],{},"T9 — BLE DoS",[193,741,742],{},"Input validation on BLE GATT handlers, watchdog timer",[193,744,745],{},"Req 9 (Availability)",[175,747,748,751,754],{},[193,749,750],{},"T10 — Supply chain",[193,752,753],{},"Incoming inspection with firmware verification, vendor qualification",[193,755,756],{},"Req 1 (Appropriate cybersecurity)",[10,758,759],{},"This mapping is the core deliverable: it connects your identified risks to specific engineering controls and traces those controls to Annex I requirements.",[25,761,763],{"id":762},"tools-for-embedded-threat-modeling","Tools for Embedded Threat Modeling",[164,765,767],{"id":766},"microsoft-threat-modeling-tool","Microsoft Threat Modeling Tool",[10,769,770],{},"Free, GUI-based, uses data flow diagrams with STRIDE analysis. Works well for embedded systems if you create custom element types for MCU components, flash storage, and debug interfaces. The default templates are IT-focused, but custom templates are supported.",[164,772,774],{"id":773},"owasp-threat-dragon","OWASP Threat Dragon",[10,776,777],{},"Open-source, web-based. Simpler than Microsoft's tool. Good for smaller teams. Supports STRIDE, data flow diagrams, and threat documentation. Can be self-hosted.",[164,779,781],{"id":780},"attack-trees","Attack Trees",[10,783,784],{},"For detailed analysis of specific attack paths (e.g., \"how can an attacker extract the firmware signing key?\"), attack trees provide a more granular view than STRIDE. Each leaf node is a specific attack step; the tree shows how steps combine.",[164,786,788],{"id":787},"pen-and-paper-whiteboard","Pen and Paper / Whiteboard",[10,790,791],{},"For small embedded teams, a whiteboard session followed by a structured document is often more practical than a specialised tool. The CRA doesn't require specific tooling — it requires a documented, structured analysis.",[25,793,795],{"id":794},"annex-vii-deliverable-format","Annex VII Deliverable Format",[10,797,798],{},"Your threat model document should be part of the Annex VII technical documentation file. A practical structure:",[10,800,801],{},[14,802,803],{},"1. System description",[33,805,806,809,812,815,818],{},[36,807,808],{},"Product overview and intended purpose",[36,810,811],{},"System context diagram",[36,813,814],{},"Component list",[36,816,817],{},"Data flow diagrams",[36,819,820],{},"Trust boundaries",[10,822,823],{},[14,824,825],{},"2. Threat identification",[33,827,828,831,834],{},[36,829,830],{},"Methodology used (STRIDE, attack trees, etc.)",[36,832,833],{},"Identified threats with description, STRIDE category, and affected component",[36,835,836],{},"Likelihood and impact ratings with rationale",[10,838,839],{},[14,840,841],{},"3. Mitigation mapping",[33,843,844,847],{},[36,845,846],{},"For each threat: mitigation implemented, Annex I requirement satisfied, evidence reference",[36,848,849],{},"Residual risk assessment (risks accepted without full mitigation, with justification)",[10,851,852],{},[14,853,854],{},"4. Test evidence references",[33,856,857,860],{},[36,858,859],{},"Links to test reports that validate mitigations",[36,861,862],{},"Penetration testing results (where applicable)",[10,864,865],{},[14,866,867],{},"5. Maintenance plan",[33,869,870,873],{},[36,871,872],{},"Triggers for threat model update (see below)",[36,874,875],{},"Review schedule",[25,877,879],{"id":878},"maintenance-triggers","Maintenance Triggers",[10,881,882],{},"A threat model isn't a one-time document. It must be maintained. The CRA's \"appropriate to the risks\" language means your security controls must stay appropriate as the risk landscape changes.",[10,884,885],{},[14,886,887],{},"Update your threat model when:",[33,889,890,896,902,908,914,920],{},[36,891,892,895],{},[14,893,894],{},"New hardware revision:"," Changed interfaces, new components, or modified PCB layout may introduce new attack surfaces",[36,897,898,901],{},[14,899,900],{},"New firmware feature:"," Adding a network protocol, cloud connectivity, or new peripheral interface changes the attack surface",[36,903,904,907],{},[14,905,906],{},"New CVE in a component you use:"," A newly published vulnerability may change the likelihood or impact ratings in your threat model",[36,909,910,913],{},[14,911,912],{},"Deployment context change:"," If your product moves into a new market (e.g., from commercial building to healthcare facility), the threat landscape changes",[36,915,916,919],{},[14,917,918],{},"Security incident:"," If your product or a similar product is attacked, the threat model should reflect the learned attack vector",[36,921,922,925],{},[14,923,924],{},"Annex III reclassification:"," If Annex III is updated and your product's classification changes, the assessment depth may need to increase",[10,927,928,931,932,937],{},[14,929,930],{},"Recommended review cadence:"," At minimum, review the threat model annually and with every major firmware release. For ",[933,934,936],"a",{"href":935},"/blog/cra-product-classification/","Class I and Class II products",", conformity assessment bodies and notified bodies will expect evidence of ongoing threat model maintenance.",[25,939,941],{"id":940},"common-mistakes","Common Mistakes",[10,943,944,947],{},[14,945,946],{},"1. Using a generic template without product-specific analysis."," Market surveillance authorities will recognise a copy-pasted threat model. The threats must be specific to your product's architecture and deployment context.",[10,949,950,953],{},[14,951,952],{},"2. Ignoring physical attacks."," For embedded products, physical access is often the highest-impact attack vector. If your threat model doesn't cover JTAG, flash readout, and hardware tampering, it's incomplete.",[10,955,956,959],{},[14,957,958],{},"3. Not mapping threats to Annex I."," The threat model's purpose in the CRA context is to justify your Annex I mitigations. Without this mapping, the threat model is a standalone document that doesn't demonstrate compliance.",[10,961,962,965],{},[14,963,964],{},"4. Treating it as a one-time exercise."," If your threat model was written two years ago and never updated despite three major firmware releases, it won't hold up to scrutiny.",[10,967,968,971],{},[14,969,970],{},"5. Overly academic scope."," You don't need to model nation-state attacks on a temperature sensor. Rate threats against your actual deployment context and attacker profile. Document your assumptions about the attacker (skill level, access, motivation).",[25,973,975],{"id":974},"embedded-threat-model-checklist","Embedded Threat Model Checklist",[33,977,980,990,996,1002,1008,1014,1020,1026,1032,1042,1048,1054,1060],{"className":978},[979],"contains-task-list",[36,981,984,989],{"className":982},[983],"task-list-item",[985,986],"input",{"disabled":987,"type":988},true,"checkbox"," System context diagram created with all external entities and data flows",[36,991,993,995],{"className":992},[983],[985,994],{"disabled":987,"type":988}," Component decomposition covers: bootloader, application, network stack, crypto, storage, debug interfaces, wireless interfaces, OTA mechanism",[36,997,999,1001],{"className":998},[983],[985,1000],{"disabled":987,"type":988}," STRIDE (or equivalent) applied to each component and data flow",[36,1003,1005,1007],{"className":1004},[983],[985,1006],{"disabled":987,"type":988}," Physical attack surface covered (JTAG/SWD, flash readout, hardware tampering)",[36,1009,1011,1013],{"className":1010},[983],[985,1012],{"disabled":987,"type":988}," Supply chain threats assessed",[36,1015,1017,1019],{"className":1016},[983],[985,1018],{"disabled":987,"type":988}," Wireless-specific threats assessed (spoofing, interception, jamming)",[36,1021,1023,1025],{"className":1022},[983],[985,1024],{"disabled":987,"type":988}," Each threat rated for likelihood and impact",[36,1027,1029,1031],{"className":1028},[983],[985,1030],{"disabled":987,"type":988}," Each medium/high threat mapped to a specific mitigation",[36,1033,1035,1037,1038],{"className":1034},[983],[985,1036],{"disabled":987,"type":988}," Each mitigation mapped to an ",[933,1039,1041],{"href":1040},"/blog/cra-annex-i-essential-requirements-checklist/","Annex I requirement",[36,1043,1045,1047],{"className":1044},[983],[985,1046],{"disabled":987,"type":988}," Residual risks documented with acceptance rationale",[36,1049,1051,1053],{"className":1050},[983],[985,1052],{"disabled":987,"type":988}," Test evidence referenced for each mitigation",[36,1055,1057,1059],{"className":1056},[983],[985,1058],{"disabled":987,"type":988}," Maintenance triggers and review schedule defined",[36,1061,1063,1065],{"className":1062},[983],[985,1064],{"disabled":987,"type":988}," Threat model included in Annex VII technical documentation file",[10,1067,1068,1069,1073],{},"The ",[933,1070,1072],{"href":1071},"/","Stack Canary assessment tool"," includes a threat model gap assessment that identifies which attack categories you need to cover based on your product's architecture and connectivity.",[1075,1076],"hr",{},[10,1078,1079],{},[1080,1081,1082],"em",{},"Based on Regulation EU 2024/2847 Annex VII Section 2, Microsoft STRIDE methodology, OWASP Threat Modeling guidelines, and IEC 62443 (industrial cybersecurity risk assessment). This does not constitute legal advice.",[25,1084,1086],{"id":1085},"sources","Sources",[33,1088,1089,1097,1104,1110,1117,1123],{},[36,1090,1091],{},[933,1092,1096],{"href":1093,"rel":1094},"https://eur-lex.europa.eu/eli/reg/2024/2847/oj/eng",[1095],"nofollow","Regulation (EU) 2024/2847 — Cyber Resilience Act (full text)",[36,1098,1099],{},[933,1100,1103],{"href":1101,"rel":1102},"https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats",[1095],"Microsoft — STRIDE threat model",[36,1105,1106],{},[933,1107,767],{"href":1108,"rel":1109},"https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool",[1095],[36,1111,1112],{},[933,1113,1116],{"href":1114,"rel":1115},"https://owasp.org/www-community/Threat_Modeling",[1095],"OWASP — Threat Modeling",[36,1118,1119],{},[933,1120,774],{"href":1121,"rel":1122},"https://owasp.org/www-project-threat-dragon/",[1095],[36,1124,1125],{},[933,1126,1129],{"href":1127,"rel":1128},"https://www.iec.ch/cyber-security",[1095],"IEC 62443 — Industrial cybersecurity standards",{"title":415,"searchDepth":1131,"depth":1131,"links":1132},2,[1133,1134,1135,1140,1145,1151,1152,1153,1154,1155],{"id":27,"depth":1131,"text":28},{"id":85,"depth":1131,"text":86},{"id":158,"depth":1131,"text":159,"children":1136},[1137,1139],{"id":166,"depth":1138,"text":167},3,{"id":271,"depth":1138,"text":272},{"id":389,"depth":1131,"text":390,"children":1141},[1142,1143,1144],{"id":396,"depth":1138,"text":397},{"id":418,"depth":1138,"text":419},{"id":640,"depth":1138,"text":641},{"id":762,"depth":1131,"text":763,"children":1146},[1147,1148,1149,1150],{"id":766,"depth":1138,"text":767},{"id":773,"depth":1138,"text":774},{"id":780,"depth":1138,"text":781},{"id":787,"depth":1138,"text":788},{"id":794,"depth":1131,"text":795},{"id":878,"depth":1131,"text":879},{"id":940,"depth":1131,"text":941},{"id":974,"depth":1131,"text":975},{"id":1085,"depth":1131,"text":1086},"2025-12-04","Threat modeling for embedded products under CRA Annex VII: handling physical attacks, JTAG access, and constrained environments with STRIDE.","md","/images/blog/previews/threat-modeling.svg",[1161,1162,1163,1164,1165,1166],"CRA threat modeling","threat modeling embedded systems","CRA Annex I threat model","STRIDE embedded firmware","threat model MCU","CRA Annex VII",{},"/blog/cra-threat-modeling-embedded","12 min",{"title":5,"description":1157},"blog/cra-threat-modeling-embedded","_BXkJhIis3TmQETbdCSn0TPs9Z00CwhCcuhkX8Ayox8",1775939691378]