This is the second entry in a blog series that looks at each stage of an application security program’s maturity and outlines what the next steps are to move toward an advanced program.
We typically see organizations fall within one of these four stages of application security:
If you are in the baseline application security stage, you have most likely expanded the number of applications you are assessing, but probably still with a focus on business-critical applications.
You may have also expanded your testing techniques to move beyond manual pen testing to include dynamic analysis (DAST), for example. With this approach, a security team typically conducts these assessments only at the very end of the software development lifecycle (SDLC), right before going to production. Finding these flaws so late in the development process is very costly to fix (6X more costly than catching them early in the SDLC). In addition, development teams find this process cumbersome and a hindrance to their processes.
Shifting toward a more developer-friendly application security approach that addresses security-related code defects earlier in the development process will save you both time and money, and increase the chances of your program being adopted. In addition, this will make it easier for you to expand the landscape of applications you are securing. How do you make this leap? Start with developer engagement, move on to new testing techniques and focus on metrics to find out what’s working. Here are our recommended next steps:
Engage developers.
Your application security program affects the development team more so than any other team in the organization. And your application security program needs the development team’s support and participation more than any other department.
It’s important to both understand the development process and then work to integrate security into those existing processes. You’ll find more success if you engage developers early in your AppSec initiative, rather than handing them a fully developed plan and expecting them to get on board.
The development team can be a major ally in the creation of the program if you ask them the following questions:
- Can you describe our software development lifecycle?
- When do you currently assess the applications you are building for security?
- How often are they tested?
- Where do you think security assessments belong in the lifecycle?
- How can we best fit into your existing process?
- What are your biggest concerns about starting a program?
- What would be the best way to test our strategy once we agree on the process?
In addition, be prepared to answer the following questions:
- How will the assessment process fit into the current development lifecycle?
- How will this impact the development teams’ productivity?
- What training programs will be put in place to help the development team?
The last question is an important one. Do your developers know what to do with scanning results? Do they know how to avoid introducing the same vulnerabilities in the future? Probably not, considering even the top computer science programs do not require cybersecurity classes. Help your developers create more secure code faster with training and remediation coaching.
Implement multiple testing techniques (for example, static, dynamic, runtime).
There is no application security silver bullet. It is going to take more than one automated technique and manual processes to secure your applications. Only by gathering the strengths of multiple testing techniques along the entire application lifetime will you drive down application risk in your organization. Over the past 10 years, we have scanned 2 trillion-plus lines of code, and we consistently see that different testing types are better at uncovering different vulnerabilities, and that one testing type is not enough. For instance, the following are the top five vulnerability categories we found during dynamic testing in 18 months during 2015 and 2016:
- Information leakage
- Cryptographic issues
- Deployment configuration
- Encapsulation
- Cross-Site Scripting
Two of these were not in the top five found by static testing: Encapsulation (dynamic found in 39 percent of apps; static only in 22 percent) and Cross-Site Scripting (sixth on the static list). And one category – deployment configuration – was not found by static at all. Clearly, only running static scans would leave some significant vulnerabilities unidentified.
To move your program past the baseline stage, work to implement different assessment solutions into each phase of the application lifecycle, from inception to production.
Establish a plan for collecting and reporting metrics.
The ability to collect and report on metrics is important in terms of compliance with regulations, understanding the performance of your application security program, and ensuring that you’re reducing risk in the business.
Moving toward an advanced program
Once you’ve completed these steps, it’s time to start fully integrating testing into the SDLC, measuring and refining your program, and making sure you’re covering third-party applications and code. Get details on your next steps, and all the steps involved in building an application security program – including tips and advice from someone’s who’s been there – in our new guide, From Ad Hoc to Advanced Application Security: Your Path to a Mature AppSec Program.