Static application security testing
Finds injection, unsafe APIs, weak crypto and tainted data reaching a sink without running the code.
Sub-techniques
4
| ID | Name | Description |
|---|---|---|
V1007.001 | Pattern rules | Syntax-aware patterns for dangerous calls and configurations (shell=True, yaml.load, disabled TLS verification). |
V1007.002 | Taint tracking | Follow untrusted input from sources to sinks across functions and files. |
V1007.003 | Language security linters | Per-language security rule sets maintained by each ecosystem. |
V1007.004 | Custom rule packs | Rules for the framework and helpers your code uses, with tests for each rule. |
Craft it
- Run a pattern scanner with a community rule pack and record the baseline.
- Write custom rules for your own wrappers (your query builder, your HTTP client), each with a positive and negative test file.
- Scan only changed files on PRs (diff-aware mode) and the whole repository on a schedule.
Reverse engineer it
Signs that a codebase already runs this technique, and where to read how it is configured.
- A codeql-analysis workflow, .semgrep.yml or a rules/ directory with YAML rules.
- bandit, gosec or security-code-scan in CI or pre-commit.
- SARIF uploads (github/codeql-action/upload-sarif) in workflows.
Where the scanned repositories configure it:
.github/workflows/*.ymlin 70 repositories.pre-commit-config.yamlin 4 repositoriespyproject.tomlin 1 repositoriestox.iniin 1 repositories
Detected by the scanner as: Security scanning (injection, unsafe apis and tainted data reaching a sink.)
Open-source packages
7
- Opengrep opengrep/opengrep
- Semgrep CE semgrep/semgrep
- Bandit PyCQA/bandit
- gosec securego/gosec
- Security Code Scan security-code-scan/security-code-scan
- Find Security Bugs find-sec-bugs/find-sec-bugs
- eslint-plugin-security eslint-community/eslint-plugin-security
Tools seen in scans
by repositories that run them
Procedure examples
repositories that run it, most-starred first; 40 of 71
| Repository | Tools | Runs in | Evidence |
|---|---|---|---|
| microsoft/vscode | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[2] (Perform CodeQL Analysis) |
| nodejs/node | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[3] (Perform CodeQL Analysis) |
| langflow-ai/langflow | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[3] (Perform CodeQL Analysis) |
| microsoft/typescript | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[6] |
| mui/material-ui | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[2] (Perform CodeQL Analysis) |
| neovim/neovim | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[4] (Perform CodeQL Analysis) |
| mermaid-js/mermaid | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[3] (Perform CodeQL Analysis) |
| gin-gonic/gin | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[2] (Perform CodeQL Analysis) |
| home-assistant/core | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[2] (Perform CodeQL Analysis) |
| redis/redis | codeql |
ci | .github/workflows/codeql-analysis.yml jobs.analyze.steps[3] (Perform CodeQL A... |
| vitejs/vite | semgrep |
ci | .github/workflows/semgrep.yml jobs.semgrep.steps[1] |
| nestjs/nest | codeql |
ci | .github/workflows/codeql-analysis.yml jobs.analyse.steps[3] (Perform CodeQL A... |
| expressjs/express | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[2] (Perform CodeQL Analysis) |
| lobehub/lobe-chat | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[2] (Perform CodeQL analysis) |
| google-gemini/gemini-cli | codeql |
ci | .github/workflows/ci.yml jobs.codeql.steps[2] (Perform CodeQL Analysis) |
| prometheus/prometheus | codeql |
ci | .github/workflows/codeql-analysis.yml jobs.analyze.steps[3] (Perform CodeQL A... |
| mvanhorn/last30days-skill | semgrep |
ci | .github/workflows/security.yml jobs.sast-scan.steps[1] (Run Semgrep SAST scan) |
| nuxt/nuxt | codeql |
ci | .github/workflows/ci.yml jobs.codeql.steps[2] (Perform CodeQL Analysis) |
| traefik/traefik | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[4] (Perform CodeQL Analysis) |
| appwrite/appwrite | codeql, semgrep |
ci | .github/workflows/codeql-analysis.yml jobs.analyze.steps[2] (Perform CodeQL A... |
| mastodon/mastodon | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[3] (Perform CodeQL Analysis) |
| ruvnet/ruflo | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[3] (Perform CodeQL Analysis) |
| Homebrew/brew | codeql |
ci | .github/workflows/codeql-analysis.yml jobs.analyze.steps[2] (Perform CodeQL A... |
| prisma/prisma | codeql, semgrep |
ci | .github/workflows/codeql-analysis.yml jobs.analyze.steps[3] (Perform CodeQL A... |
| getsentry/sentry | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[2] (Perform CodeQL Analysis) |
| apache/airflow | bandit, codeql |
pre-commit, ci | .pre-commit-config.yaml hooks.bandit |
| novuhq/novu | codeql |
ci | .github/workflows/codeql-analysis.yml jobs.analyze.steps[3] (Perform CodeQL A... |
| netty/netty | codeql |
ci | .github/workflows/codeql-analysis.yml jobs.analyze.steps[6] (Perform CodeQL A... |
| crewaiinc/crewai | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[3] (Perform CodeQL Analysis) |
| llvm/llvm-project | codeql |
ci | .github/workflows/gha-codeql.yml jobs.codeql.steps[2] (Perform CodeQL Analysis) |
| diegosouzapw/OmniRoute | codeql, semgrep |
ci | .github/workflows/codeql.yml jobs.analyze.steps[2] |
| duckdb/duckdb | codeql |
ci | .github/workflows/NightlyTests.yml jobs.codeql-analyze.steps[4] (Perform Code... |
| openai/openai-python | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[2] (Analyze) |
| drizzle-team/drizzle-orm | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[3] (Perform CodeQL Analysis) |
| celery/celery | bandit, codeql, semgrep |
ci, local | .github/workflows/python-package.yml jobs.Unit.steps[4] (Run tox for "${{ mat... |
| tj/commander.js | codeql |
ci | .github/workflows/codeql-analysis.yml jobs.analyze.steps[3] (Perform CodeQL A... |
| BerriAI/litellm | codeql, semgrep |
ci | .github/workflows/codeql.yml jobs.analyze.steps[2] (Perform CodeQL Analysis) |
| nrwl/nx | codeql |
ci | .github/workflows/codeql-master.yml jobs.analyze.steps[5] (Perform CodeQL Ana... |
| promptfoo/promptfoo | codeql |
ci | .github/workflows/codeql.yml jobs.analyze.steps[2] |
| QwenLM/qwen-code | codeql |
ci | .github/workflows/codeql.yml jobs.codeql.steps[2] (Perform CodeQL Analysis) |