AppSec Testing Fundamentals

SAST vs DAST vs SCA vs IAST: Which Do You Need First?

11 min read· SecOpsTool Security Team
SASTDASTSCAIASTDevSecOpsNIST SSDFOWASP
Four application security testing types side by side

Buyers often shop for "an application security tool" as if SAST, DAST, SCA and IAST were interchangeable. They are not. Each one analyses a different artefact, source code, a running application, third-party components, or a running application instrumented from the inside, and each is structurally blind to risk the others catch.

This article sticks to two kinds of primary sources. OWASP Foundation's community pages, Developer Guide and DevSecOps Guideline describe what each testing type technically does. NIST Special Publication 800-218, the SSDF version 1.1, published in February 2022, places code review, code testing and component verification inside a structured set of software development practices. Vendor statements below are limited to what each company's own site says about its own product.

What follows: what each analyses and cannot find, where NIST's framework places them, and a decision framework for which one to introduce first.

What SAST analyses, and what it cannot find

Static Application Security Testing (SAST) examines an application's source code, byte code or binary without executing it. OWASP's community page on Static Code Analysis describes it as a technique "usually performed as part of a Code Review (also known as white-box testing)" using methods "such as Taint Analysis and Data Flow Analysis," carried out "at the Implementation phase" of a secure development lifecycle. SAST tools increasingly run inside the IDE.

OWASP's Source Code Analysis Tools page is explicit about SAST's limits: "current SAST tools are limited" and "can automatically identify only a relatively small percentage of application security flaws," producing "high numbers of false positives." It struggles with "authentication problems, access control issues, insecure use of cryptography," and configuration issues, "since they are not represented in the code," and has difficulty with code that cannot be compiled.

Checkmarx describes its SAST engine as one that "scans source code, looking for vulnerabilities in static code - it doesn't require the application to be running," supporting Java, JavaScript, TypeScript, Python, C#, C/C++, Go, PHP, Ruby, Swift, Kotlin, COBOL and PL/SQL. SonarQube's own site states it "qualifies as a Static Application Security Testing (SAST) tool," analysing "over 35 programming languages and frameworks" for issues including "OWASP Top 10 and beyond." Perforce's Klocwork provides "early defense for developers by alerting them to potentially costly defects and compliance violations as soon as the code is written," for C, C++, C#, Rust, Java, JavaScript, Python and Kotlin. HCL AppScan Source aims to "find and remediate security vulnerabilities early in the development cycle using static application security testing."

What DAST analyses, and what it cannot find

Dynamic Application Security Testing (DAST) takes the opposite approach: it tests a running application from the outside, without access to source code. The OWASP Developer Guide's DAST tools page defines it as "a non-functional testing process to identify security weaknesses and vulnerabilities in applications," carried out by tools that "communicate with a web application through the web front-end" and "detect vulnerabilities by actually performing attacks," performing "a black-box test."

Working from the outside gives DAST structural blind spots. The OWASP Developer Guide states dynamic testing "cannot cover 100% of the source code of the application and then, the application itself," and "business logic errors, race condition checks, and certain zero-day vulnerabilities can only be identified using manual assessments." This makes DAST well suited to an application already deployed and reachable, including one with no source code at all, such as a vendor-supplied web application.

Burp Suite from PortSwigger describes tools covering both "hands-on web security testing" and "automated DAST scanning," against vulnerability classes including cross-site scripting, SQL injection, cross-site request forgery, XML external entity injection, directory traversal and server-side request forgery. Invicti's Acunetix identifies "7,000+ issues, including OWASP Top 10, OWASP API Top 10, and business logic flaws" across single-page applications and APIs, with "code-level traceability" mapping findings to source code through "DAST to SAST correlation." Bright Security describes its platform as "Dynamic Application Security Testing" covering "web applications, APIs, business logic, and LLMs," integrated into CI/CD, IDEs and ticketing systems. Sec1's Kairo provides "comprehensive dynamic security testing to detect and prevent vulnerabilities in web applications and APIs," testing for the OWASP Top 10 during runtime.

Evaluating Checkmarx?

Get a 14-day free trial with expert onboarding from SecOpsTool, or compare it with the alternatives first.

What SCA analyses, and what it cannot find

Software Composition Analysis looks at neither code written in-house nor a running application, but at the third-party and open-source components an application depends on. OWASP's Component Analysis page defines the parent concept as "the process of identifying potential areas of risk from the use of third-party and open-source software and hardware components," and notes the software-specific subset, SCA, has "limited scope" by comparison.

SCA's coverage is bounded by what it checks: an inventory of components against known-vulnerability data and licence terms. It does not review the custom code an organisation writes itself, and it does not execute the application. The OWASP DevSecOps Guideline notes SCA helps prevent "Supply-Chain Attack" risk and recommends sequencing it early: "We should put the Component Analysis earlier, before security testing like SAST, DAST to prevent any vulnerable libraries pushed to live environment (Production)."

Mend.io describes its product as helping teams "secure open source dependencies and container images" and "find and fix CVEs in your dependencies." Snyk states Snyk Open Source "provides advanced software composition analysis (SCA)" to "find, prioritize, and fix security vulnerabilities and license issues in open source dependencies," across languages including JavaScript, Java, Python, .NET, Ruby, Go, C++ and PHP. Sonatype Lifecycle automates dependency management through a "flexible policy engine" offering "18 default policies and over 30 customizable constraints," and fills a real gap: nearly 65% of open source CVEs have no CVSS score assigned by NVD, so Sonatype supplies its own vulnerability intelligence instead.

What IAST analyses, and what it cannot find

Interactive Application Security Testing sits between SAST and DAST. The OWASP DevSecOps Guideline describes IAST as "an application security testing method that tests the application while the app is run by an automated test, human tester, or any activity 'interacting' with the application functionality." IAST works through "sensor modules, software libraries included in the application code," which "keep track of application behavior while the interactive tests are running" and send an alert "if a vulnerability is detected."

OWASP states IAST is "more flexible than SASTs, because they are applicable in production runtime environments (SASTs require direct access to the source code)," and contrasts it with SAST's pipeline cost, since SAST "introduce[s] delays as the scan process takes time to finish," and DAST's staffing cost, since it "must be operated by experienced appsec teams, such as penetration testers, to be truly useful." IAST's own limitation: it needs the application to actually be exercised, and misses code paths nobody runs.

HCL AppScan lists IAST among its modules: "monitor live apps and APIs, auto-issue correlation, API discovery, patented solutions for java and .net." Checkmarx describes IAST as "an application security testing method that analyzes a running application from the inside while it is being exercised through manual or automated testing," and continues to license CxIAST alongside Checkmarx One. Acunetix's AcuSensor page states: "When you install and use AcuSensor, Invicti becomes an IAST solution (grey-box scanner), not just a DAST scanner (black-box scanner)," supporting Node.js, PHP, Java (including Spring) and ASP.NET, able to "identify the exact line of source code (for PHP) or point to a location in a stack trace (for Java and ASP.NET)."

Where each one sits in NIST's Secure Software Development Framework

NIST SP 800-218, the SSDF version 1.1, published in February 2022, does not use the terms SAST, DAST, SCA or IAST. It organises secure development into four practice groups: "Prepare the Organization (PO)," "Protect the Software (PS)," "Produce Well-Secured Software (PW)," and "Respond to Vulnerabilities (RV)." Three practices inside PW, plus one under RV, map onto the categories above.

SSDF practiceWhat NIST says it coversMaps to
PW.4"Verify that acquired commercial, open-source, and all other third-party software components comply with the requirements," including "automatic detection of known vulnerabilities in software components"SCA
PW.7"Determine whether code review (a person looks directly at the code to find issues) and/or code analysis (tools are used to find issues in code...) should be used"SAST, and manual code review
PW.8Testing executable code, with examples including to "integrate dynamic vulnerability testing into the project's automated test suite" and "use fuzz testing tools to find issues with input handling"DAST, IAST, fuzzing, penetration testing
RV.1Identifying vulnerabilities on an ongoing basis, including to "automatically review provenance and software composition data for all software components to identify any new vulnerabilities"Continuous SCA monitoring

NIST treats these as separate practices with separate tasks, not as alternative ways of satisfying the same requirement. A team that performs code review under PW.7 has not addressed PW.4's requirement to verify third-party components, and the reverse is also true.

A decision framework: what to run first

None of the primary sources above rank SAST, DAST, SCA and IAST against each other in the abstract. What they give is enough to reason from a team's situation to a sensible starting point.

  • Teams that own the source code and want the earliest feedback. OWASP's sequencing guidance is direct: "We should put the Component Analysis earlier, before security testing like SAST, DAST to prevent any vulnerable libraries pushed to live environment (Production)." With SAST running "at the Implementation phase," such a team has reason to start with SCA, then add SAST, before code reaches a build.
  • Teams testing an application they did not write, or one already running in production, without source access. DAST is a black-box method working "through the web front-end" without needing source code, the only category of the four that does not assume source access.
  • Teams that already run functional or QA test suites and want continuous, in-pipeline detection. IAST "tests the application while the app is run by an automated test, human tester, or any activity 'interacting' with the application functionality," reusing that interaction rather than a separate black-box pass or source-only review, via sensors instrumented into a test or staging environment.

These starting points are not mutually exclusive. NIST's SSDF lists PW.4, PW.7 and PW.8 as separate practices for a reason: a secure development programme performs all of them over time.

How the four work together

The overlaps described above are the point, not a gap. SCA covers dependency risk that neither SAST nor DAST is designed to catch, since SAST reads code the organisation wrote and DAST tests the application as a whole rather than auditing each component's provenance. SAST catches flaw classes OWASP names, "buffer overflows, SQL injection flaws," while code is still being written. DAST and IAST both observe the running application, but DAST has no visibility inside the process, while IAST's in-code sensors give it, per OWASP, access to "entire code," "dataflow and control flow," and "back-end connection data" while tests run.

NIST's RV.1 practice adds a dimension easy to miss when comparing the four only as one-off scans: ongoing monitoring. Its example under RV.1.1 is to "automatically review provenance and software composition data for all software components to identify any new vulnerabilities they have," describing continuous SCA rather than a single test event, since a dependency clean at build time can become vulnerable once a new CVE is published against it.

What to do next

Matching a testing type to a team's actual situation, source-code access, deployment stage and existing test coverage, matters more than which product is chosen first. A practical next step is to look at what the team already has and match it against the categories above.

To work through which of SAST, DAST, SCA or IAST fits a specific pipeline, request a scoping call, or evaluate a trial against real code or a real running application before deciding.

Whichever category is the right starting point, treat it as the first of several practices rather than a single purchase that closes the topic. NIST's framework, and OWASP's guidance on sequencing SCA ahead of SAST and DAST, both describe a layered programme, not a single tool.

Questions Buyers Ask

Some vendor platforms bundle more than one testing type: HCL AppScan and Checkmarx One both state they include SAST, DAST and SCA, and HCL AppScan adds IAST, within one platform. NIST's SSDF still treats code analysis (PW.7), component verification (PW.4) and executable code testing (PW.8) as separate practices, so one platform does not remove the need to actually run each practice.

SCA needs an inventory of the components an application depends on, such as a manifest or lockfile, rather than the organisation's own source code. DAST, per OWASP's Developer Guide, is a black-box method that tests a running application "through the web front-end," so it does not require source code access either.

No. NIST's SSDF practice PW.7 defines code review, a person examining the code, and code analysis, a tool doing so, as two distinct options under the same practice, to be used "as defined by the organization," not as substitutes for each other. OWASP's own SAST guidance also notes automated tools "can automatically identify only a relatively small percentage of application security flaws."

Sources

Primary documents this article is based on. Regulatory clauses and product statements above are taken from these pages.

S
SecOpsTool Security Team
Cybersecurity Specialists