Get the latest, first
arrowBlog
The Complete Application Security Toolkit: From Code Scanning to Runtime Protection

The Complete Application Security Toolkit: From Code Scanning to Runtime Protection

Jan 11, 2026

Jonathan Kaftzan
VP Marketing

Key Insights

  • What's the biggest gap in most application security programs? Runtime visibility. Most teams invest heavily in shift-left tools (SAST, SCA, DAST) but have almost no detection capability once code hits production. This is where attacks actually happen—and where zero-days, supply chain compromises, and business logic attacks exploit gaps that pre-deployment scanning can't see.
  • Why doesn't comprehensive scanning prevent breaches? Scanning finds known vulnerability patterns. It can't catch zero-days (no CVE exists yet), supply chain attacks that activate after your scan, runtime misconfigurations that only appear in production, or attacks in progress. Shift-left tells you what might be wrong. Runtime tells you what is happening.
  • How do you reduce CVE alert noise without missing real vulnerabilities? Runtime reachability analysis. Instead of flagging every CVE in your dependency tree, it identifies which vulnerabilities exist in code paths that actually execute in your environment. A CVE in a function nothing calls poses no real risk. This approach typically reduces actionable findings by 90%+.
  • What's the difference between CNAPP and CADR? CNAPP focuses on posture—configuration scanning, compliance, vulnerability identification. It tells you what could be wrong. CADR focuses on runtime—detecting active attacks, correlating events across the full stack, enabling response. It tells you what is happening right now.
  • Why do siloed security tools fail against sophisticated attacks? Attacks don't respect tool boundaries. An attacker might exploit an application vulnerability, steal Kubernetes credentials, pivot to another pod, and exfiltrate data—spanning application, container, cluster, and cloud layers. Separate tools generate separate alerts. By the time someone correlates them, the attacker is gone. Full-stack correlation builds the complete attack story automatically.
  • What's the minimum viable AppSec toolkit? Build phase: Semgrep or SonarQube (SAST), Dependabot (SCA). Deploy phase: Trivy (container scanning), Kubescape (Kubernetes/IaC). Runtime phase: Cloud provider WAF at minimum. This stack is free and covers all three lifecycle phases. Add runtime reachability and detection/response as you mature.


Last Tuesday, your SCA tool flagged 3,847 CVEs across your Kubernetes clusters. Your SAST scanner added another 1,200 findings from the overnight build. The container scanning pipeline blocked 47 images. And somewhere in Slack, someone from the SOC is asking why you haven’t patched the Log4j variant they read about on Twitter.

You’ve done everything the security vendors told you to do. You shifted left. You scan everything. You gate deployments. You have dashboards.

And yet you have no idea which of those 5,000+ findings an attacker could actually exploit. You don’t know which CVEs exist in code paths that never execute in production. You can’t tell your CISO whether the critical vulnerability in your payment service is actually reachable from the internet or buried in a function nothing calls.

This is the state of application security in 2026: more tools than ever, more findings than ever, and less clarity than ever about what actually matters.

The problem isn’t that you need more scanning. The problem is that scanning—no matter how comprehensive—can only tell you what might be wrong. It can’t tell you what’s actually dangerous in your specific environment. And it definitely can’t tell you when something is being attacked right now.

This guide covers the complete application security toolkit, organized not by vendor category but by where tools fit in the development lifecycle. More importantly, it explains why most AppSec programs have a critical blind spot—and what to do about it.

The Three Phases of Application Security

Before diving into specific tools, it helps to understand how they fit together. Most guides list tool categories alphabetically or dump them into a comparison table. That’s not useful. It obscures which problems each category solves and—more importantly—which problems remain unsolved.

A better frame: map your tools to three lifecycle phases.

Build covers everything during development. SAST analyzing source code. SCA tracking dependencies. IDE plugins catching issues before commit. These tools find problems in what you’re writing.

Deploy covers the pipeline and staging. DAST testing running applications. IAST instrumenting during QA. Container scanning before images hit the registry. IaC scanning before infrastructure gets provisioned. These tools find problems in what you’re about to ship.

Runtime covers production. WAFs filtering traffic. RASP embedded in applications. Detection and response watching for attacks. These tools protect what’s actually running and catch what everything else missed.

Here’s the problem: most AppSec programs invest heavily in Build and Deploy, then barely touch Runtime. They find vulnerabilities before release but have almost no visibility into what happens after. Production—where attacks actually happen—is a blind spot.

Why Shift-Left Isn’t Enough

Shift-left has been the dominant AppSec philosophy for a decade. Find vulnerabilities early. Fix them before they ship. The logic is sound—earlier fixes are cheaper. But somewhere along the way, shift-left became the entire strategy rather than part of one.

Shift-left tools are excellent at finding known vulnerability patterns in your code and dependencies. If there’s a CVE in a library you’re using, SCA will find it. If you’re using an unsafe function from the OWASP Top 10, SAST will flag it. If your Terraform has an open security group, IaC scanning will catch it.

But shift-left tools fundamentally cannot catch:

  • Zero-day vulnerabilities. No CVE exists yet in the National Vulnerability Database, so SCA has nothing to match against.
  • Runtime misconfigurations that don’t exist until deployment. Your Kubernetes manifest was fine; the problem is how it interacted with the cluster’s existing RBAC.
  • Supply chain attacks that compromise code after your scans. The dependency was clean when you scanned it. It wasn’t clean when it ran.
  • Business logic attacks that don’t match any pattern. The attacker isn’t injecting SQL; they’re manipulating your checkout flow in ways your scanner never imagined.
  • Attacks in progress. SAST doesn’t know someone is currently exploiting the vulnerability it flagged six months ago.

This gap explains why organizations with comprehensive SAST, DAST, and SCA coverage still get breached. The tools are doing exactly what they’re designed to do. They’re just not designed to do everything.

Build-Phase Tools

Build-phase tools integrate into development workflows. They’re foundational—but understanding their limitations is just as important as understanding their capabilities.

SAST: Finding Vulnerabilities in Source Code

Static Application Security Testing analyzes source code without executing it. SAST tools parse your code, build an abstract model, and look for patterns that match known vulnerabilities—SQL injection via string concatenation, hardcoded credentials, unsafe deserialization patterns cataloged by CWE.

The value is clear: issues caught here are cheap to fix. A developer sees the warning in their IDE, fixes the line, and moves on. No security ticket, no production deployment, no incident.

But SAST has well-documented limitations. Research from NIST and academic studies show false positive rates ranging from 3% to 48% depending on the tool and codebase. More fundamentally, SAST can’t understand runtime behavior. It sees that you’re using user input in a database query; it can’t tell whether that code path is actually reachable from an external request or buried behind authentication and authorization that makes exploitation impossible.

This creates noise. Lots of it. Security teams drown in findings they can’t prioritize because the tool can’t tell them which issues are actually exploitable in their specific deployment.

Common tools: Checkmarx, SonarQube, Semgrep, Snyk Code, Veracode.

SCA: Tracking Dependency Vulnerabilities

Software Composition Analysis focuses on the code you didn’t write—the open-source libraries your application depends on. SCA tools build a software bill of materials (SBOM), track every dependency (including transitive ones), and match them against vulnerability databases.

Given that most applications are 80%+ open-source code, SCA is non-negotiable. You need to know when a library you’re using has a known vulnerability.

The problem is that SCA flags every CVE in your dependency tree without context about whether it affects you. A vulnerability in a logging function you never call poses no risk. A CVE in a feature you disabled poses no risk. But SCA can’t tell the difference. It sees the library, sees the CVE, and raises an alert.

The result: security teams chase theoretical vulnerabilities while truly exploitable issues get lost in the noise. This is where runtime context becomes essential. Tools that can show which vulnerabilities are actually loaded into memory and executed during runtime cut through the noise. Instead of 3,000 CVEs, you see the 30 that could actually be exploited. ARMO’s runtime reachability analysis, for example, typically reduces actionable CVE findings by over 90%—turning an impossible triage problem into a manageable remediation list.

Common tools: Snyk, Dependabot, Black Duck, Trivy, Mend.

Deploy-Phase Tools

Deploy-phase tools test applications before they hit production. They catch issues that only appear when code runs—but they’re limited to what you think to test.

DAST: Testing from the Outside

Dynamic Application Security Testing takes the attacker’s perspective. DAST tools interact with your running application, sending malicious inputs and watching for vulnerable responses. The OWASP Web Security Testing Guide provides the methodology most DAST tools implement.

DAST finds exploitable vulnerabilities—issues that actually manifest when the application runs. If your authentication is bypassable, DAST will find it. If your API returns stack traces, DAST will see them.

The limitation is coverage. DAST only tests what you point it at. If you don’t exercise a particular code path in your test scenarios, DAST won’t find vulnerabilities there. And DAST runs in staging, which may not perfectly mirror production—different data, different configuration, different integrations.

Common tools: OWASP ZAP, Burp Suite, Qualys WAS, Invicti.

IAST: Instrumenting During Testing

Interactive Application Security Testing combines elements of SAST and DAST. An IAST agent runs inside your application during testing, watching data flows and execution paths as your test suite runs.

Because IAST sees actual execution, it has lower false positive rates than SAST. It knows which code paths run, how data flows through them, and where sanitization happens or doesn’t. But IAST still depends on test coverage—if your tests don’t hit a code path, IAST won’t analyze it. And IAST runs in test environments, not production.

Common tools: Contrast Security, Synopsys Seeker, HCL AppScan.

Container and IaC Scanning

In cloud-native environments, you’re deploying containers and infrastructure-as-code, not just application binaries. Container image scanning checks for vulnerabilities in the OS layer, installed packages, and application dependencies. IaC scanning reviews your Terraform, Kubernetes manifests, and Helm charts for misconfigurations before they’re deployed—checking against benchmarks like the CIS Kubernetes Benchmark and the NSA/CISA Kubernetes Hardening Guide.

These tools are essential for Kubernetes environments. An insecure base image affects every pod using it. A permissive NetworkPolicy in your manifest becomes a lateral movement opportunity in the cluster.

For Kubernetes specifically, Kubescape has become a standard tool. It’s open-source, covers 260+ controls mapped to NSA, CIS, SOC2, and other frameworks, and is used by over 50,000 organizations. It handles both IaC scanning (catching misconfigurations before deployment) and posture management (monitoring clusters for drift). Many teams start here before adding commercial tools because it’s genuinely comprehensive—and free.

Common tools: Trivy, Grype, Kubescape, Checkov, tfsec.

Runtime-Phase Tools: The Layer Most Programs Miss

This is where most application security content stops. The shift-left tools are covered, the pipeline is gated, the containers are scanned. Ship it.

But production is where attacks happen. Not staging. Not the CI pipeline. Production—with real data, real users, and real attackers. The CNCF’s 2023 survey found that 90% of organizations experienced security incidents in their Kubernetes environments. The attacks didn’t stop because scans passed.

Zero-days get exploited in production. Supply chain compromises activate in production. Attackers don’t wait for your quarterly penetration test. They probe your APIs at 3 AM on a holiday weekend.

If your security visibility ends at deployment, you’re flying blind in the one environment that matters most.

WAF: Pattern-Based Perimeter Protection

Web Application Firewalls filter HTTP traffic based on known attack patterns. They block common attacks—SQL injection, cross-site scripting, obvious path traversals—before requests reach your application.

WAFs are useful as a first line of defense, particularly for blocking unsophisticated attacks and buying time to patch known vulnerabilities. But they’re pattern-based, which means sophisticated attackers evade them. They see HTTP requests, not application behavior, which means they can’t detect attacks that look like legitimate traffic. And they’re designed for traditional web applications, not modern API architectures.

Common tools: Cloudflare WAF, AWS WAF, Akamai, ModSecurity.

RASP: Application-Embedded Protection

Runtime Application Self-Protection embeds security logic directly into your application. RASP agents instrument your code and watch for attacks from the inside—injection attempts, unauthorized file access, suspicious outbound connections.

Because RASP sees application context, it can distinguish attacks from legitimate requests more accurately than a WAF. It can block SQL injection by understanding how your ORM works, not just by matching patterns in HTTP requests.

But traditional RASP focuses only on the application layer. It doesn’t see what’s happening in the container, the Kubernetes cluster, or the cloud account. An attacker who exploits your application to steal service account credentials and pivot to your database pod—RASP saw the initial exploit, maybe, but lost visibility once the attacker moved laterally.

Common tools: Contrast Protect, Imperva RASP, Signal Sciences (Fastly).

The Full-Stack Problem

Here’s the fundamental issue with siloed runtime tools: attacks don’t respect tool boundaries.

Walk through a realistic attack scenario:

An attacker discovers a zero-day in an open-source library your application uses. SCA never flagged it—there was no CVE. They exploit it through your API to spawn a reverse shell in your container. SAST couldn’t catch it—the vulnerable code was in a third-party dependency. They use the container’s Kubernetes service account to query the secrets API. DAST never tested this—it only exercised the web interface. They find database credentials and pivot to a pod with overly permissive RBAC. Container scanning saw a clean image—the misconfiguration was in the deployment. They exfiltrate customer data to an external IP. The WAF saw nothing—this was internal east-west traffic.

With separate tools for each layer, you get disconnected alerts. An anomaly here, a suspicious query there. Maybe someone correlates them eventually—days or weeks later, after the attacker has long since exfiltrated everything they wanted.

This is the gap that Cloud Application Detection and Response (CADR) addresses. Instead of separate tools generating separate alerts, CADR monitors the full stack—application behavior, container activity, Kubernetes control plane, cloud APIs—and correlates events into attack stories. Not “suspicious process spawn in container xyz” as one alert and “unusual secrets API access” as another, but a complete timeline showing how the attack progressed from initial access through lateral movement to data exfiltration.

ARMO’s CADR platform, built on the same Kubescape foundation used by over 50,000 organizations, collects data across all these layers using eBPF-based sensors that add minimal overhead (1-2% CPU, 1% memory). It builds behavioral baselines for every workload—what processes normally run, what network connections are normal, what file access patterns are expected—and detects anomalies against those baselines. When something looks like an attack, it generates the complete story: what happened, which workloads were affected, how the attacker moved, and what you can do about it.

The difference in practice: instead of spending hours correlating alerts from five different tools, security teams see the full attack chain in minutes. Investigation time drops by 90% or more because the correlation is already done.

Building Your AppSec Toolkit

Not every team needs every tool immediately. Here’s how to think about building out your capabilities based on where you are.

Starting Out

If you’re just building your AppSec program, focus on coverage across all three phases—even with free tools.

Build: Semgrep or SonarQube Community for SAST (both free, both effective). Dependabot for SCA (free, built into GitHub).

Deploy: Trivy for container scanning (free, excellent coverage). Kubescape for Kubernetes security and IaC scanning (free, 260+ controls, used by 50,000+ organizations).

Runtime: Your cloud provider’s WAF at minimum. Start logging and monitoring even if you don’t have sophisticated detection yet.

This stack costs nothing beyond your time. It won’t catch everything, but it covers the fundamentals across all three phases.

Closing the Gaps

For teams ready to address alert fatigue and the runtime blind spot:

Add runtime reachability analysis to your vulnerability management. This is the single highest-leverage improvement for most teams. Instead of triaging thousands of CVEs, you focus on the ones actually exploitable in your environment. ARMO’s platform shows which vulnerabilities exist in code that’s actually loaded and executed—reducing noise by 90%+ and letting your team focus on real risk.

Add detection and response for production workloads. WAFs block known attacks; you need visibility into attacks that evade patterns. A full-stack CADR approach gives you the behavioral baselines and correlation to catch sophisticated attacks and understand what happened when something gets through.

The goal isn’t more tools. It’s better signal. Fewer alerts that matter more. Complete attack stories instead of disconnected pings. The ability to answer “what actually happened” in minutes, not days.

Beyond Scanning

The application security toolkit has evolved. A decade ago, SAST and DAST were enough. Five years ago, you added SCA and container scanning. Today, that’s table stakes—and it’s not enough.

Shift-left tools find known vulnerability patterns before deployment. That’s valuable. But production is where attacks happen, and attacks increasingly exploit gaps that shift-left tools can’t see: zero-days, supply chain compromises, runtime misconfigurations, business logic flaws.

A complete AppSec program requires tools across all three lifecycle phases:

  • Build to catch known issues during development
  • Deploy to validate before production
  • Runtime to protect and detect in the environment that matters most

The teams that get this right don’t just scan more. They see more—which vulnerabilities are actually reachable, which workloads are actually behaving abnormally, how attacks actually progress. They stop chasing theoretical risk and start addressing the real threats to their environments.

If your security visibility ends at deployment, you’re missing where the action is. Production isn’t just where your application runs. It’s where attackers do their work.

Getting started: Kubescape is free, open-source, and handles Kubernetes security posture and IaC scanning for environments of any size. For runtime reachability analysis and full-stack detection and response, explore the ARMO platform.

FAQ

What are the essential application security tools?

At minimum: SAST for code analysis, SCA for dependency tracking, container scanning for cloud-native environments, and something for runtime (at least a WAF, ideally detection and response). The specific vendors matter less than having coverage across Build, Deploy, and Runtime phases. The OWASP DevSecOps Guideline provides a solid framework for building out your program.

Why do organizations with full SAST/DAST/SCA coverage still get breached?

Shift-left tools find known vulnerability patterns before deployment. But attacks happen in production—exploiting zero-days without CVEs, supply chain compromises that activate post-scan, business logic flaws that don’t match patterns. Runtime protection catches what shift-left can’t see.

How do I reduce CVE alert noise without missing real vulnerabilities?

Runtime reachability analysis. Instead of flagging every CVE in your dependencies, it shows which vulnerabilities exist in code that actually executes in your environment. A CVE in a function your code never calls isn’t exploitable in your deployment—and shouldn’t consume your team’s time. Learn more about vulnerability prioritization with runtime context.

What’s the difference between CNAPP and CADR?

CNAPP (Cloud-Native Application Protection Platform) focuses on posture—configuration scanning, compliance, vulnerability identification. It tells you what could be wrong. CADR (Cloud Application Detection and Response) focuses on runtime—detecting active attacks, correlating events across the stack, enabling response. It tells you what is happening right now. ARMO’s approach combines both—posture management from Kubescape plus runtime detection and response.

Do I need separate tools for application, container, and cloud security?

Historically, yes—which is why teams drown in disconnected alerts. The trend is toward platforms that correlate across layers. When an attack spans your application, container, Kubernetes cluster, and cloud APIs, you need visibility that spans all of them too.

Close

Your cloud tools say
you're protected.
Want to check for free?

Save your Spot city
Close

Your Cloud Security Advantage Starts Here

Webinars
Data Sheets
Surveys and more
Group 1410190284
Ben Hirschberg CTO & Co-Founder
Rotem_sec_exp_200
Rotem Refael VP R&D
Group 1410191140
Amit Schendel Security researcher
slack_logos Continue to Slack

Get the information you need directly from our experts!

new-messageContinue as a guest