By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.
ToolAccuracy of FindingsDetects Non-Pattern-Based Issues?Coverage of SAST FindingsSpeed of ScanningUsability & Dev Experience
DryRun SecurityVery high – caught multiple critical issues missed by othersYes – context-based analysis, logic flaws & SSRFBroad coverage of standard vulns, logic flaws, and extendableNear real-time PR feedback
Snyk CodeHigh on well-known patterns (SQLi, XSS), but misses other categoriesLimited – AI-based, focuses on recognized vulnerabilitiesGood coverage of standard vulns; may miss SSRF or advanced auth logic issuesFast, often near PR speedDecent GitHub integration, but rules are a black box
GitHub Advanced Security (CodeQL)Very high precision for known queries, low false positivesPartial – strong dataflow for known issues, needs custom queriesGood for SQLi and XSS but logic flaws require advanced CodeQL experience.Moderate to slow (GitHub Action based)Requires CodeQL expertise for custom logic
SemgrepMedium, but there is a good community for adding rulesPrimarily pattern-based with limited dataflowDecent coverage with the right rules, can still miss advanced logic or SSRFFast scansHas custom rules, but dev teams must maintain them
SonarQubeLow – misses serious issues in our testingLimited – mostly pattern-based, code quality orientedBasic coverage for standard vulns, many hotspots require manual reviewModerate, usually in CIDashboard-based approach, can pass “quality gate” despite real vulns
Vulnerability ClassSnyk (partial)GitHub (CodeQL) (partial)SemgrepSonarQubeDryRun Security
SQL Injection
*
Cross-Site Scripting (XSS)
SSRF
Auth Flaw / IDOR
User Enumeration
Hardcoded Token
ToolAccuracy of FindingsDetects Non-Pattern-Based Issues?Coverage of C# VulnerabilitiesScan SpeedDeveloper Experience
DryRun Security
Very high – caught all critical flaws missed by others
Yes – context-based analysis finds logic errors, auth flaws, etc.
Broad coverage of OWASP Top 10 vulns plus business logic issuesNear real-time (PR comment within seconds)Clear single PR comment with detailed insights; no config or custom scripts needed
Snyk CodeHigh on known patterns (SQLi, XSS), but misses logic/flow bugsLimited – focuses on recognizable vulnerability patterns
Good for standard vulns; may miss SSRF or auth logic issues 
Fast (integrates into PR checks)Decent GitHub integration, but rules are a black box (no easy customization)
GitHub Advanced Security (CodeQL)Low - missed everything except SQL InjectionMostly pattern-basedLow – only discovered SQL InjectionSlowest of all but finished in 1 minuteConcise annotation with a suggested fix and optional auto-remedation
SemgrepMedium – finds common issues with community rules, some missesPrimarily pattern-based, limited data flow analysis
Decent coverage with the right rules; misses advanced logic flaws 
Very fast (runs as lightweight CI)Custom rules possible, but require maintenance and security expertise
SonarQube
Low – missed serious issues in our testing
Mostly pattern-based (code quality focus)Basic coverage for known vulns; many issues flagged as “hotspots” require manual review Moderate (runs in CI/CD pipeline)Results in dashboard; risk of false sense of security if quality gate passes despite vulnerabilities
Vulnerability ClassSnyk CodeGitHub Advanced Security (CodeQL)SemgrepSonarQubeDryRun Security
SQL Injection (SQLi)
Cross-Site Scripting (XSS)
Server-Side Request Forgery (SSRF)
Auth Logic/IDOR
User Enumeration
Hardcoded Credentials
VulnerabilityDryRun SecuritySemgrepGitHub CodeQLSonarQubeSnyk Code
1. Remote Code Execution via Unsafe Deserialization
2. Code Injection via eval() Usage
3. SQL Injection in a Raw Database Query
4. Weak Encryption (AES ECB Mode)
5. Broken Access Control / Logic Flaw in Authentication
Total Found5/53/51/51/50/5
VulnerabilityDryRun SecuritySnykCodeQLSonarQubeSemgrep
Server-Side Request Forgery (SSRF)
(Hotspot)
Cross-Site Scripting (XSS)
SQL Injection (SQLi)
IDOR / Broken Access Control
Invalid Token Validation Logic
Broken Email Verification Logic
DimensionWhy It Matters
Surface
Entry points & data sources highlight tainted flows early.
Language
Code idioms reveal hidden sinks and framework quirks.
Intent
What is the purpose of the code being changed/added?
Design
Robustness and resilience of changing code.
Environment
Libraries, build flags, and infra metadata flag, infrastructure (IaC) all give clues around the risks in changing code.
KPIPattern-Based SASTDryRun CSA
Mean Time to Regex
3–8 hrs per noisy finding set
Not required
Mean Time to Context
N/A
< 1 min
False-Positive Rate
50–85 %< 5 %
Logic-Flaw Detection
< 5 %
90%+
Contextual Security Analysis
May 8, 2025

Beyond Pattern Matching: Why Context Is the Future of Application Security

“Complex systems are intrinsically hazardous systems.” 
—Dr. Richard Cook, How Complex Systems Fail

Software security has long leaned on a comforting fiction: if we catalogue every dangerous pattern in code, we can stamp out risk for good. Traditional Static Application Security Testing (SAST) tools—Veracode, Fortify, Semgrep, SonarQube, Snyk Code, CodeQL, and friends—were built on that deterministic promise. Yet real-world development is anything but deterministic. Humans and AI copilots continually remix frameworks, invent Domain Specific Languages (DSLs), and weave together services in ways no static rule set can fully anticipate.

DryRun Security’s Contextual Security Analysis (CSA) tackles that reality head-on. To understand why CSA outperforms rule-based scanners, it helps to frame security work in the language of risk epistemology: Known Knowns, Known Unknowns, and Unknown Unknowns. Each tells a different story about how (and whether) a tool can keep pace with modern code.

The Comfort Zone: Known Knowns

Known Knowns are the textbook vulnerabilities every developer learns on day one: raw SQL concatenation, strcpy() overflows, hard-coded secrets. Pattern-matching scanners function here because the threat is literally spelled out in the code. GitHub’s own primer describes SAST as scanning “for known vulnerable code patterns.”

But two structural flaws haunt this approach: 

  1. Rule Inflation - New libraries and language idioms appear weekly; each demands fresh signatures. Most teams never catch up. 
  2. Context Blindness - A pattern might be safe in one call path and disastrous in another. Without semantic context, the tool can’t tell.

Traceable’s review of legacy scanners captures the result: they “can detect dangerous code patterns only in libraries and functions they are familiar with” (ref) and routinely miss broken access control and business-logic flaws. Their research in 2021 spurred them on to create a runtime approach to solve the problem. 

“Catastrophe requires multiple failures—single-point failures are not enough.” —Dr. Richard Cook

Pattern matching offers only single-point explanations. It cannot reason about how subtle design shifts combine into a vulnerability. In application security we generally lump these hard to reason about vulnerabilities into a class of “logic flaws” and we move on. 

The Frontier: Known Unknowns

Known Unknowns are vulnerability classes we understand abstractly—authorization bypasses, confused-deputy flows, insecure deserialization—but whose concrete manifestations vary wildly across stacks. This is where context matters more than signatures.

The DryRun Security Contextual Security Analysis (CSA) approach uses the SLIDE framework to express this: Surface, Language, Intent, Design, Environment—to build a meta-context window around every pull request.

 

{{table7}}

Because CSA reasons over all five dimensions, it flags Known Unknowns that signature scanners never learned to name. In our 2025 SAST Accuracy Report DryRun Security CSA detected roughly 90% of the 26-payload corpus, including every multi-step logic flaw that slipped past pattern-based tools.

“People are the adaptable element of complex systems.” —John Allspaw 

DryRun Security CSA treats developers—and their evolving code context—as first-class inputs, not noise to be abstracted away.

The Dark Depths: Unknown Unknowns

Unknown Unknowns are the hazards we haven’t yet imagined. Sidney Dekker reminds us that “people aren’t the problem; they’re the solution”—precisely because they adapt to surprises technology fails to foresee.

No tool can guarantee discovery of every future flaw (Gödel-esque limits apply), but DryRun Security CSA moves the conversation forward:

  • Anomaly-Patterning: When a change resembles risky archetypes seen in incident post-mortems—e.g., introducing a bespoke crypto primitive—CSA (in DryRun Security’s implementation) raises an Unconfirmed Finding. 
  • Contextual Diffusion: By continuously learning from resolved alerts across thousands of repos, DryRun Security CSA refines its heuristics, nudging the boundary of what was formerly “unknown.”

The goal isn’t omniscience; it's an earlier signal. As Richard Cook writes, complex systems “are heavily and successfully defended against failure,” but only when humans get timely cues to adapt.   

DryRun Security CSA supplies those cues as your development team is creating, mending, or extending your system, which is often days or weeks before an attacker might exploit them.

Implications for Security Leaders

  1. Stop Rule-Chasing. Every regex you author (or your team authors) will age out. Invest instead in tools that synthesize context. 
  2. Expect Surprise. Risk isn’t eliminated by ever-longer checklists; it’s mitigated by adaptive detection. 
  3. Measure What Matters. Accuracy against logic flaws and authorization bypasses is the real benchmark, not just CWE coverage.

Ready to Move Beyond Pattern Matching?

Download the full 2025 SAST Accuracy Report to see the methodology, raw results, and why leading engineering teams are replacing deterministic scanners with Contextual Security Analysis.