Description
The product contains a component that cannot be updated or patched in order to remove vulnerabilities or significant bugs.
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" devices can be operated for decades. As a US task force report [REF-1197] notes, "the inability to update or replace equipment has both large and small health care delivery organizations struggle with numerous unsupported legacy systems that cannot easily be replaced (hardware, software, and operating systems) with large numbers of vulnerabilities and few modern 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.
Potential Impact
Confidentiality, Integrity, Access Control, Authentication, Authorization, Other
Gain Privileges or Assume Identity, Bypass Protection Mechanism, Execute Unauthorized Code or Commands, DoS: Crash, Exit, or Restart, Quality Degradation, Reduce Maintainability
Demonstrative Examples
The refrigerator has no means of patching and is hacked, becoming a spewer of email spam.The device automatically patches itself and provides considerable more protection against being hacked.module dmi_jtag(...)(...);
...
PassChkValid: begin
if(hashValid) begin
if(exp_hash == pass_hash) begin
pass_check = 1'b1;
end else begin
pass_check = 1'b0;
end
state_d = Idle;
end else begin
state_d = PassChkValid;
end
end
...
hmac hmac(
...
.key_i(256'h24e6fa2254c2ff632a41b...),
...
);
...
endmodulemodule dmi_jtag(...
) (
input logic [255:0] hmac_key_i,
input logic hmac_patch_en,
...
reg [255:0] hmac_key_reg;
...
);
...
always_ff @(posedge tck_i or negedge trst_ni) begin
...
if (hmac_patch_en)
hmac_key_reg <= hmac_key_i;
...
end
...
hmac hmac(
...
.key_i(hmac_key_reg),
...
);
...
endmoduleMitigations & Prevention
Specify requirements that each component should be updateable, including ROM, firmware, etc.
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.
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.
Implement the necessary functionality to allow each component to be updated.
Detection Methods
- Architecture or Design Review Moderate — 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.
Real-World CVE Examples
| CVE ID | Description |
|---|---|
| CVE-2022-34381 | Java-based SDK for TLS has an unmaintained third-party component with a critical vulnerability |
| CVE-2020-9054 | 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-sup |
Related Weaknesses
Frequently Asked Questions
What is CWE-1329?
CWE-1329 (Reliance on Component That is Not Updateable) is a software weakness identified by MITRE's Common Weakness Enumeration. It is classified as a Base-level weakness. The product contains a component that cannot be updated or patched in order to remove vulnerabilities or significant bugs.
How can CWE-1329 be exploited?
Attackers can exploit CWE-1329 (Reliance on Component That is Not Updateable) to gain privileges or assume identity, bypass protection mechanism, execute unauthorized code or commands, dos: crash, exit, or restart, quality degradation, reduce maintainability. This weakness is typically introduced during the Requirements, Architecture and Design, Architecture and Design, Implementation phase of software development.
How do I prevent CWE-1329?
Key mitigations include: Specify requirements that each component should be updateable, including ROM, firmware, etc.
What is the severity of CWE-1329?
CWE-1329 is classified as a Base-level weakness (Medium abstraction). It has been observed in 2 real-world CVEs.