BITS, the technology policy division of the Financial Services Roundtable, an industry body representing the US financial services industry, has published a Software Assurance Framework.
The 50-page guidance document describes an outline of recommended components of what they describe as a "mature, strategic program for secure software development" for software used within the US financial services industry. The framework was a collaborative effort that involved several financial services companies in conjunction with Microsoft, and it references the Microsoft-sponsored Forrester Consulting research which indicated that the use of a prescriptive secure software development lifecycle achieves the greatest return on investment (see also the similar Aberdeen Group research).
This is not a hands-on "how to" for software architects, developers, testers or operational staff, but instead describes a framework of activities that contribute to the specification, production, deployment and operation of secure software throughout the development lifecycle. In that respect, the comparable documents to refer to are BSIMM, MS SDL and Open SAMM, and indeed these are referenced in the BITS framework. Some organisations also build their software assurance efforts around the Capability Maturity Model Integration (CMMI).
So what does BITS consider to be the key components of a software assurance framework? Eight are defined and explained:
- Education & Training
- Security Software Assurance Development Standard
- Threat Modeling
- Coding Practices
- Security Testing
- Pre-Implementation Practices
- Software Assurance Documentation Archive Best Practices
- Post-Implementation Phase Controls
There is of course considerable overlap with the references mentioned above which describe actual practices in place, how Microsoft undertakes secure SDLC and a maturity model for software assurance respectively. I have tried to indicate below how the BITS key components broadly map to Open SAMM:
| BITS Component |
SAMM v1.0 Business Function: Security Practice |
| Education & Training |
Governance: Education & Guidance |
| Security Software Assurance Development Standard |
Governance: Strategy & Metrics Governance: Policy & Compliance Construction: Security Requirements Construction: Secure Architecture |
| Threat Modeling |
Construction: Threat Assessment |
| Coding Practices |
Governance: Policy & Compliance Governance: Education & Guidance |
| Security Testing |
Verification: Design Review Verification: Code Review Verification: Security Testing |
| Pre-Implementation Practices |
Deployment: Operational Enablement |
| Software Assurance Documentation Archive Best Practices |
(Through all above security practices) |
| Post-Implementation Phase Controls |
Deployment: Vulnerability Management Deployment: Environmental Hardening Deployment: Operational Enablement |
So quite a lot of overlap. There is an existing mapping of Open SAMM to BSIMM activities which could be used to extend the above mapping onto BSIMM. As the BITS framework has been developed in conjunction with Microsoft, I expected to see a much closer relationship with MS SDL, and yes this is the case.
| BITS Component |
MS SDL v5.1 Phase: Process |
| Education & Training |
Training: Core Security Training |
| Security Software Assurance Development Standard |
Requirements: Establish Security Requirements Requirements: Create Quality gates/Bug Bars Requirements: Security & Privacy Risk Assessment Design: Establish Design Requirements |
| Threat Modeling |
Design: Analyze Attack Surface Design: Threat Modelling |
| Coding Practices |
Implementation: Use Approved Tools Implementation: Deprecate Unsafe Functions |
| Security Testing |
Implementation: Static Analysis Verification: Dynamic Analysis Verification: Fuzz Testing Verification: Attack Surface Review |
| Pre-Implementation Practices |
Release: Incident Response Plan Release: Final Security Review |
| Software Assurance Documentation Archive Best Practices |
Release: Release Archive |
| Post-Implementation Phase Controls |
Response: Execute Incident Response Plan |
There isn't a direct one-to-one mapping here, but I hope the above help navigate the document if you use Open SAMM or MS SDL and want to delve into another source of ideas for secure software development lifecycles. Although the BITS framework might be somewhat heavyweight for some non-financial services organisations, especially on the documentation front, it is perhaps an easier starting point than the closely related MS SDL, to begin working on building security into development (and acquisition) processes. Take what suits, makes sense and fits your own organisation's type of applications and tolerance of risk.
Most of the content will be relevant, and since it is spelt out in reasonable detail, this could be very helpful. Some notable nuggets deeper in the document are:
- pp2-3 "teaching techniques of good design and their subsequent use can result in software secure not just against known attacks, but also against unknown attacks and attacks yet to come"
- p20 "Security defects are "defects", not just "security defects"
- p35 Security vulnerabilities identified in applications in production .... should not be treated as software defects, but as one part of the company's incident response process".
And on page 36 in the section relating to emerging threats in the post-implementation phase controls, there is a comment relating to the OWASP Top Ten and CWE/SANS Top 25 which seems out of kilter with the rest of the framework's text. The document states these as being valuable sources of information but "both represent an earlier generation of software security intelligence". I am not sure each of those sources set out to define the only threats to consider, and are instead a way of introducing the concepts to less-knowledgeable groups and encourage reading of the much deeper related materials. But perhaps this is more of a comment about PCIDDSS which specifically mentions these two sources. I wonder.
As you can see, worth the read.