ESC
Type to search guides, tutorials, and reference documentation.
Verified by Garnet Grid

Security Testing for Applications

Build comprehensive security testing into your development workflow. Covers SAST, DAST, dependency scanning, penetration testing, and security test automation in CI/CD pipelines.

Security testing is the practice of finding vulnerabilities before attackers do. Unlike functional testing — which verifies what the application does — security testing verifies what the application should never do: leak data, escalate privileges, accept injection, or expose internal state.


Security Testing Types

TypeWhenWhat It FindsSpeed
SAST (Static)At code timeCode-level vulnerabilities, hardcoded secretsSeconds
SCA (Composition)At build timeVulnerable dependencies, license issuesSeconds
DAST (Dynamic)At runtimeInjection, XSS, misconfigurationsMinutes
IAST (Interactive)During testingRuntime code paths with vulnerabilitiesDuring tests
Penetration testingPre-releaseBusiness logic flaws, chained exploitsDays
FuzzingContinuousCrash bugs, buffer overflows, unexpected input handlingHours

SAST (Static Application Security Testing)

ToolLanguagesIntegrationBest For
Semgrep30+ languagesCLI, CI, IDECustom rules, fast scanning
SonarQube25+ languagesServer + CIEnterprise security + quality
CodeQL6+ languagesGitHub nativeOpen source, deep analysis
Snyk Code10+ languagesCLI, IDE, CIDeveloper-friendly, real-time
Checkmarx25+ languagesEnterprise platformCompliance-driven orgs

What SAST Catches

VulnerabilityExample
SQL injectionString concatenation in queries
XSSUnsanitized user input in HTML
Path traversalUser-controlled file paths
Hardcoded secretsAPI keys, passwords in source code
Insecure deserializationUntrusted data in deserialize calls
Weak cryptographyMD5/SHA1 for passwords, weak key sizes

SCA (Software Composition Analysis)

ToolEcosystemDatabaseBest For
SnykNPM, pip, Maven, Go, etc.ProprietaryDeveloper workflow integration
DependabotGitHub ecosystemGitHub Advisory DBGitHub-native projects
TrivyContainers + languagesMultiple DBsContainer + dependency scanning
OWASP Dependency-CheckJava, .NET, NodeNVDOpen source, comprehensive
RenovateMulti-platformMultipleAuto-update + vulnerability alerts

DAST (Dynamic Application Security Testing)

ToolApproachBest For
OWASP ZAPProxy-based scannerFree, comprehensive web scanning
Burp SuiteProxy + active scannerProfessional penetration testing
NucleiTemplate-based scannerFast, customizable scanning
NiktoWeb server scannerServer misconfiguration
sqlmapSQL injection automationDatabase-specific injection testing

OWASP Top 10 Testing Coverage

VulnerabilityTest Method
A01: Broken Access ControlDAST + manual review of authorization logic
A02: Cryptographic FailuresSAST + SSL/TLS scanner
A03: InjectionSAST + DAST + fuzzing
A04: Insecure DesignThreat modeling + manual review
A05: Security MisconfigurationDAST + infrastructure scanning
A06: Vulnerable ComponentsSCA
A07: Auth FailuresDAST + custom tests
A08: Data Integrity FailuresSAST + DAST
A09: Logging FailuresManual review + SAST
A10: SSRFDAST + fuzzing

CI/CD Integration

Pull Request:
    → SAST scan (Semgrep/CodeQL) — block on critical/high
    → SCA scan (Snyk/Trivy) — block on known exploited CVEs
    → Secret scanning (gitleaks) — block on any detection

Merge to main:
    → Full SAST scan
    → DAST scan against staging
    → Container image scan

Pre-release:
    → Penetration test (quarterly)
    → Compliance scan

Fuzzing

ToolTargetLanguage
AFL++Binary fuzzingC/C++
LibFuzzerIn-process fuzzingC/C++
AtherisPython fuzzingPython
JazzerJVM fuzzingJava/Kotlin
go-fuzzGo fuzzingGo
cargo-fuzzRust fuzzingRust

Anti-Patterns

Anti-PatternProblemFix
Security testing only before releaseVulnerabilities found too late to fixShift left: SAST on every PR
Ignoring SCA alertsKnown vulnerabilities in productionAuto-patch with Dependabot, block on critical CVEs
DAST without authenticationMisses authenticated-only vulnerabilitiesConfigure DAST with valid session tokens
No severity triageAll findings treated equallyCategorize: critical (block), high (fix in sprint), medium (backlog)
Penetration testing once a yearGaps between tests accumulateQuarterly pen tests + continuous automated scanning

Checklist

  • SAST integrated into PR pipeline (block on critical findings)
  • SCA scanning on every build (block on known exploited CVEs)
  • Secret scanning on every commit (gitleaks or GitHub secret scanning)
  • DAST runs against staging after every deployment
  • Container image scanning before pushing to registry
  • Penetration testing scheduled quarterly
  • OWASP Top 10 coverage verified
  • Security findings triaged and tracked like bugs
  • Developer security training annually

:::note[Source] This guide is derived from operational intelligence at Garnet Grid Consulting. For application security consulting, visit garnetgrid.com. :::

Jakub Dimitri Rezayev
Jakub Dimitri Rezayev
Founder & Chief Architect • Garnet Grid Consulting

Jakub holds an M.S. in Customer Intelligence & Analytics and a B.S. in Finance & Computer Science from Pace University. With deep expertise spanning D365 F&O, Azure, Power BI, and AI/ML systems, he architects enterprise solutions that bridge legacy systems and modern technology — and has led multi-million dollar ERP implementations for Fortune 500 supply chains.

View Full Profile →