Seven Steps To Software Security - Updated
Seven Steps To Software Security - Updated
Seven steps to
software security
Business white paper | Seven steps to software security
1, 2
HP 2012 Cyber Security Risk Report, March 2013
3
“ The Economic Impacts of Inadequate
Infrastructure for Software Testing,” National
Institute of Standards & Technology
2
Business white paper | Seven steps to software security
Figure 1. Evaluation
Regardless of your approach, the plan should address three elements: (1) the software security
infrastructure that surrounds each software development project; (2) specific security activities
each project team chooses to undertake; and (3) how you will manage vulnerabilities that are
found. The table in figure 2 provides example elements of a plan.
3
Business white paper | Seven steps to software security
Phase two of threat analysis consists of understanding the application itself and the dangers
it faces from attackers. Organizations should develop a high-level model of the application’s
components and dataflow paths. The application’s attack surface should be mapped, identifying
interfaces that accept input from users or interact with other systems. Teams should note any
points on the attack surface that allow an exploit to compromise the integrity, availability,
or confidentiality of an asset. Non-critical applications stored on the same server as critical
applications must also be considered, as breaches of the former can also impact the latter.
Finally, rank the threats based on importance of the asset affected and the likelihood of exploit.
This threat analysis exercise, while simpler than a full blown risk analysis, still may require a
high level of expertise about the application and how attackers work. However, it does not need
to be precise, and the return can be substantial in that it focuses efforts on the most important
areas without a lot of waste. Of course, not even the most thorough threat analysis can prevent
the introduction of security vulnerabilities during development, which leads us to step 3.
4
Business white paper | Seven steps to software security
Security source code analysis embedded in developer environments, such as Microsoft Visual
DevStudio and Eclipse, can also serve as basic and ongoing educational tools for developers.
These tools provide feedback at the point the error is introduced, allowing for a less costly fix
and a more concrete learning experience. Below is a list of key capabilities required for effective
automated security source code tools:
There is no easy answer to testing for security. The most practical approach, however, is
not to rely upon testing to find the vulnerabilities. Testing should primarily verify that the
vulnerabilities found in code review have been eliminated.
This “final check” gate has the advantage that it is simple to understand and raises the visibility
of security issues before release. A downside is that a milestone so late in the development
cycle does not provide adequate time to adjust for security defects found in the code.
5
Business white paper | Seven steps to software security
Obviously, a key question is what criteria will be used to judge whether the software is fit to
pass through the security gate. A practical criterion would be an audit of the code. A code review
gate—whether it is required during active development, testing, or as a last check before
releasing the software to production—typically discovers significant numbers of security
vulnerabilities. As well, dynamically scanning the application in its running state, as an attacker
would, can also be an effective security gate. The important thing is to test the application for
security before it is deployed.
As the organization’s secure development processes mature, the criteria can expand to require
specific steps completed in detail and discovered issues remedied; that is, threat analysis was
performed, code reviews were conducted and issues uncovered were mitigated, security testing
was done, no other serious vulnerabilities were found, and minor vulnerabilities were corrected.
This more stringent gate may also contain a specialized security audit via independent security
experts before declaring the application “production ready.”
Step 6: Measure
Organizations should measure the success of their security activities so that the process can
be improved to meet changing requirements. Software security is still an emerging field—as
are the metrics that judge the effectiveness of activities within that field. However, there are
many activities that can and should be measured to provide insight into the state of software
security for an organization or project. Organizations can measure adherence to the security
process as it was designed, or measure the success of the security process as it is implemented.
For example, Microsoft measures the effectiveness of their SDLC by counting the number of
security bulletins within the first twelve months following a release (see figure 3). While the
Microsoft metric is a trailing metric, measures taken during development can provide sufficient
time to allow remediation of vulnerabilities before deployment. These metrics include tracking
measures such as vulnerabilities found per category, by severity, and over time. For example,
one project may introduce buffer overflow or SQL injection errors more frequently than another,
signaling a candidate for additional education. Audit coverage and history, vulnerability aging,
and even composite risk measures are possible. The key is to begin collecting data early on to
create a baseline during development.
Critical = 3
Low = 3
3 3
Medium = 1 1
9
High = 9
6
Business white paper | Seven steps to software security
Pluto Orion
100
75
Vulnerabilities
25
0
Dec 27 Dec 30 Jan 02 Jan 05 Jan 08
Step 7: Educate
After deciding what security measures will be implemented, the most crucial issue is to
educate the key stakeholders so they can effectively implement the security activities. Even
with training, developers are not likely to become security experts because they have other
pressing responsibilities and because of the complexity of becoming a security expert in
general. Typically, some group or selected individuals must be assigned to the role of security
“leads.” They may be individuals who already have an interest in security, individuals who are
specifically trained in security, or individuals explicitly hired to fill that role. These experts will
be responsible for implementing the security plan from beginning to end and are critical to its
success. The presence of security experts, however, does not relieve others of the responsibility
for security. Security must be the responsibility of every member of the organization, even
when starting small. Without full participation, no security plan is likely to succeed.
However, because individuals cannot be responsible for what they don’t understand, education
is key. To understand security requires knowing a lot of specific details. Developers must
understand how hackers think, what makes functions vulnerable, and how many bits a session
ID should be for a site that receives seven million hits a day, and on and on.
Organizations cannot make every member of each architecture, development, quality assurance,
and operations team a security expert, so how can security be improved? The security plan for
responding to vulnerabilities suggests developing internal best practices. These are excellent
security training resources for new and existing engineers. What better source of critical mistakes
to avoid than those that have already been made? Leveraging internally developed best practices
as educational tools provides targeted security knowledge with proven relevancy.
Consider sending key individuals in the development life cycle to training sessions or bringing a
security expert in-house to provide onsite training. Money and time invested in training are well
spent, especially within the context of the previous six steps. Ultimately, the solution is to make
security a mindset that pervades the development group. Everyone should be thinking about
what could go wrong each time they design a feature, produce a build, or write a line of code.
Each should ask, “how could an attacker take advantage of what I am doing?” If, at every step,
everyone is thinking about what could go wrong, security will improve.
7
Business white paper | Seven steps to software security
Conclusions
Software security is a serious problem. To mitigate the risks, software development
organizations must start thinking about security as a part of every step in the total software
development life cycle. Development teams can utilize a practical, seven-step plan to deliver
more secure software:
1. Evaluate the current state of software security and create a plan for dealing with it
throughout the development life cycle.
2. Specify the risks and threats to the software so they can be eliminated before they
are introduced.
3. Build a gate to prevent applications with vulnerabilities from going into production.
4. Review the code for security vulnerabilities introduced during development.
5. Test the application for vulnerabilities in addition to functional testing.
6. Measure the success of the security plan so that the process can be continually improved.
7. Educate stakeholders about security so they can implement the security plan.
Any development organization can implement this security plan and begin to receive a return on
their efforts within a minimal period of time. The key is to start now.
Learn more at
hp.com/go/fortify
© Copyright 2013 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. The only
warranties for HP products and services are set forth in the express warranty statements accompanying such products and services. Nothing herein
should be construed as constituting an additional warranty. HP shall not be liable for technical or editorial errors or omissions contained herein.
Microsoft is a U.S. registered trademark of Microsoft Corporation.
4AA4-6504ENW, September 2013, Rev. 1