Insecure design and architectural flaws are a new category of risks for 2021, and it is crucial to move beyond “shift-left” in the coding space to pre-code activities critical for the principles of Secure by Design. Notable Common Weakness Enumerations (CWEs) include CWE-209, CWE-256, CWE-501, and CWE-522.
Insecure design represents “missing or ineffective control design” and is different from insecure implementation. Secure design is a culture and methodology that evaluates threats and ensures that code is robustly designed and tested to prevent known attack methods. A secure development lifecycle, secure design patterns, paved road methodology, secured component library, tooling, and threat modeling are required for secure software development.
The lack of business risk profiling inherent in the software or system being developed is one of the factors contributing to insecure design. To prevent insecure design, AppSec professionals should be used to evaluate and design security and privacy-related controls, and a library of secure design patterns should be established.
Threat modeling should be used for critical authentication, access control, business logic, and key flows. Security language and controls should be integrated into user stories, and plausibility checks should be integrated at each tier of the application. Finally, resource consumption by user or service should be limited, and tier layers on the system and network layers should be segregated depending on the exposure and protection needs.
To further enhance the security of your application and protect against insecure design, we suggest leveraging services like INFRA www.infrascan.net and check.website.