2.1 KiB
2.1 KiB
A03: Software Supply Chain Failures
Last updated: March 1, 2026
Findings addressed
- Production dependency vulnerabilities were present in both API and web lockfiles.
- Deploy pipeline had no explicit dependency vulnerability gate.
Fixes implemented
- Dependency remediation:
- Ran
npm audit fixinapiandweb. - Revalidated production dependencies are clean with
npm audit --omit=dev.
- Pipeline hardening:
- Added supply-chain check step in deploy workflow:
npm ci+npm audit --omit=dev --audit-level=highfor API and web.
- Updated checkout action from broad major tag to explicit release tag
v4.2.2.
Files changed
.gitea/workflows/deploy.ymlapi/package-lock.jsonweb/package-lock.jsonapi/tests/software-supply-chain-failures.test.tsapi/vitest.security.config.ts
Verification
Production dependency vulnerability scans
Command:
cd api
npm audit --omit=dev --audit-level=high
cd ../web
npm audit --omit=dev --audit-level=high
Verified output:
found 0 vulnerabilities(api)found 0 vulnerabilities(web)
Workflow policy verification (automated)
Command:
cd api
npx vitest run -c vitest.security.config.ts tests/software-supply-chain-failures.test.ts
Verified output:
- Test Files:
1 passed (1) - Tests:
2 passed (2)
Coverage in policy suite:
- Deploy workflow includes dependency gate step for API and web.
- Workflow requires
npm ciandnpm audit --omit=dev --audit-level=highfor both projects. actions/checkoutremains pinned to an explicit release tag.
Residual risks (not yet fully eliminated)
- Base image tags are still mutable (
node:20-bookworm-slim,postgres:15) and not digest-pinned. actions/checkoutis pinned to a release tag, not a full commit SHA.- No artifact signing/attestation verification (e.g., cosign/SLSA) in current deploy pipeline.
Recommended next hardening steps
- Pin container images by immutable digest in
Dockerfile/docker-compose.yml. - Pin workflow actions to full commit SHAs.
- Add SBOM generation and signature/attestation verification before deploy.