1403
[REF-522]Sean Barnum and Michael Gegick. "Failing Securely". 2005 December 5. < https://
web.archive.org/web/20221017053210/https://www.cisa.gov/uscert/bsi/articles/knowledge/
principles/failing-securely >.2023-04-07.
CWE-637: Unnecessary Complexity in Protection Mechanism (Not Using
'Economy of Mechanism')
Weakness ID : 637
Structure : Simple
Abstraction : Class
Description
The product uses a more complex mechanism than necessary, which could lead to resultant
weaknesses when the mechanism is not correctly understood, modeled, configured, implemented,
or used.
Extended Description
Security mechanisms should be as simple as possible. Complex security mechanisms may
engender partial implementations and compatibility problems, with resulting mismatches in
assumptions and implemented security. A corollary of this principle is that data specifications
should be as simple as possible, because complex data specifications result in complex validation
code. Complex tasks and systems may also need to be guarded by complex security checks, so
simple systems should be preferred.
Relationships
The table(s) below shows the weaknesses and high level categories that are related to this
weakness. These relationships are defined as ChildOf, ParentOf, MemberOr and give insight to
similar items that may exist at higher and lower levels of abstraction. In addition, relationships such
as PeerOf and CanAlsoBe are defined to show similar weaknesses that may want to be explored.
Relevant to the view "Research Concepts" (CWE-1000)
Nature Type ID Name Page
ChildOf 657 Violation of Secure Design Principles 1446
Weakness Ordinalities
Primary :
Applicable Platforms
Language : Not Language-Specific (Prevalence = Undetermined)
Alternate Terms
Unnecessary Complexity :
Common Consequences
Scope Impact Likelihood
Other Other
Potential Mitigations
Phase: Architecture and Design
Avoid complex security mechanisms when simpler ones would meet requirements. Avoid
complex data models, and unnecessarily complex operations. Adopt architectures that
provide guarantees, simplify understanding through elegance and abstraction, and that can be
implemented similarly. Modularize, isolate and do not trust complex code, and apply other secure
programming principles on these modules (e.g., least privilege) to mitigate vulnerabilities.
CWE Version 4.14
CWE-638: Not Using Complete Mediation
CWE-638: Not Using Complete Mediation