Attacks that npmvc kills before they run.
npm dependencies execute arbitrary code on your machine, in CI, in production. If the publisher can be impersonated, or the tarball replaced, you lose.
Typosquats
unattested=blockchaik → chalk. Unattested look-alikes fail policy before install.
Maintainer takeover
publisherContinuityOld DID disappears, new DID arrives. No handover credential = block.
Protestware / sabotage
requireAuditWithinNew version from a trusted issuer still requires fresh audit within 90d.
Lifecycle scripts
lifecycleScriptspostinstall hooks whitelisted only. Everything else refuses to run.
Zero-day exploitation
minAge=7dminAge enforces a 7-day quarantine. Fresh CVEs are not your problem.
Stolen signing keys
did:webvhdid:webvh pre-rotation means a stolen key cannot update the DID log.
Three moving parts. No native deps. Works with npm, pnpm, yarn.
Publishers sign
Ed25519 key pair. Provenance + SBOM + Lifecycle wrapped in DSSE envelopes. Uploaded to npmvc.com or self-hosted.
Registry resolves
Hash-chained DID log with pre-rotation. Public-key lookup, revocation status, trust root — all from one URL.
Consumers verify
Preinstall hook walks the lockfile, checks every signature against your policy. Block, warn, or allow — your call.
The supply chain, from an empty canvas.
Three packages. One issuer. Every credential public and verifiable. This page will fill in as the ecosystem signs.