A06: Insecure Design
Insecure Design refers to flaws in an application’s architecture or logic that create security weaknesses, making it vulnerable to attacks. Unlike implementation bugs, these issues stem from poor security planning, lack of threat modeling, or failing to enforce security principles at the design stage. Insecure design can lead to data exposure, authentication bypasses, privilege escalation, and business logic abuses. No amount of clean code fixes a workflow that was never designed to be safe.
Common Vulnerabilities:
- Lack of Threat Modeling and Security Review in the Development Process
- Flawed Business Logic That Enables Abuses (e.g., bypassing payment verification)
- Missing Anti-Automation Controls (No Rate Limiting, Bypassable CAPTCHA)
- Unbounded Resource Consumption by Design, Enabling Denial of Service
- Inadequate Data Protection Strategies (e.g., storing sensitive data in plaintext)
- Improper Separation of Privileges or Over-Permissioned Accounts
- Unrestricted File Upload Accepted by Design
- Trusting Client-Side Enforcement of Server-Side Rules
To mitigate these risks, applications should incorporate security best practices from the design phase, enforce strong authentication and authorization controls, apply the principle of least privilege, conduct threat modeling, and implement secure coding guidelines. Design in limits — request quotas, resource ceilings, and abuse detection — before an attacker discovers their absence. Regular security reviews and testing should be performed to identify and fix architectural flaws before deployment.
In this section
- CAPTCHA BypassA CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) is designed to…
- Lack Of Rate LimitingLack of Rate Limiting (also known as insufficient request throttling) is a vulnerability where a web…
- Denial Of ServiceA Denial of Service (DoS) attack aims to render a network or application resource unavailable to its intended users.
Last updated