Last updated at Wed, 02 Oct 2019 20:46:58 GMT
Your website is the face of your company. It’s the first impression customers have of your identity and brand, and as such, it should be both exciting and rewarding. Customers access your products and services through that virtual front door, while your DevOps team is behind the scenes, focused on quality, time-to-market, and staying ahead of trends. Speed is the name of the game. Customers demand applications that are always available and websites that load instantly.
But your web presence has a huge target on its back. Bad actors are increasingly turning their attention to applications, as they know that pressure to quickly release new apps and enhancements often pushes security to the background. After all, security usually takes time, and that’s the one thing that is at a premium. But when it’s overlooked, the consequences could be serious—the cost to an organization each hour an app is down averages $500,000, according to IDC.
Because of this, security and DevOps teams are (seemingly) left with two options: sacrifice speed for security, or sacrifice security for speed. However, we think there are better ways forward.
Option 1: Design security into the application
This sounds like a good idea, but it’s not usually that simple. First, web applications operate in a very complex environment with web servers, CSS on the client, web app frameworks, and a multitude of languages and databases. Any one of these might have its own vulnerabilities. When the app actually runs in this environment, the complex interaction among all the components can bring to light new, unknown vulnerabilities. Additionally, short release cycles don’t leave much time for testing, so some opt for doing static application security testing (SAST), since it analyzes the code as written. While a good start, it won’t uncover the unexpected, unwanted behavior that happens when an app is run in a complex runtime environment.
Option 2: Extend the release cycle
This is a non-starter. Already facing tight schedules, developers generally equate security with “slow” and see it as a stumbling block that could add days or weeks to the cycle. Security teams, in turn, view agile development as risky, especially when developers reuse vulnerability-filled open source code. A more productive approach than extending release cycles would address the need for DevOps and security teams to work more collaboratively while increasing their collective knowledge of application security best practices.
Option 3: Focus on DAST—the most bang for your buck
Dynamic application security testing (DAST) is a tool for scanning an application in the running environment. It is used during the build and test phases and can carry on into delivery and production phases. There are four key points to consider here:
1. Bridge the gap
DAST can begin to close the gap between developers and the security team, demonstrating the attack and providing a proof-of-exploit for every risk uncovered to give developers valuable context. DAST empowers developers to better visualize security risks, involving them further in the process. Since it takes an average of 38 days to fix a web application vulnerability, it’s important to assure developers that their efforts will not be in vain.
2. Shift left
The earlier in the SDLC a security issue is found, the lower the cost is to remediate it. So, when it comes to testing, the earlier in the process, the better. DAST can take place as soon as the app is ready to be run in an HTTP environment. It simulates attacker behavior and finds issues that occur because the app is in a runtime environment.
3. Start early
DAST is easy to integrate into the CI/CD process as early as the build. In agile shops, this may be as soon as just hours after a new software dev cycle begins. This lets developers see problems early on and fix them at a much lower cost.
4. Think like a hacker
DAST finds issues that represent real risk to the organization. While SAST might uncover a multitude of vulnerabilities, there is no guarantee they will actually pose a threat. DAST, on the other hand, takes an attacker’s point of view and probes for vulnerabilities that truly pose a risk.
Getting started with DAST
It’s important to choose a DAST solution wisely. Basic requirements include the following:
- Able to scan both internal and public-facing apps.
- A well-documented API and integration with CI tools such as Jenkins and Azure DevOps to automatically determine whether the build passes configurable quality gates.
- Integration with ticketing tools like Jira, so vulnerabilities can be directly exported for immediate developer visibility along with context such as issue type and severity.
- Reporting capabilities, not just for developers to be able to reproduce attacks and get remediation guidance, but also for management and to demonstrate regulatory compliance.
- The ability to keep up with changes in the environment. A DAST solution needs to be able to keep pace with newer advances in application technology, such as the rise of single-page applications, without tedious updates or tuning.
It’s too much to hope that security and development teams will always be on the same page. After all, they have different cultures, diverse motivations, and differing timescales. But with DAST, you can go a long way toward bridging the gap and creating a shared sense of security ownership. Security can move faster, and development can deliver more secure apps.