Application security testing is the set of methods used to evaluate software for security vulnerabilities at different stages of the development lifecycle. Domain 8 of the CISSP exam covers four primary testing approaches — SAST, DAST, IAST, and Software Composition Analysis — and tests candidates on their distinct characteristics, where they fit in the development pipeline, and how they complement each other. This builds on Domain 6's coverage of testing from an assessment perspective; here the focus is on integration into the development process.

The Application Security Testing Landscape

No single testing method can find all vulnerabilities. Effective application security programmes combine multiple testing approaches because each method has blind spots that others cover.

SAST finds code-level vulnerabilities early but cannot see runtime behaviour. DAST tests runtime behaviour but cannot see the code that causes it. IAST provides runtime instrumentation that combines both perspectives. SCA addresses the risk from third-party components that none of the other methods fully cover.

The exam tests whether candidates understand which method to recommend given a specific scenario, and why. The answer depends on: the stage of development, whether source code is available, whether the application is running, and whether the concern is first-party code or third-party dependencies.

Static Application Security Testing (SAST)

SAST analyses source code, bytecode, or binary artefacts without executing the application. It searches for patterns associated with security vulnerabilities by examining the code's structure, data flows, and control flows.

SAST works by building a model of the application's code (Abstract Syntax Tree, control flow graph, data flow graph) and applying security rules to that model. For example, a data flow analysis might track untrusted user input from an HTTP parameter through the application's processing logic to a database query, flagging it if the input is not properly sanitised before use in the query (potential SQL injection).