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%+
Severity
CriticalHigh
Location
utils/authorization.py :L118
utils/authorization.py :L49 & L82 & L164
Issue
JWT Algorithm Confusion Attack:
jwt.decode() selects the algorithm from unverified JWT headers.
Insecure OIDC Endpoint Communication:
urllib.request.urlopen called without explicit TLS/CA handling.
Impact
Complete auth bypass (switch RS256→HS256, forge tokens with public key as HMAC secret).
Susceptible to MITM if default SSL behavior is weakened or cert store compromised.
Remediation
Replace the dynamic algorithm selection with a fixed, expected algorithm list. Change line 118 from algorithms=[unverified_header.get('alg', 'RS256')] to algorithms=['RS256'] to only accept RS256 tokens. Add algorithm validation before token verification to ensure the header algorithm matches expected values.
Create a secure SSL context using ssl.create_default_context() with proper certificate verification. Configure explicit timeout values for all HTTP requests to prevent hanging connections. Add explicit SSL/TLS configuration by creating an HTTPSHandler with the secure SSL context. Implement proper error handling specifically for SSL certificate validation failures.
Key Insight
This vulnerability arises from trusting an unverified portion of the JWT to determine the verification method itself
This vulnerability stems from a lack of explicit secure communication practices, leaving the application reliant on potentially weak default behaviors.
AI in AppSec
July 22, 2025

Velocity Without Vision: Why AI-Led Development Is Driving Agentic Security Adoption

When Speed Outruns Intent

At the end of 2024, more than 25 percent of Google’s newly-committed code came straight from large language models.

That’s great for shipping velocity, until you realize much of that code was produced with little context beyond “create this thing and make the tests pass.” Security teams are suddenly protecting software that even its authors don’t fully understand.

This recent article in Lawfare “AI and Secure Code Generation” by Dave Aitel and Dan Geer discusses the move from “pointing machines” to “knowing machines” (which is a fantastic way to describe it) and I was enthralled as I read because it highlights so many issues we’re seeing today in customer environments.

The article goes on to highlight several big warnings that are coming up in our customer conversations as well. Here’s a summary of each along with how we’re working to solve these problems.

1 │ Code Written for the Moment, Not the Mission

LLMs solve the prompt in front of them without a care for the architecture behind it (much like a junior coder vs a software architect). Aitel and Geer observe that traditional metrics: bug counts, manual reviews, intent tracing - are now obsolete because no one can guarantee the coding AI understood the broader design.

DryRun Security: With us in your pipeline, every pull request is analyzed in context with a sole focus on security. Our engine analyzes intent from data-flows, config usage, and runtime boundaries, flagging when new code drifts from established security practices and introduces new risk based on the full context of the code.

2 │ Brace for an Explosion of “Unknown Unknowns”

Autonomous agents discover and introduce bugs faster than humans can catalogue them, much less write regex rules against them. Aitel and Geer liken it to a digital Cold War of zero-days where defenders often learn last.

DryRun Security: Instead of signature-matching known CWEs, we built an intelligent AppSec agent that looks beyond pattern matching and runs like an AppSec engineer on every pull request, no rules required unless you want to enforce policy.

3 │ Security Assurance Must Move Past Deterministic Reasoning

Counting hazards isn’t enough; we must know whether they’re exploitable. The Lawfare article's “pointing vs. knowing” argument lands here: tools must understand impact, not just syntax.

DryRun Security: We fuse static analysis with contextual reasoning: runtime env vars, network rules, privilege boundaries - so a stack overflow in an unreachable function doesn’t drown out a quietly exposed injection sink.

4 │ It’s an Arms Race: AI vs. AI

Attack automation is already weaponizing every public patch (remember ProxyLogon in 2021?) If defenders aren’t automating at the same pace, they’re losing ground hourly.

DryRun Security: Continuous agentic PR scans run at every merge with the context of your main. Model-backed remediation suggestions mean developers see actionable risk assessments, not PDFs, keeping cycle time low while the developer is in the code.

Frameworks Are Catching Up

Even the NIST Secure Software Development Framework now ships an AI-specific profile, urging provenance tracking of models and prompts.

But most orgs still treat compliance as a quarterly checkbox. DryRun plugs straight into the CI/CD, producing evidence for SSDF controls and OWASP Top 10 categories on every run.

Finally, take some time to read the full article if you can. They provide excellent context around these risks and insights, along with more depth why they see LLMs as a force for good in code security.

Ready to Try it Yourself?

We certainly agree that finely tuned and tested AI is a big part of the solution. Testing DryRun showed a record 88 % accurate findings with actionable remediation guidance vs traditional tools that were built before AI was everywhere in our code. Ready to see it live?

Get a demo →