The Fallacy of Secure Software
Often overlooked, key ingredients to the effective selection/use of these technologies:
1) People need to recognize the security context of the code they write.
2) People and organizations need to value writing more secure code...
Where there's a will, there's a way.
"Reason is the slave of the passions." - David Hume
I (and 2 colleagues) will be addressing this missing culture, value-set, philosophy in the very near future.
If you agree, I'd be eager to speak with you.
Joshua Corman - @joshcorman - jcorman@the451group.com
However, I don't agree that OpenSAMM/BSI-MM are the answers or even the questions.
You also appear to dislike Training??? You didn't give much attention to it.
Orgs need an OWASP ASVS L2B, L3, or L4 (depending on regulations/compliance and/or data classifications as mapped to risk) verification ONE-TIME-ONLY against a set of ESAPIs. These can be the OWASP ESAPIs. Let the experts from around the world at every organization put the framework components under their own Threat-Modeling, Code Review, and VAPT testing.
Also, Orgs don't need ANY person. They need at least one FTE that is dedicated (full-time job description) to security bug-fixes.
The training orgs need is simple: teach everyone who cares and has time how to read code and look for software weaknesses -- NOT vulnerabilities. Looking for vulnerabilities and producing "findings reports" is a waste of time and money. There are probably over 200k CVEs, but there are only 700 CWEs. Teach people how to read code and look for CWEs. Then fix the root-cause of those CWEs.
There's more, but in summary, I strongly believe you are scratching the surface and have missed a lot of critical pieces of the secure software puzzle.
This post seems to advocate OpenSIMM and BSI-MM as the methodologies to follow and suggests that these are Development Life Cycle methodologies. Seems that the author forgot to read the documents he is advocating. OpenSIMM is a score-card and is not academic by any stretch of the word as Clarke would suggest. There is not formal model there, no algorithm, no algebra, nothing one can perform analysis on. BSI-MM, again it's a guide, it's not a formal methodology by any stretch. Neither documents claim to be! Yet Clarke would have you believe otherwise.
Following standards is a STARTING point not the end point.
As Fallacies go – It is a gross fallacy to suggest that any organization that doesn't have software production as their primary business should be expected to have the expertise at the management level to assess the competency of a proposed software security group for their organization, let alone figure out whether what's being presented is actually going to work in real life.
Moreover what are these organizations doing taking ownership of software production in the first place? Do we build the cars that we drive? Or smash them in a wall to assess their crash safety?
This post gives organizations the false thinking that they can build secure applications by following starting guidelines that have NOTHING to do with software development life-cycle.
Any company that develops their own software which process / manages sensitive data must ensure such software is developed in a secure manner ... period! To use your phrasing... it is a gross fallacy to think that organisations will simply outsource all of their development activities because someone like you says they shouldn't do it themselves .. with no research, data or cost benefit information to support. So stick to your formal models and equations and leave real-world security to the professionals!
In short, Justin is correct, these frameworks are useful in helping organisations in determining what activities they 'could do' to help ensure software is developed and released in a secure manner.
Firstly - if you're a software security professional, this post has probably hit all of your buttons, as you've got your preconceptions about what would be the best approach for an organization to tackle the task of "securing" its software. I have my own preconceptions as well - we all do. Personally, I think all of the approaches are good ones, and an appropriate mix of these would be a good start in most cases.
Secondly - if you're reading anything more than "there is some handy stuff out there for organizations just getting serious about this" into this post, you're over thinking it. This post is solely intended to pre-arm folks who aren't software security people (or vendors) with some resources that can help them frame a question - "where would I even start with a secure software initiative?". We security folks like far too much to dictate from our high horses the "best" way to do things - but this is one of the cases where getting off the horse and talking to an organization is the best first step - it needs to be something they _can_ do in a _reasonable_ timeframe.
Thirdly - the SSG point is an interesting one. One of the key differences between BSIMM and OpenSAMM is the question of an SSG. BSIMM explicitly says you need one. OpenSAMM doesn't - it has the role of the SSG split across the activities. My inner security person says that a virtual team of folks working in a cooperative manner can do this. My inner consultant knows this doesn't work in practice.
The original BSIMM quite explicitly pointed all nine fingers at Fuzzing. The note on SSG importance is a bit funny in regards to BSIMM, because the studied organizations were basically selected based on the maturity of the SSG in the target group.
In fact, you managed to revisit probably every misunderstanding in relation to fuzzing. Because not everyone is necessarily into web-apps, I thought I would quickly review those.
Many people seem to think, especially in the web application domain, that code review provides better coverage over fuzzing. It definitely depends on what type of fuzzing you are comparing with. Similarly, it depends on what type of code auditing tool (or person) you are comparing with. There probably is a good reason why e.g. based on the BSIMM study everyone was using fuzzing, but only few had incorporated static analysis (i.e. code analysis). You can stare at a line of code for days, and not catch a bug. A fuzzer will detect it in a fraction of a second, with no false positives.
Even commenting that a fuzzer (tool) does not reach the level of completeness against a person conducting penetration tests is very far from truth. Actually, most skilled penetration testers use fuzzers to get better coverage. Manual testing almost never reaches any level of confidence in tests, except maybe in the simple space of _web_ application security analysis. A typical web application might process HTTP GET/POST messages with a small range of 10-20 parameters, and a few steps in the message dialogues. But immediately if you e.g. look at SOAP/XML-based applications, the complexity is exponentially higher even with simple interfaces. Auditing web applications could be somewhat similar to VoIP applications or Mobile applications, but again the threat scenarios are completely different.
In real product security practices you need to also look at other things than SQL injection flaws and other simple web-based attacks. Someone commented that SSG (Software Security Group, or product security team) might not be always needed, which could be true in a company only focused in developing simple web applications. But SSG definitely is a must in companies building complex network devices, game consoles/servers, mobile devices, telecommunication systems, and so on. Even in web applications when you are working with something more complex than a simple web shop, you need to look at so many other things than just application code review and test.
A side-note: Threat Modeling integrates perfectly with agile processes. And with that, so does fuzzing. In fact, I believe there are more programmers using fuzzing tools than there are security auditors using them. And as far as I know, the best threat models out there are also built by programmers, not by security experts.
Please check out "Rugged"
http://www.ruggedsoftware.org
Joshua Corman - @joshcorman - jcorman@the451group.com