Van de SolarWinds-hack tot kwaadaardige npm-packages: supply chain aanvallen zijn een van de snelst groeiende bedreigingen in software development. Eén gecompromitteerde dependency kan duizenden applicaties tegelijk infecteren.
Typen Supply Chain Aanvallen
Supply chain aanvallen richten zich op de zwakste schakel: de software en tools die je gebruikt om je applicatie te bouwen. Aanvallers gebruiken verschillende technieken om kwaadaardige code in je dependency tree te injecteren, vaak zonder dat je het merkt tot het te laat is.
- Typosquatting — Packages met namen die lijken op populaire libraries (bijv. "lod-ash" vs "lodash")
- Dependency Confusion — Interne package-namen claimen op publieke registries
- Compromised Maintainers — Accounts van maintainers overnemen om malware te injecteren
- Build System Attacks — CI/CD pipelines compromitteren (bijv. SolarWinds, Codecov)
- Malicious Updates — Legitieme packages die kwaadaardige code bevatten na een update
Bescherming: SBOM, Lockfiles & Scanning
Een Software Bill of Materials (SBOM) is een volledige inventaris van alle software-componenten in je applicatie. Net als een ingrediëntenlijst op voedsel, vertelt het je precies wat er in je software zit. Gebruik tools als Syft of CycloneDX om automatisch een SBOM te genereren.
Commit altijd je lockfiles (package-lock.json, yarn.lock). Deze garanderen dat iedereen exact dezelfde versies installeert. Gebruik npm ci in plaats van npm install in CI/CD om te voorkomen dat lockfiles onverwacht worden gewijzigd.
# Dependency audit en scanning
npm audit --production
npm audit fix
# SBOM genereren met Syft
syft packages dir:. -o cyclonedx-json > sbom.json
# Kwetsbaarheden scannen met Grype
grype sbom:sbom.json --fail-on high
# Lockfile integriteit verifiëren
npm ci --ignore-scripts # Geen post-install scripts
# GitHub Actions voorbeeld
# .github/workflows/security.yml
# - name: Security Audit
# run: |
# npm ci
# npm audit --audit-level=high
# npx snyk test --severity-threshold=high
Organisatorische Maatregelen
Technische tools alleen zijn niet genoeg. Stel een beleid op voor het toevoegen van nieuwe dependencies: wie keurt ze goed? Worden ze geëvalueerd op maintenance status, download-aantallen en security track record? Een private registry (zoals Verdaccio of Artifactory) kan als gateway fungeren.
Train je team om verdachte packages te herkennen: ongewone post-install scripts, packages die recent van eigenaar zijn gewisseld, of packages met ongebruikelijk lage download-aantallen. Automatiseer dependency updates met Dependabot of Renovate, en review elke update zorgvuldig.
Pro Tip
Voeg npm audit als verplichte stap toe aan je CI/CD pipeline met --audit-level=high. Dit blokkeert deployments automatisch als er high of critical kwetsbaarheden in je dependencies zitten. Combineer dit met Snyk of Socket.dev voor diepere analyse.
Deel dit artikel