{"@ID": "1329", "@Name": "Reliance on Component That is Not Updateable", "@Abstraction": "Base", "@Structure": "Simple", "@Status": "Incomplete", "Description": "The product contains a component that cannot be updated or patched in order to remove vulnerabilities or significant bugs.", "Extended_Description": {"xhtml:p": ["If the component is discovered to contain a vulnerability or critical bug, but the issue cannot be fixed using an update or patch, then the product's owner will not be able to protect against the issue.  The only option might be replacement of the product, which could be too financially or operationally expensive for the product owner.  As a result, the inability to patch or update can leave the product open to attacker exploitation or critical operation failures. This weakness can be especially difficult to manage when using ROM, firmware, or similar components that traditionally have had limited or no update capabilities.", "In industries such as healthcare, \"legacy\"\n\t\t\t    devices can be operated for decades.  As a\n\t\t\t    US task force report [REF-1197] notes, \"the inability\n\t\t\t    to update or replace equipment has both\n\t\t\t    large and small health care delivery\n\t\t\t    organizations struggle with numerous\n\t\t\t    unsupported legacy systems that cannot\n\t\t\t    easily be replaced (hardware, software, and\n\t\t\t    operating systems) with large numbers of\n\t\t\t    vulnerabilities and few modern\n\t\t\t    countermeasures.\"", "While hardware can be prone to this weakness, software systems can also be affected, such as when a third-party driver or library is no longer actively maintained or supported but is still critical for the required functionality."]}, "Related_Weaknesses": {"Related_Weakness": [{"@Nature": "ChildOf", "@CWE_ID": "1357", "@View_ID": "1000", "@Ordinal": "Primary"}, {"@Nature": "ChildOf", "@CWE_ID": "1357", "@View_ID": "1194", "@Ordinal": "Primary"}, {"@Nature": "ChildOf", "@CWE_ID": "664", "@View_ID": "1000"}]}, "Weakness_Ordinalities": {"Weakness_Ordinality": {"Ordinality": "Primary"}}, "Applicable_Platforms": {"Language": {"@Class": "Not Language-Specific", "@Prevalence": "Undetermined"}, "Operating_System": {"@Class": "Not OS-Specific", "@Prevalence": "Undetermined"}, "Architecture": {"@Class": "Not Architecture-Specific", "@Prevalence": "Undetermined"}, "Technology": [{"@Class": "Not Technology-Specific", "@Prevalence": "Undetermined"}, {"@Class": "ICS/OT", "@Prevalence": "Undetermined"}]}, "Modes_Of_Introduction": {"Introduction": [{"Phase": "Requirements", "Note": "Requirements development might not consider the importance of updates over the lifetime of the product or might intentionally exclude this capability due to concerns such as expense or speed to market."}, {"Phase": "Architecture and Design", "Note": "Lack of planning during architecture development and design, or external pressures such as speed to market, could ignore the capability to update."}, {"Phase": "Architecture and Design", "Note": "Designers might omit capabilities for updating a component due to time pressures to release the product or assumptions about the stability of the component."}, {"Phase": "Implementation", "Note": "The weakness can appear through oversight during implementation."}]}, "Common_Consequences": {"Consequence": {"Scope": ["Confidentiality", "Integrity", "Access Control", "Authentication", "Authorization", "Other"], "Impact": ["Gain Privileges or Assume Identity", "Bypass Protection Mechanism", "Execute Unauthorized Code or Commands", "DoS: Crash, Exit, or Restart", "Quality Degradation", "Reduce Maintainability"], "Note": "If an attacker can identify an exploitable vulnerability in one product that has no means of patching, the attack may be used against all affected versions of that product."}}, "Detection_Methods": {"Detection_Method": {"Method": "Architecture or Design Review", "Description": "Check the consumer or maintainer documentation, the architecture/design documentation, or the original requirements to ensure that the documentation includes details for how to update the firmware.", "Effectiveness": "Moderate"}}, "Potential_Mitigations": {"Mitigation": [{"Phase": "Requirements", "Description": "Specify requirements that each component should be updateable, including ROM, firmware, etc."}, {"Phase": "Architecture and Design", "Description": "Design the product to allow for updating of its components. Include the external infrastructure that might be necessary to support updates, such as distribution servers."}, {"Phase": ["Architecture and Design", "Implementation"], "Description": "With hardware, support patches that can be programmed in-field or during manufacturing through hardware fuses. This feature can be used for limited patching of devices after shipping, or for the next batch of silicon devices manufactured, without changing the full device ROM.", "Effectiveness": "Moderate", "Effectiveness_Notes": "Some parts of the hardware initialization or signature verification done to authenticate patches will always be \"not patchable.\"  Hardware-fuse-based patches will also have limitations in terms of size and the number of patches that can be supported."}, {"Phase": "Implementation", "Description": "Implement the necessary functionality to allow each component to be updated."}]}, "Demonstrative_Examples": {"Demonstrative_Example": [{"@Demonstrative_Example_ID": "DX-145", "Intro_Text": "A refrigerator has an Internet interface for the official purpose of alerting the manufacturer when that refrigerator detects a fault. Because the device is attached to the Internet, the refrigerator is a target for hackers who may wish to use the device other potentially more nefarious purposes.", "Example_Code": [{"@Nature": "Bad", "@Language": "Other", "#text": "The refrigerator has no means of patching and is hacked, becoming a spewer of email spam."}, {"@Nature": "Good", "@Language": "Other", "#text": "The device automatically patches itself and provides considerable more protection against being hacked."}]}, {"@Demonstrative_Example_ID": "DX-146", "Intro_Text": {"xhtml:p": "A System-on-Chip (SOC) implements a Root-of-Trust (RoT) in ROM to boot secure code. However, at times this ROM code might have security vulnerabilities and need to be patched. Since ROM is immutable, it can be impossible to patch."}, "Body_Text": "ROM does not have built-in application-programming interfaces (APIs) to patch if the code is vulnerable. Implement mechanisms to patch the vulnerable ROM code."}, {"Intro_Text": "The example code is taken from the JTAG module of the buggy OpenPiton SoC of HACK@DAC'21. JTAG is protected with a password checker. Access to JTAG operations will be denied unless the correct password is provided by the user. This user-provided password is first sent to the HMAC module where it is hashed with a secret crypto key. This user password hash (pass_hash) is then compared with the hash of the correct password (exp_hash).  If they match, JTAG will then be unlocked.", "Example_Code": [{"@Nature": "Bad", "@Language": "Verilog", "xhtml:br": [null, null, null, null, null, null], "xhtml:div": [{"@style": "margin-left:1em;", "xhtml:div": {"@style": "margin-left:1em;", "xhtml:div": {"@style": "margin-left:1em;", "xhtml:br": [null, null, null], "xhtml:div": {"@style": "margin-left:1em;", "xhtml:div": {"@style": "margin-left:1em;", "xhtml:br": [null, null, null, null], "xhtml:div": [{"@style": "margin-left:1em;", "xhtml:br": null, "#text": "pass_check = 1'b1;"}, {"@style": "margin-left:1em;", "xhtml:br": null, "#text": "pass_check = 1'b0;"}], "#text": "if(exp_hash == pass_hash) begin\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tend else begin\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tend\n\t\t\t\t\t\t\t\t\t\tstate_d = Idle;"}, "xhtml:br": [null, null, null], "#text": "end else begin\n\t\t\t\t\t\t\t\t\tstate_d = PassChkValid;\n\t\t\t\t\t\t\t\t\tend"}, "#text": "PassChkValid: begin\n\t\t\t\t\t\t\t\tif(hashValid) begin\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tend"}}}, {"@style": "margin-left:1em;", "xhtml:br": null, "#text": "hmac hmac("}, {"@style": "margin-left:1em;", "xhtml:div": {"@style": "margin-left:1em;", "xhtml:b": ".key_i(256'h24e6fa2254c2ff632a41b...),", "xhtml:br": null}}, {"@style": "margin-left:1em;", "xhtml:br": null, "#text": ");"}], "#text": "module dmi_jtag(...)(...);\n\t\t\t\t\t...\n\t\t\t\t\t\t\n\t\t\t\t\t...\n\t\t\t\t\t\t\n\t\t\t\t\t...\n\t\t\t\t\t\t\n\t\t\t\t\t...\n\t\t\t\t\t\t\n\t\t\t\t\t...\n\t\t\t\t\tendmodule"}, {"@Nature": "Good", "@Language": "Verilog", "xhtml:br": [null, null, null, null, null, null], "xhtml:div": [{"@style": "margin-left:1em;", "xhtml:b": ["input logic [255:0] hmac_key_i,", "input logic         hmac_patch_en,", "reg [255:0] hmac_key_reg;"], "xhtml:br": [null, null, null, null, null], "#text": "... \n\t\t\t\t\t\t\n\t\t\t\t\t\t..."}, {"@style": "margin-left:1em;", "xhtml:br": [null, null, null, null, null], "xhtml:b": "if (hmac_patch_en)", "xhtml:div": {"@style": "margin-left:1em;", "xhtml:b": "hmac_key_reg <= hmac_key_i;", "xhtml:br": null}, "#text": "always_ff @(posedge tck_i or negedge trst_ni) begin\n\t\t\t\t\t\t...\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t...\n\t\t\t\t\t\tend"}, {"@style": "margin-left:1em;", "xhtml:br": [null, null, null, null, null], "xhtml:b": ".key_i(hmac_key_reg),", "#text": "hmac hmac(\n\t\t\t\t\t\t...\n\t\t\t\t\t\t\n\t\t\t\t\t\t...\n\t\t\t\t\t\t);"}], "#text": "module dmi_jtag(...\n\t\t\t\t\t) (\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t\t...\n\t\t\t\t\t\t\n\t\t\t\t\t...\n\t\t\t\t\t\t\n\t\t\t\t\t...\n\t\t\t\t\tendmodule"}], "Body_Text": ["However, the SoC's crypto key is hardcoded into the design and cannot be updated [REF-1387]. Therefore, if the key is leaked somehow, there is no way to reprovision the key without having the device replaced.", "To fix this issue, a local register should be used (hmac_key_reg) to store the crypto key. If designers need to update the key, they can upload the new key through an input port (hmac_key_i) to the local register by enabling the patching signal (hmac_patch_en) [REF-1388]."]}]}, "Observed_Examples": {"Observed_Example": [{"Reference": "CVE-2022-34381", "Description": "Java-based SDK for TLS has an unmaintained third-party component with a critical vulnerability", "Link": "https://www.cve.org/CVERecord?id=CVE-2022-34381"}, {"Reference": "CVE-2020-9054", "Description": "Chain: network-attached storage (NAS) device has a critical OS command injection (CWE-78) vulnerability that is actively exploited to place IoT devices into a botnet, but some products are \"end-of-support\" and cannot be patched (CWE-1277). [REF-1097]", "Link": "https://www.cve.org/CVERecord?id=CVE-2020-9054"}]}, "References": {"Reference": [{"@External_Reference_ID": "REF-1197", "@Section": "Executive Summary"}, {"@External_Reference_ID": "REF-1097"}, {"@External_Reference_ID": "REF-1387"}, {"@External_Reference_ID": "REF-1388"}]}, "Mapping_Notes": {"Usage": "Allowed", "Rationale": "This CWE entry is at the Base level of abstraction, which is a preferred level of abstraction for mapping to the root causes of vulnerabilities.", "Comments": "Carefully read both the name and description to ensure that this mapping is an appropriate fit. Do not try to 'force' a mapping to a lower-level Base/Variant simply to comply with this preferred level of abstraction.", "Reasons": {"Reason": {"@Type": "Acceptable-Use"}}}, "Content_History": {"Submission": {"Submission_Name": "CWE Content Team", "Submission_Organization": "MITRE", "Submission_Date": "2020-12-03", "Submission_Version": "4.3", "Submission_ReleaseDate": "2020-12-10"}, "Modification": [{"Modification_Name": "CWE Content Team", "Modification_Organization": "MITRE", "Modification_Date": "2021-07-20", "Modification_Version": "4.5", "Modification_ReleaseDate": "2021-07-20", "Modification_Comment": "updated Demonstrative_Examples, Description, References"}, {"Modification_Name": "CWE Content Team", "Modification_Organization": "MITRE", "Modification_Date": "2022-04-28", "Modification_Version": "4.7", "Modification_ReleaseDate": "2022-04-28", "Modification_Comment": "updated Common_Consequences, Description, Detection_Factors, Maintenance_Notes, Modes_of_Introduction, Observed_Examples, Potential_Mitigations, References, Relationships, Time_of_Introduction, Weakness_Ordinalities"}, {"Modification_Name": "CWE Content Team", "Modification_Organization": "MITRE", "Modification_Date": "2023-01-31", "Modification_Version": "4.10", "Modification_ReleaseDate": "2023-01-31", "Modification_Comment": "updated Applicable_Platforms, Relationships"}, {"Modification_Name": "CWE Content Team", "Modification_Organization": "MITRE", "Modification_Date": "2023-04-27", "Modification_Version": "4.11", "Modification_ReleaseDate": "2023-04-27", "Modification_Comment": "updated Relationships"}, {"Modification_Name": "CWE Content Team", "Modification_Organization": "MITRE", "Modification_Date": "2023-06-29", "Modification_Version": "4.12", "Modification_ReleaseDate": "2023-06-29", "Modification_Comment": "updated Mapping_Notes"}, {"Modification_Name": "CWE Content Team", "Modification_Organization": "MITRE", "Modification_Date": "2024-02-29", "Modification_Version": "4.14", "Modification_ReleaseDate": "2024-02-29", "Modification_Comment": "updated Demonstrative_Examples, References"}, {"Modification_Name": "CWE Content Team", "Modification_Organization": "MITRE", "Modification_Date": "2025-04-03", "Modification_Version": "4.17", "Modification_ReleaseDate": "2025-04-03", "Modification_Comment": "updated Relationships"}, {"Modification_Name": "CWE Content Team", "Modification_Organization": "MITRE", "Modification_Date": "2025-12-11", "Modification_Version": "4.19", "Modification_ReleaseDate": "2025-12-11", "Modification_Comment": "updated Relationships"}, {"Modification_Name": "CWE Content Team", "Modification_Organization": "MITRE", "Modification_Date": "2026-04-30", "Modification_Version": "4.20", "Modification_ReleaseDate": "2026-04-30", "Modification_Comment": "updated Observed_Examples"}], "Contribution": [{"@Type": "Content", "Contribution_Name": "Chen Chen, Rahul Kande, Jeyavijayan Rajendran", "Contribution_Organization": "Texas A&M University", "Contribution_Date": "2023-06-21", "Contribution_Comment": "suggested demonstrative example"}, {"@Type": "Content", "Contribution_Name": "Shaza Zeitouni, Mohamadreza Rostami, Ahmad-Reza Sadeghi", "Contribution_Organization": "Technical University of Darmstadt", "Contribution_Date": "2023-06-21", "Contribution_Comment": "suggested demonstrative example"}]}}
