Defining Security as a Business Requirement - Following the White Rabbit Blog -
Defining Security as a Business Requirement

This post is a follow-up to the previous one on QA: Defect vs. Vulnerability.  All the highly-intelligent responses I received got me thinking further, and so here I present my additional thoughts.

This may not be revolutionary - but given the response I received regarding the terminology difference between defect and vulnerability I think the only logical conclusion we can reach is that if security is not a foundational business requirement, we're sunk.

To expand on this point a little more I think it's important to follow non-technical critical-thinking here.  Anything that does not make it into the functional specification of an application [web or otherwise] is an afterthought.  It has been conclusively [and repeatedly] proven that anything that is not "baked in" as a requirement is nearly impossible to fix later on, as an after-thought.  So we're presented with a puzzler.  Security must be a business-level requirement.  So how then does one translate vulnerabilities into a business requirement, sanely?  Simply stating "... the application shall be free of unintended design flaws and security vulnerabilities" is like asking an architect to build a structure that will withstand every known (and unknown) possible attack - it's simply illogical.

Strangely, program leads that manage these large-scale web applications at the heart of nearly every major breach want concise, identified things to not put into the code... but since that list is a moving target the security team gets penalized for the nature of security itself.  This is the reason why black-listing input is a losing proposition... you're always going to be in an arms race with the bad guys... and you'll never win.

I've heard some recent conversations hit the wire around using the CWE Top 25 or some other list as a definitive list of coding errors to avoid in web applications but I'm not sure if that will actually solve the problem.  The problem with this approach is and will be that these lists are exclusionary measures.  These lists illustrate what we must exclude to be [more] secure.  Turning it around and making statements like validate all input makes little more sense, especially given that input validation must be defined in the context of the situation, and there is never a one-size-fits-all answer.  To illustrate the point further - input validation may mean excluding certain character sets/patterns and pre-defining acceptable input options ... but this does not account for things like free-form input or other use-case specific examples.

In the end, the crux of the problem lies in the nature of security vulnerabilities.  Security vulnerabilities are a moving target and although they can be loosely defined and lumpted into Top 7/10/25 lists it is not logical to consider these lists complete or even functional for designing software.  Will a web application be secure if it follows the CWE Top 25 and addresses those issues?  What about the OWASP Top 10?  I don't think anyone has that answer, or at least is willing to stake their reputation on it.

So back to defining security as a business-level requirement... can it be done?  Can one clearly articulate requirements to secure data/transactions/processes/whatever *before* the technologists get involved; meaning, before the means to execution are defined?  I will leave that up for debate.


Posted 02-05-2009 4:53 AM by RafalLos

Add a Comment

(required)  
(optional)
(required)  
Remember Me?

Type the numbers and letters above: