Domain 8: Software Development Security Module 60 of 84

Software Security Effectiveness Assessment

CISSP Domain 8 — Software Development Security A — Secure Development 9–11 minutes

Measuring What Matters in Application Security

An organization runs 12 different security testing tools across its development pipeline. The dashboard shows green across the board. Six weeks later, an external researcher reports a critical vulnerability through the bug bounty program. The vulnerability was in a code path that none of the 12 tools tested.

Security testing tools are only as effective as their coverage and configuration. A tool that runs without finding anything is not proof of security — it may be proof that nobody configured it to look in the right places.

This module covers CISSP exam objective 8.3: assess the effectiveness of software security. The exam tests whether you can select the right assessment method for a given situation, understand the strengths and limitations of each approach, and govern a testing program that produces meaningful results.


Static Application Security Testing (SAST)

SAST analyzes source code, bytecode, or binary code without executing the application. It examines the code itself for patterns that indicate vulnerabilities.

  • When it runs — During development, at build time, or as part of code review. SAST works on the code before it is deployed.
  • What it finds — Injection flaws, buffer overflows, hardcoded credentials, insecure cryptographic usage, and other patterns identifiable from code structure.
  • Strengths — Full code coverage (can analyze every code path), finds issues early when fixes are cheapest, integrates into CI/CD pipelines.
  • Limitations — High false positive rates require human triage. Cannot detect runtime issues, configuration errors, or authentication logic flaws that depend on application state. Language-specific tooling may not cover all frameworks.

Dynamic Application Security Testing (DAST)

DAST tests the running application from the outside, simulating attacks against exposed interfaces without access to the source code.

  • When it runs — Against a deployed application (staging or production). The application must be running and accessible.
  • What it finds — Cross-site scripting (XSS), SQL injection, authentication flaws, server misconfigurations, and other vulnerabilities visible through the application’s external interfaces.
  • Strengths — Tests the application as an attacker would see it, including runtime behavior and configuration. Language-agnostic since it interacts with the application’s output, not its source code.
  • Limitations — Cannot test code paths that are not reachable through the interface. May miss vulnerabilities behind authentication barriers unless properly configured with credentials. Point-in-time results; the application must be retested after changes.

Interactive Application Security Testing (IAST)

IAST combines elements of SAST and DAST. An agent deployed within the application monitors code execution in real time during testing or normal usage.

  • When it runs — During functional testing, QA cycles, or in staging environments. The IAST agent runs inside the application while it processes test traffic.
  • What it finds — Vulnerabilities identified through actual code execution paths, including tainted data flow from input to output.
  • Strengths — Lower false positive rates than SAST because findings are confirmed through runtime execution. Can identify the exact line of code responsible for a vulnerability.
  • Limitations — Only tests code paths exercised during testing. Requires instrumentation that may affect performance. Coverage depends on the quality of functional tests driving the application.

Software Composition Analysis (SCA)

SCA identifies third-party and open-source components within an application and maps them against known vulnerability databases.

  • When it runs — At build time and continuously against the component inventory.
  • What it finds — Known vulnerabilities in dependencies (CVEs), outdated library versions, and license compliance issues.
  • Strengths — Addresses the reality that most application code comes from third-party libraries. Integrates with SBOM initiatives (covered in Module 59).
  • Limitations — Only detects known vulnerabilities. Zero-day flaws in dependencies will not appear until a CVE is published. Cannot assess how the application uses the vulnerable component, which affects actual exploitability.

Fuzz Testing

Fuzz testing (fuzzing) sends random, unexpected, or malformed data to application inputs and monitors for crashes, hangs, or unexpected behavior.

  • When it runs — During testing phases, often as an automated process that runs for extended periods.
  • What it finds — Buffer overflows, memory corruption, unhandled exceptions, and input validation failures that deterministic testing misses.
  • Strengths — Discovers edge cases that developers and testers would never think to try. Particularly effective for finding memory safety and parsing vulnerabilities.
  • Limitations — Random by nature, so coverage is unpredictable. Findings require investigation to determine exploitability. Can generate large volumes of crashes that need triage.

Code Review

Code review is human examination of source code, either manual or tool-assisted, specifically looking for security defects.

Manual Code Review

  • Performed by experienced reviewers who understand both the application context and common vulnerability patterns
  • Effective at finding business logic flaws, authorization bypasses, and complex vulnerabilities that automated tools miss
  • Time-intensive and does not scale to large codebases without prioritization

Automated Code Review

  • Tool-assisted review that flags potential issues for human examination
  • Scales across the entire codebase and provides consistent coverage
  • Cannot understand business context or complex authorization logic

The most effective approach combines both: automated tools for broad coverage and pattern detection, manual review for high-risk components and business logic.


Application Penetration Testing

Penetration testing of applications simulates real-world attacks by skilled testers who combine automated tools with manual exploitation techniques.

  • Scope — Defined by the organization and may include the application, its APIs, supporting infrastructure, and integration points.
  • Timing — Typically conducted before major releases, after significant changes, or on a periodic schedule. Not a substitute for continuous security testing.
  • Value — Validates that other testing methods caught what they should have. Identifies vulnerabilities that require human creativity to discover, including chained attacks and business logic flaws.
  • Governance — Rules of engagement, scope, timing, and reporting requirements must be defined before testing begins. Results should be tracked through remediation to closure.

Runtime Application Self-Protection (RASP)

RASP is a security technology embedded within the application runtime that monitors and blocks attacks in real time.

  • How it works — RASP agents run inside the application and have visibility into the application’s context, data flow, and execution. When an attack is detected, RASP can block the request, terminate the session, or alert security.
  • Strengths — Context-aware protection that understands the application’s behavior. Can block zero-day attacks based on anomalous patterns rather than known signatures.
  • Limitations — Performance overhead. Dependency on the application runtime. Not a replacement for fixing vulnerabilities — it is a compensating control that protects while fixes are developed.

Security Metrics for Software

Effective security assessment requires metrics that tell the organization whether its software security program is improving, stagnating, or declining.

  • Mean time to remediate — How long does it take from vulnerability discovery to deployed fix? Decreasing time indicates process improvement.
  • Vulnerability density — Number of vulnerabilities per thousand lines of code. Tracked over time to measure whether secure coding practices are taking hold.
  • Escape rate — Percentage of vulnerabilities that reach production. A decreasing escape rate means pre-production testing is catching more issues.
  • False positive rate — Percentage of tool findings that are not actual vulnerabilities. High false positive rates erode developer trust and lead to ignored findings.
  • Coverage metrics — What percentage of applications have been assessed? What percentage of code paths are covered by testing?

Maturity Models: BSIMM and SAMM

Maturity models provide a framework for measuring and improving an organization’s software security program over time.

BSIMM (Building Security In Maturity Model)

A descriptive model based on observation of real-world software security initiatives. BSIMM documents what organizations are actually doing, organized into 12 practices across 4 domains: governance, intelligence, SSDL touchpoints, and deployment. Organizations use BSIMM to benchmark their practices against industry peers.

SAMM (Software Assurance Maturity Model)

A prescriptive model from OWASP that defines specific practices and maturity levels for improving software security. SAMM provides a roadmap for organizations that want to build or improve their software security program. It covers five business functions: governance, design, implementation, verification, and operations.

The exam expects you to know the difference: BSIMM tells you what others are doing (descriptive); SAMM tells you what you should do (prescriptive). Both are valid approaches to measuring and improving software security maturity.


Pattern Recognition

Software security assessment questions on the CISSP tend to follow these structures:

  • “Which tool should we use?” — Match the tool to the scenario. SAST for code-level analysis before deployment. DAST for runtime testing of deployed applications. SCA for third-party component vulnerabilities. Fuzz testing for unexpected input handling.
  • False confidence scenario — The organization trusts clean scan results, but the tool was not configured to cover the vulnerability type. The answer addresses coverage gaps and tool limitations.
  • Metrics question — When asked how to measure program effectiveness, look for outcome-based metrics (escape rate, time to remediate) over activity-based metrics (number of scans run).
  • Maturity question — When asked how to benchmark against peers, the answer is BSIMM. When asked how to build a roadmap, the answer is SAMM.

Trap Patterns

Watch for these wrong answers:

  • “SAST finds all vulnerabilities” — SAST finds code-level patterns. It cannot detect runtime behavior, configuration issues, or business logic flaws.
  • “DAST replaces the need for SAST” — DAST and SAST test different things. Neither replaces the other. Effective programs use both.
  • “Clean scan results mean the application is secure” — Absence of findings is not evidence of absence. It may indicate tool misconfiguration, insufficient coverage, or vulnerability types the tool does not detect.
  • “Penetration testing should be the first security assessment” — Penetration testing is most valuable after other methods have been applied. Running a penetration test on an application that has never been through SAST or DAST is expensive discovery of problems that automated tools would have found faster.

Scenario Practice


Question 1

An application security team uses SAST extensively in its CI/CD pipeline. SAST scans consistently show zero critical findings. However, a penetration test reveals multiple cross-site scripting (XSS) vulnerabilities in dynamically generated content.

What is the MOST likely explanation?

A. The SAST tool is misconfigured and not scanning for XSS patterns
B. The XSS vulnerabilities are in third-party libraries, which SAST does not analyze
C. SAST cannot detect vulnerabilities that arise from runtime behavior and dynamic content generation
D. The penetration test results are false positives

Answer & reasoning

Correct: C

SAST analyzes code structure but cannot observe how the application behaves at runtime. XSS vulnerabilities in dynamically generated content depend on how the application processes and renders data during execution — something only DAST or IAST can observe. This is a coverage gap inherent to SAST, not a tool misconfiguration.


Question 2

A CISO wants to benchmark the organization’s software security practices against other companies in the financial services industry. The team suggests conducting an internal maturity assessment.

Which framework is BEST suited for this benchmarking purpose?

A. OWASP SAMM, because it defines best practices for software security
B. BSIMM, because it provides data-driven benchmarking based on observed practices across organizations
C. ISO 27001, because it is the international standard for information security
D. NIST CSF, because it provides a cybersecurity maturity framework

Answer & reasoning

Correct: B

BSIMM is specifically designed for benchmarking software security practices against industry peers. It collects data from participating organizations and provides comparative analysis. SAMM is prescriptive (tells you what to do) rather than comparative. ISO 27001 and NIST CSF address broader information security, not software security specifically.


Question 3

An organization tracks the number of security scans performed per month as its primary software security metric. The metric has increased 200% over the past year, but the number of vulnerabilities found in production has not decreased.

What does this indicate about the metrics program?

A. More scans are needed to achieve meaningful results
B. The scanning tools are not effective and should be replaced
C. The organization is measuring activity (scans performed) rather than outcomes (vulnerabilities escaping to production), and should shift to outcome-based metrics
D. Production vulnerability counts are not a reliable measure of software security

Answer & reasoning

Correct: C

Activity metrics (scans run, tests completed) measure effort, not effectiveness. The organization is doing more testing but not achieving better results. Outcome-based metrics like escape rate, mean time to remediate, and vulnerability density measure whether the program is actually reducing risk. Increasing activity without improving outcomes suggests the testing is either poorly targeted or findings are not being acted upon.


Key Takeaway

No single testing method covers the full spectrum of software vulnerabilities. SAST sees code structure but misses runtime behavior. DAST sees external behavior but misses internal logic. SCA sees known component vulnerabilities but misses custom code flaws. The security manager’s job is not to pick one tool but to govern a layered testing strategy where each method compensates for the others’ blind spots — and to measure outcomes, not activity.

Next Module Module 61: Acquired Software Security Impact