Skip to content

ci: one security scan (SAST, Trivy, SBOM, ZAP DAST); local SAST with MicroHealth's rules - #19

Merged
bluenevus merged 1 commit into
mainfrom
integration
Oct 12, 2026
Merged

bluenevus merged 1 commit into
mainfrom
integration

Conversation

@bluenevus

Copy link
Copy Markdown
Contributor

Replaces sast.yml (PR #18, already merged) with one security-scan.yml calling MicroHealthLLC/sast-rules' shared security-scan.yml @ 341cd54 (v2026.10.5): SAST (Opengrep with MicroHealth's rules), Trivy, CycloneDX SBOM and ZAP DAST in parallel, one security-report. Every scanner is on.

  • Triggers: push to main (the default branch; release scans feed MicroHealth's reports) and integration, every PR (SAST diff vs. base, artifacts only), nightly, dispatch.
  • ZAP scans vars.ZAP_TARGET_URL; until set, ZAP is reported not_run with the reason (not a failure). SimplrSSH has no web endpoint, so it may stay that way.
  • It does not gate releases; Tests still does. Trivy does not read ESP-IDF component locks, so the Tests audit (esp-idf-sbom/NVD) remains the firmware CVE check.
  • Local: scripts/sast.sh (copied unchanged from sast-rules) and scripts/check.sh (guards, host tests, SAST).
  • Guard: test_supply_chain.SecurityScan fails if a scanner is switched off or local SAST is unwired.
  • SECURITY.md, README, AI_RULES updated.

Checks run locally: guard tests (91 OK), actionlint 1.7.7 (clean), ruff 0.16.9 (clean; CI pins 0.16.10). Not run locally: host C++ tests (no cmake here; no C++ changed) and scripts/sast.sh (no ECR login on this machine).

Merging releases the next patch (firmware unchanged).

🤖 Generated with Claude Code

…MicroHealth's rules

Replace sast.yml with security-scan.yml, the caller of MicroHealthLLC/sast-rules'
shared security-scan.yml @ 341cd54 (v2026.10.5): Opengrep SAST, Trivy, the
CycloneDX SBOM and ZAP DAST in parallel, one security-report. Every scanner is
on. Runs on pushes to main (the default branch, so release scans feed
MicroHealth's reports) and integration, every PR (diff SAST against the base),
nightly and on dispatch. ZAP scans vars.ZAP_TARGET_URL and is reported not_run
until it is set. It does not gate releases; the Tests workflow still does.

Local: scripts/sast.sh copied unchanged from sast-rules/local/sast.sh (it
reads the workflow pin); scripts/check.sh runs the guard tests, the host unit
tests, then SAST. A SecurityScan guard (test_supply_chain) fails if the scan
leaves security-scan.yml, a scanner is switched off, or local SAST is unwired.
SECURITY.md, README and AI_RULES updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bluenevus
bluenevus merged commit 2886a86 into main Oct 12, 2026
15 of 23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant