Skip to content

security: fix 7 dep advisories + pin CI actions (drop exclusion) - #106

Merged
goetchstone merged 2 commits into
mainfrom
security/pin-ci-actions
Aug 18, 2026
Merged

security: fix 7 dep advisories + pin CI actions (drop exclusion)#106
goetchstone merged 2 commits into
mainfrom
security/pin-ci-actions

Conversation

@goetchstone

Copy link
Copy Markdown
Owner

What

"Check for security and dependency issues and fix them" — and this replaces the Semgrep exclusion from #94 with actual fixes.

Dependency advisories — 7 new HIGH, all fixed (zero allowlisting)

Since the last green run, 7 high advisories landed in the transitive tree (brace-expansion, js-yaml, undici, fast-uri, ip-address SSRF, nanoid, deepmerge-ts). All resolved to patched versions:

  • Most via npm audit fix (overrides for fast-uri/brace-expansion/etc.; js-yaml/undici/ip-address/nanoid patched in range)
  • deepmerge-ts (transitive via Prisma) → forced to ^8.0.1 via overrides; Prisma generate + build verified to survive the major. Reachability was uncertain (a deeply-nested tRPC input could reach it through Prisma), so I fixed it rather than accept it.

Audit gate now passes with no new allowlist entries.

CI supply-chain — the proper fix for the Semgrep findings you flagged

  • Pinned every GitHub Action to a commit SHA (version kept as a comment so Dependabot updates them). Mutable @vN tags are exactly the tj-actions/changed-files (Mar 2025) vector — a repointed tag runs attacker code with your CI secrets, incl. DEPLOY_SSH_KEY.
  • Added a Dependabot cooldown (default-days: 7; 2-day for npm patches) so a just-published, possibly-compromised release isn't adopted instantly.
  • Removed the two --exclude-rule lines from ci: exclude Semgrep CI-hygiene rules from gate #94 — the gate is honest again.

Verified

  • Semgrep full-repo scan, no exclusions: 0 findings (was 17)
  • npm audit gate: pass, 0 allowlisted
  • tsc, npm run build, prisma generate, 85 tests — all clean
  • All workflow YAMLs + dependabot.yml parse valid

🤖 Generated with Claude Code

brace-expansion/js-yaml/undici/fast-uri/ip-address/nanoid patched, and
deepmerge-ts forced to 8 (via Prisma; generate+build verified). Audit
gate passes with no allowlisting.
Pin every Action to a commit SHA (mutable tags are the tj-actions-style
supply-chain vector), add a dependabot cooldown, and drop the Semgrep
exclusion now the findings are genuinely resolved.
@goetchstone
goetchstone merged commit f4541f0 into main Aug 18, 2026
8 checks passed
@goetchstone
goetchstone deleted the security/pin-ci-actions branch August 18, 2026 10:36
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