Skip to content

security: harden the dependency and CI/CD supply chain#30

Merged
wolpert merged 1 commit into
mainfrom
security/supply-chain-hardening
Jun 6, 2026
Merged

security: harden the dependency and CI/CD supply chain#30
wolpert merged 1 commit into
mainfrom
security/supply-chain-hardening

Conversation

@wolpert

@wolpert wolpert commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Addresses the supply-chain findings from the dependency security review. All six recommendations plus a threat-model update, in one commit.

Changes

Severity Fix
HIGH Dependabot auto-merge gate — only patch/minor bumps are auto-approved/merged; GitHub Actions updates are never auto-merged. A green CI run is no longer treated as evidence a new dependency release is trustworthy.
MED SHA-pin all GitHub Actions — every uses: pinned to a full commit SHA (version in a trailing comment) instead of a mutable @vN tag, across all workflows. Most important for the third-party softprops/action-gh-release in the privileged release job.
MED Gradle dependency verificationgradle/verification-metadata.xml pins sha256 for 633 components across the full build+test graph, so a swapped dependency/plugin/build-script artifact fails resolution.
MED/LOW Pin the Gradle distributiondistributionSha256Sum on the wrapper + a gradle/actions/wrapper-validation step in CI.
LOW Dependency review PR gateactions/dependency-review-action with fail-on-severity: high.
MED npm Dependabot coverage — the published browser SDK and each demo's Playwright e2e suite (previously unmonitored).
Threat model — new "Supply chain" section + 4th trust boundary documenting the vectors and mitigations, with a residual-risk note.

Validation

  • Ran a full clean build test twice. The generation run was BUILD SUCCESSFUL end-to-end; the enforcement re-run was BUILD SUCCESSFUL in 51s with zero dependency-verification failures (Postgres + DynamoDB integration tests executed, so their runtime deps are captured).
  • One intermediate run tripped the pre-existing, documented Spotless/google-java-format NoClassDefFoundError flake (unrelated to these changes); the subsequent run passed.
  • All workflow + Dependabot YAML validated.

Requires repo-settings action (cannot be done in code)

  • Private vulnerability reporting must be enabled in repo settings for the SECURITY.md "Report a vulnerability" path.
  • Dependency Graph must be enabled for dependency-review-action (default on for public repos).

🤖 Generated with Claude Code

Addresses the supply-chain findings from the dependency security review.

- Dependabot auto-merge: gate on update-type so only patch/minor bumps are
  auto-approved+merged; never auto-merge GitHub Actions updates. A green CI run
  is no longer treated as evidence that a new dependency release is trustworthy.
- Pin every GitHub Actions `uses:` to a full commit SHA (version in a trailing
  comment) instead of a mutable @vn tag, across all workflows. Most important for
  the third-party softprops/action-gh-release used in the privileged release job.
- Enable Gradle dependency verification (gradle/verification-metadata.xml,
  sha256 for 633 components across the full build+test graph) so a swapped
  dependency, plugin, or build-script artifact fails resolution. Validated by a
  clean `build test` run with verification enforced.
- Pin the Gradle distribution: add distributionSha256Sum to the wrapper, and add
  a gradle/actions/wrapper-validation step in CI to verify gradle-wrapper.jar.
- Add actions/dependency-review-action as a PR gate (fail-on-severity: high) to
  block newly introduced dependencies with known high-severity advisories.
- Extend Dependabot to the npm ecosystem (the published browser SDK and each
  demo's Playwright e2e suite), which were previously unmonitored.
- Document the build/distribution trust boundary and these mitigations in
  docs/threat-model.md (new "Supply chain" section + 4th trust boundary).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@wolpert
wolpert force-pushed the security/supply-chain-hardening branch from 39414f0 to 712a014 Compare June 6, 2026 14:50
@wolpert
wolpert merged commit bc54db5 into main Jun 6, 2026
3 checks passed
@wolpert
wolpert deleted the security/supply-chain-hardening branch June 6, 2026 15:01
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