Skip to main content

Overview

CaseBender’s supply-chain workflows combine dependency controls, image scanning, SBOM generation, digest-based signing, and provenance. Vulnerability gates run before publication; signing and attestation coverage depends on the registry channel and release workflow described below.

Pipeline Workflows

GitHub workflow badge images are not publicly readable for this private repository and return 404 Not Found when embedded without an authorized GitHub session. Authorized reviewers can use the links above; public assurance should rely on release-specific signatures, SBOMs, provenance metadata, and provided reports.
Stable publication starts from a protected SemVer Git tag. Manual workflow dispatch is recovery-only: it must run from main, requires an existing release tag, reuses that tag’s signed candidate digests, and cannot create a new release from arbitrary branch contents.

Dependency Management

Resolution Control

The lockfile records exact resolved dependency versions, while some package manifests retain compatible version ranges:
  • save-exact=true in .npmrc makes newly added dependencies exact by default
  • strict-peer-dependencies=false is currently required for documented React 19 peer-range incompatibilities; CI still reports peer warnings
  • pnpm install --frozen-lockfile in all Dockerfiles ensures builds use exactly the versions in the lockfile
  • Node.js version pinned via .nvmrc and .node-version (Node.js 20.x)
  • pnpm version pinned in Dockerfiles to prevent tool-level supply chain attacks

Automated Dependency Updates

Dependabot monitors for updates across three ecosystems: Dependabot PRs are:
  • Automatically labeled with dependencies and security
  • Blocked from merging if they introduce HIGH or CRITICAL vulnerabilities
  • Reviewed by the security team before merge

Dependency Review

When GitHub Code Security is licensed and ENABLE_CODE_SCANNING is enabled, pull-request dependency deltas are checked for:
  • New dependencies with known vulnerabilities (HIGH/CRITICAL blocked)
  • Dependencies with forbidden licenses (copyleft licenses blocked)
  • Dependencies with no license (flagged for review)
  • Pre-release dependencies (documented and tracked)
Without that repository feature, the merge-blocking Trivy filesystem scan, production pnpm audit, and license-policy job remain active.

Approved Component Registry

CaseBender maintains a documented registry of approved third-party components organized by risk tier:

Container Security

Build Hardening

Every CaseBender container image follows security best practices:
  • Multi-stage builds: Build dependencies (compilers, dev tools) are excluded from production images
  • Non-root users: Each service runs as a dedicated non-root user inside the container
  • Alpine Linux: Minimal base images reduce attack surface
  • Pinned tool versions: System packages and global tools are version-pinned
  • No embedded secrets: All secrets are injected at runtime

Container Scanning

Every service image built by the pull-request security workflow is scanned locally with Trivy for:
  • OS vulnerabilities: CVEs in Alpine packages
  • Application vulnerabilities: CVEs in Node.js dependencies
  • Misconfigurations: Dockerfile best practice violations
  • Secrets: Embedded credentials or API keys
Scans run on every PR and block merges if CRITICAL or HIGH vulnerabilities are found.

Image Signing

CaseBender uses Cosign keyless signing through Sigstore for customer-facing Docker Hub publications. Main builds publish SHA and edge tags. Only the release workflow can promote stable SemVer and latest tags.

Signed Images

Google Artifact Registry is used by the managed Cloud Run deployment workflow. Its signature-verification step is currently report-only during the SEC-019 rollout and must not be represented as a blocking signed-deployment gate.

Verification

Across the signed publication workflows, controls include:
  1. Signature Verification: Cosign verifies the image signature against the Sigstore transparency log
  2. SBOM and provenance attestations: BuildKit binds generated attestations to the image digest
  3. Vulnerability Scan: Final Trivy scan for CRITICAL vulnerabilities
You can verify any CaseBender image signature yourself using:

SBOM (Software Bill of Materials)

Every release image includes a BuildKit-generated SBOM attestation:
  • Generated by: Docker BuildKit
  • Bound to: The immutable image digest
  • Protected by: Registry provenance plus the digest’s Cosign signature
  • Release evidence: The customer bundle records all seven signed digests
The SBOM documents every component in the container image:
  • Node.js runtime version
  • All npm packages with exact versions
  • Alpine Linux packages
  • System libraries and their versions

SLSA Provenance

Docker BuildKit emits artifact-bound provenance (mode=max) for each published image. This replaces the former standalone metadata document whose subject was not bound to an image.

What Provenance Documents

Provenance Security

  • Provenance and SBOM attestations are emitted during the image build
  • Cosign signs the exact digest after vulnerability scanning
  • The release workflow verifies every signature before tag promotion
  • The signed customer bundle contains a manifest mapping each service to its digest

Pre-Deployment Verification

The Cloud deployment workflow runs reproducibility and image-verification checks before deployment. Their current enforcement differs:

Reproducible Build Verification

This is a required job and checks that the build environment is consistent:
  • Lockfile integrity (pnpm-lock.yaml exists and is valid)
  • Node.js version matches expected version (20.x)
  • pnpm version matches expected version (9.15.0)
  • .npmrc security settings are present (save-exact, audit)
  • No suspicious postinstall scripts in dependencies
  • Version pinning files (.nvmrc, .node-version) are present

Image Verification

The main and on-premises release workflows enforce image authenticity and safety before their public aliases move:
  • Hadolint Dockerfile policy
  • Trivy CRITICAL/HIGH vulnerability gate
  • BuildKit SBOM and provenance attestations
  • Cosign digest signing and exact workflow-identity verification
  • post-promotion digest verification

Compliance Mapping