| Semgrep OSS (SAST) | Multi-language pattern rules across an explicit OSS pack list (p/owasp-top-ten, p/security-audit, p/cwe-top-25, p/secrets, p/jwt, p/django, p/flask, p/express, p/nodejs, p/golang, p/r2c-security-audit). No --config=auto, no Pro rules. Override via PENCHEFF_SEMGREP_PACKS. | LGPL-2.1 (subprocess-only) |
| Bandit (SAST, Python) | Python-specific issues — hard-coded passwords, weak crypto, shell injection, deserialisation. | Apache-2.0 |
| gosec (SAST, Go) | Go-specific G-rules — sql injection, unsafe rand, weak crypto. Auto-skipped on no-Go trees. | Apache-2.0 |
| Brakeman (SAST, Rails) | Rails-specific issues — mass assignment, SSL config, Rails-idiomatic command injection. Auto-skipped on non-Rails Ruby. | MIT |
| ESLint-security (SAST, JS/TS) | detect-object-injection, detect-eval-with-expression, detect-non-literal-regexp, detect-unsafe-regex, etc. Pinned flat config — ignores any .eslintrc in the target. | MIT / Apache-2.0 |
| Tree-sitter pack (SAST, niche) | Solidity ships at v0.7 (4 hand-curated rules). Lua / Scala / Dart / Kotlin / Swift / COBOL / Erlang scaffolded — drop a queries.scm + rules.json in. | MIT (queries) |
| Trivy (SCA + IaC + secrets + container) | Dependency CVEs, IaC misconfigs (Terraform, K8s, CloudFormation, Helm), embedded secrets, container image issues. Pulls live OSV / NVD / EPSS / KEV data. | Apache-2.0 |
| Checkov (IaC) | 1,000+ policy rules for Terraform, K8s, ARM, Bicep, OpenAPI. | Apache-2.0 |
| OSV-Scanner / pip-audit / npm-audit (SCA) | Per-package vuln list reconciled with the SCA freshness layer. | Apache-2.0 / Apache-2.0 / Artistic-2.0 |
| Detect-Secrets / gitleaks (secrets) | Hardcoded API keys, tokens, private keys. | Apache-2.0 / MIT |