CWE-657 is the broad class for products that violate well-established principles of secure design. It does not name one bug. It names a root cause that can introduce other weaknesses or make it easier for developers to introduce them during implementation. Every team that designs systems, from a single API to a firmware stack, is in scope.
How it happens
MITRE makes a point worth keeping in mind: because code is centered around design, design problems can be resource-intensive to fix. A coding mistake is a patch. A design mistake can mean rebuilding a component.
The record links four CVEs as examples of what a violated design principle looks like:
- CVE-2019-6260: a Baseboard Management Controller with bus bridges that do not require authentication for arbitrary read and write access to its physical address space.
- CVE-2007-5277: the failure of connection attempts in a web browser resets DNS pin restrictions, so an attacker can rebind a domain name to a different IP address and bypass the same origin policy.
- CVE-2006-7142: a hard-coded cryptographic key stored in an executable program.
- CVE-2007-0408: a server that does not properly validate client certificates when reusing cached connections.
Each one is a decision made at the architecture level: skip authentication on an internal bus, reset a pin on error, ship one key to everyone, trust a cached connection.
What an attacker gains
The record's consequence is listed only as "Other", which fits: the impact depends entirely on which principle was broken. The examples above range from unauthenticated hardware access to a same origin policy bypass.
How to find it
The record lists no detection methods. Design flaws rarely show up in a scanner. Use threat modeling and architecture review before code is written, and check designs against known principles: least privilege, separation of privilege, fail-safe defaults, minimizing exposed interfaces, and not relying on secrecy. Then look for weaknesses in the neighboring classes that this one tends to cause.
How to fix it
MITRE lists no formal mitigations on this entry, so the guidance here is practical. Fix design flaws at the design level: patching the symptom leaves the cause. Add a security review step to design documents. When a component fails, ask which principle it broke and look for other places that make the same choice. Where a flaw is in a third party component, track it as you would any vulnerability and plan the replacement.
Quick check
Why are design flaws costly?
MITRE notes that code is centered around design, so design problems can be resource-intensive to fix.
Can a scanner reliably find this class?
Not on its own. Design review and threat modeling find these earlier.