dpndncY

Block risky packages before they enter your tree.

The Dependency Firewall sits between your developers (or CI) and the package registries. It refuses risky packages at install time and signs every decision.

Where it lives

Package-manager registry-proxy mode. Your developers and CI runners point at the firewall as their npm / PyPI / Maven / NuGet / RubyGems / Cargo / Go module proxy. The firewall evaluates every install request and either forwards the upstream payload (allow), returns a structured 403 (block), or returns an allow with a signed warning (warn).

What it evaluates

For every {ecosystem, name, version} request:

  • CISA KEV status
  • EPSS exploitation probability
  • ExploitDB entry presence
  • JS/TS reachability against your call graph
  • Attack-path score
  • License obligations against your blocklist
  • Trust-delta vs. the last approved version

Three rollout modes

ModeBehaviourSigns a verdict?
observeLogs the decision; always forwards the upstream payloadyes — verdict allow-observed
soakSurfaces the verdict as a warning; forwards the payloadyes — verdict warn
enforceReturns 403 if the verdict is blockyes — verdict block or allow

Trust-delta gating

Absolute thresholds miss the threats that matter most: maintainer takeovers, credential leaks, dependency confusion. Trust-delta gating compares the trust score of the requested version against the last approved one. A drop of more than your configured delta triggers a block — even without a CVE.

policy.yaml
firewall:
  mode: enforce
  trust_delta:
    threshold: 0.30          # block if score drops > 0.30
    cooldown_hours: 24       # block fresh versions for 24h
  signals:
    kev: { block_on_match: true }
    epss: { block_at_or_above: 0.90 }
    license:
      blocklist: ["AGPL-3.0", "SSPL-1.0"]

Signed bypass

Bypass is supported — emergencies happen. But every bypass requires either a signed waiver (cryptographically signed by a designated approver), an expiring one-shot token, or a human-approver workflow. Bypass attempts themselves are audited and signed. See Signed bypass.

Enforce mode in production
Start in observe for at least one full release cycle. Move to soak for a sprint or two. Only then flip to enforce. This is the same ramp big-co security teams use for WAF rule rollout — skip it at your peril.