Static Application Security Testing
Static Application Security Testing, or SAST, examines source code without running the application to find patterns that may create security weaknesses. It gives developers early feedback, but each finding still needs context and review.
itOffensive security and application security | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic - Static Application Security Testing
Static Application Security Testing, usually shortened to SAST, reads code while it is sitting quietly on disk, minding its own business. The point is to spot security-relevant paths before the application runs, which is considerate because a production incident has poor manners and worse timing.
The central trick is not mystical. The analyzer parses code, builds a model, and applies rules or queries. In a taint analysis, it follows data from a source, where untrusted input arrives, toward a sink, where that input could do something security-sensitive. A sanitizer is the control that makes the data safe for one particular use. It is a small vocabulary for a surprisingly large amount of trouble.
Here is the part that catches people out: a finding is a hypothesis, not a conviction. The analyzer can miss a validation helper, misunderstand a framework flow, or point at a path that never runs. Conversely, the path can be reachable and unsafe. The useful work is triage: check the source, flow, sink, controls, and deployment context before choosing a fix or documenting a suppression.
SAST belongs early because it does not need a running target. Put it near the editor, pull request, and continuous-integration checks, where feedback is still attached to the change that caused it. Start with supported languages and a maintained baseline. Triage the existing backlog before making results blocking. Otherwise the scanner becomes an extremely diligent machine for manufacturing unresolved chores.
It also has limits, because of course it does. A clean scan says only that the configured rules found nothing in the code they analyzed. It does not settle runtime behavior, third-party dependency risk, or business logic. DAST looks at running interfaces. Software Composition Analysis examines dependencies. Manual secure code review supplies the human context that neither scanner can conjure from a parse tree.
Read the Course tab for the full path from code to finding and fix. The Cheatsheet keeps the triage vocabulary and coverage questions close at hand. The Practice tab turns that model into a controlled scan and a written decision. The Quiz checks whether the distinction between evidence and proof has survived the journey, which is more useful than teaching the scanner to sound confident.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://owasp.org/www-community/controls/Static_Code_Analysis
Supports
- Definition of static code analysis as non-running source-code analysis
- Taint analysis and data-flow analysis terminology
- Static-analysis findings as aids requiring analyst review
- False-positive and false-negative limits
- https://owasp.org/www-project-devsecops-guideline/latest/00a-Overview
Supports
- Static testing before execution and early delivery-pipeline placement
- Relationship between SAST, DAST, and IAST
- https://cheatsheetseries.owasp.org/cheatsheets/Secure_Code_Review_Cheat_Sheet.html
Supports
- Manual secure code review as a complement for logic and contextual vulnerabilities
- https://docs.github.com/en/code-security/reference/code-scanning/codeql/codeql-queries
Supports
- CodeQL built-in query suites organized by language
- https://codeql.github.com/docs/codeql-overview/about-codeql/
Supports
- CodeQL query-based analysis and variant analysis
- https://semgrep.dev/docs/writing-rules/glossary
Supports
- Semgrep terminology for taint analysis, constant propagation, and cross-file analysis
- https://github.com/sindresorhus/awesome
Supports
- Discovery of the Application Security awesome-list category used to select ecosystem tools
- https://semgrep.dev/products/community-edition
Supports
- Semgrep Community Edition rule scanning and OWASP ruleset use
- https://docs.github.com/en/code-security/concepts/code-scanning/setup-types
Supports
- GitHub CodeQL setup and pull-request code scanning placement
- https://docs.snyk.io/scan-with-snyk/snyk-code
Supports
- Snyk Code SAST analysis, data flow, and IDE, repository, CLI, and CI integration
- https://docs.sonarsource.com/sonarqube-community-build
Supports
- SonarQube Community Build static analysis and CI integration
- https://docs.checkmarx.com/en/34965-44074-checkmarx-sast.html
Supports
- Checkmarx SAST product documentation and result-triage capability
- https://docs.veracode.com/r/Static_Analysis_Quickstart
Supports
- Veracode Static Analysis application profile and review workflow
- https://devblogs.microsoft.com/devops/microsoft-devsecops-static-application-security-testing-sast-exercise/
Supports
- Practitioner guidance on separating fast pull-request scans from thorough scanning and reducing false positives
