Verified by Garnet Grid

Software Supply Chain Security

Secure your software supply chain. Covers SBOM, dependency scanning, SLSA framework, signed builds, artifact verification, and protecting against supply chain attacks.

Supply chain attacks target the code and tools you trust: open-source dependencies, CI/CD pipelines, build systems, and package registries. The SolarWinds attack compromised 18,000 organizations through a single build system. The Log4Shell vulnerability (CVE-2021-44228) affected virtually every Java application. These aren’t edge cases — they’re the new normal.


Attack Vectors

VectorExampleImpact
Dependency confusionAttacker publishes malicious package with same name on public registryMalware in your build
Typosquattingreqeusts instead of requestsCredential theft
Compromised maintainerMaintainer account hijackedBackdoor in popular package
Build system compromiseCI/CD pipeline injected with malicious stepsMalicious artifacts deployed
Registry poisoningMalicious image pushed to Docker HubCompromised containers

SLSA Framework

LevelRequirementsWhat It Prevents
SLSA 1Build process documentedUntracked builds
SLSA 2Version-controlled build, authenticated provenanceTampered source
SLSA 3Hardened build platform, non-falsifiable provenanceCompromised build
SLSA 4Two-person review, hermetic buildsInsider threats

Build Provenance

# GitHub Actions with SLSA provenance
jobs:
  build:
    permissions:
      id-token: write     # OIDC token for signing
      contents: read
      attestations: write
    
    steps:
      - uses: actions/checkout@v4
      
      - name: Build artifact
        run: make build
      
      - name: Generate SBOM
        run: |
          syft . -o spdx-json > sbom.spdx.json
      
      - name: Attest build provenance
        uses: actions/attest-build-provenance@v1
        with:
          subject-path: 'dist/app'
      
      - name: Attest SBOM
        uses: actions/attest-sbom@v1
        with:
          subject-path: 'dist/app'
          sbom-path: 'sbom.spdx.json'

Dependency Management

# Dependabot configuration
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 10
    groups:
      production-dependencies:
        patterns: ["*"]
        exclude-patterns: ["@types/*", "eslint*", "jest*"]
        update-types: ["minor", "patch"]
    security-updates:
      enabled: true

Lockfile Best Practices

PracticeWhy
Always commit lockfilesReproducible builds, prevent supply chain drift
Pin major versions^1.0.0 allows minor updates, 1.0.0 pins exactly
Audit regularlynpm audit, pip audit, cargo audit
Use private registryMirror public packages, scan before allowing
Review new dependenciesCheck maintenance status, download count, funding

Anti-Patterns

Anti-PatternProblemFix
No lockfile committedDifferent builds get different dependenciesCommit and enforce lockfile usage
Blind dependency updatesAuto-merge without reviewReview dependency diffs, especially new packages
No SBOMDon’t know what’s in your softwareGenerate SBOM on every build
Trust-by-default for packagesInstall anything from npm/PyPIPrivate registry as proxy with scanning
Build on developer machinesNo reproducibility or integrityCI/CD builds only, hermetic builds

Checklist

  • Dependency scanning: automated vulnerability scanning (Dependabot, Snyk)
  • SBOM: generated and stored for every release
  • Lockfiles: committed, enforced in CI
  • Private registry: proxy for public packages with scanning
  • Build provenance: SLSA Level 2+ with signed attestations
  • Image signing: all container images signed (cosign, Notary)
  • Dependency review: new dependencies reviewed before merging
  • Pin dependencies: exact versions in production
  • Audit schedule: weekly dependency vulnerability scans

:::note[Source] This guide is derived from operational intelligence at Garnet Grid Consulting. For supply chain security consulting, visit garnetgrid.com. :::

Jakub Dimitri Rezayev
Jakub Dimitri Rezayev
Founder & Chief Architect • Garnet Grid Consulting

Jakub holds an M.S. in Customer Intelligence & Analytics and a B.S. in Finance & Computer Science from Pace University. With deep expertise spanning D365 F&O, Azure, Power BI, and AI/ML systems, he architects enterprise solutions that bridge legacy systems and modern technology — and has led multi-million dollar ERP implementations for Fortune 500 supply chains.

View Full Profile →