There are many basic architectural and design mistakes that can compromise the security of a system:
- Missing something important in security features like access control or auditing, privacy and compliance requirements;
- Technical mistakes in understanding and implementing defence-against-the-dark-arts security stuff like crypto, managing secrets and session management (you didn’t know enough to do something or to do it right);
- Misunderstanding architectural responsibilities and trust zones, like relying on client-side validation, or “I thought that the data was already sanitized”;
- Leaving the attack surface bigger than it has to be – because most developers don’t understand what a system’s attack surface is, or know that they need to watch out when they change it;
- Allowing access by default, so when an error happens or somebody forgets to add the right check in the right place, the doors and windows are left open and the bad guys can walk right in;
- Choosing an insecure development platform or technology stack or framework or API and inheriting somebody else’s design and coding mistakes;
- Making stupid mistakes in business workflows that allow attackers to bypass checks and limits and steal money or steal information.
Learning about Secure Software Design
If you want to build a secure system, you need to understand secure design.
- TA Associates announces majority investment in software security firm Arxan (boston.com)
- 95% Of Mobile Devices Have No Security Software Installed – Juniper (misco.co.uk)
- New software gives first responders an edge in school security (hispanicbusiness.com)
- American Liberty PAC: NSA paid companies $250 million for covert access into security software programs (politicalcrazyness.tumblr.com)