Application security testing is the practice of evaluating software applications for security vulnerabilities through a combination of manual and automated techniques. For the CISSP exam, Domain 6 tests the conceptual differences between testing approaches, when each is appropriate, and how they fit into the security development lifecycle. The exam is particularly interested in the SAST vs DAST distinction and the concept of misuse case testing.

Static Application Security Testing (SAST)

Static Application Security Testing analyses source code, bytecode, or binary code without executing the application. SAST tools scan the codebase looking for patterns that are associated with security vulnerabilities: SQL query construction using string concatenation (potential SQL injection), hardcoded credentials, use of deprecated cryptographic functions, buffer arithmetic errors, and insecure direct object references.

SAST is a white box testing approach — it requires access to the source code and examines the application's internal structure. Because SAST does not execute the application, it can be run very early in the development lifecycle — even as code is being written, through IDE plugins that provide real-time feedback. This makes SAST a natural fit for the shift-left security philosophy: catching vulnerabilities at the earliest possible stage when they are cheapest to fix.

SAST advantages: it can analyse all code paths, including error conditions and rarely executed paths that would be hard to trigger in dynamic testing. It scales well with codebase size and can be fully automated in CI/CD pipelines.

SAST limitations: the primary weakness of SAST is false positives — the tool may flag code as vulnerable when it is not, because the tool cannot fully understand the application's runtime context. Additionally, SAST cannot detect runtime vulnerabilities that only manifest when the application interacts with specific environments, configurations, or external services.

For the exam: SAST = static analysis of source code without executing it. Can be run early in development. High false positive rate. Finds code-level vulnerabilities.