What is a dependency firewall?
A dependency firewall checks every open source package before your developers, pipelines or AI agents install it. Packages that break your rules are blocked or held back. The rest install as usual.
Firewall log
npm ci · GitHub Actions · web-app
- Allowed
react@19.1.1
Passed all rules
- Blocked
event-stream@3.3.6
Known malware
- Allowed
express@5.1.0
Passed all rules
- Blocked
lodash@4.17.20
CVE-2021-23337, CVSS 7.2
- Delayed
vite@8.2.0
Published 2 days ago, 7-day hold
- Allowed
zod@4.1.12
Passed all rules
It sits between your builds and the registries
Developers, pipelines and AI agents keep using npm, pip, Maven and Docker. Each request goes to the firewall first. It fetches the package, checks it and serves it only if your rules allow it.
Who installs
- Developer laptops
- CI/CD pipelines
- AI coding agents
Dependency firewall
Checks each package and version against your rules
- Malware
- CVE score
- License
- Release age
- Provenance
- Internal names
Where packages come from
- Package registriesnpm, PyPI, Maven Central and more
- Container registriesDocker Hub, GHCR, Amazon ECR
- Your repository managerArtifactory, Nexus
Setup is one line
Point the package manager at the firewall. pip, Maven, NuGet, Go and Docker take the same kind of change.
npm config set registry
https://<firewall-host>/v1/<namespace-id>/npm/<firewall-id>/Every package is checked
Direct and transitive dependencies go through the same rules. So do container images and their layers.
A block stops the build
The package manager reports that the version was not found. The firewall log names the rule, package, version and requester.
How it compares to SCA and repository managers
The three tools act at different moments. A dependency firewall decides what gets installed. An SCA scanner reports on what is already in your code. A repository manager stores and serves packages.
| Question | Dependency firewall | SCA scanner | Repository manager |
|---|---|---|---|
| When it acts | On each package request, before install | After install, on code, lockfiles and images | On each package request, to fetch and cache |
| Stops the install | Yes | No, it reports and opens pull requests | Most often no, it serves what is requested |
| Malware with no CVE | Blocked from malware data | Most often missed | Served like any other package |
| A version published yesterday | Held for a window you set | Unchecked until an advisory exists | Most often served right away |
| Examples | Dependency Firewall by Bytesafe | Snyk, Dependabot, OWASP Dependency-Check | Artifactory, Nexus, GitHub Packages, Azure Artifacts |
When it acts
- Dependency firewall
- On each package request, before install
- SCA scanner
- After install, on code, lockfiles and images
- Repository manager
- On each package request, to fetch and cache
Stops the install
- Dependency firewall
- Yes
- SCA scanner
- No, it reports and opens pull requests
- Repository manager
- Most often no, it serves what is requested
Malware with no CVE
- Dependency firewall
- Blocked from malware data
- SCA scanner
- Most often missed
- Repository manager
- Served like any other package
A version published yesterday
- Dependency firewall
- Held for a window you set
- SCA scanner
- Unchecked until an advisory exists
- Repository manager
- Most often served right away
Examples
- Dependency firewall
- Dependency Firewall by Bytesafe
- SCA scanner
- Snyk, Dependabot, OWASP Dependency-Check
- Repository manager
- Artifactory, Nexus, GitHub Packages, Azure Artifacts
They work together. Dependency Firewall sits in front of your repository manager, and your SCA scanner keeps checking code that already shipped.
Malware rarely gets a CVE
CVE databases track bugs in legitimate software. A package built to steal credentials is most often removed from the registry and never gets a CVE.
A scanner that matches CVEs has nothing to match. These checks work without one.
- Package delay
- Hold newly published versions for a window you set, so malware feeds can catch a bad release before your builds install it.
- Known malware
- Block packages that match malware data, including malicious payloads and suspicious install hooks.
- Install scripts
- Block packages that run scripts during install, on npm, PyPI and Composer.
- Dependency confusion
- Internal package names always resolve from your private registry. A public package with the same name cannot take its place.
- Trust downgrades
- Flag npm releases published with weaker provenance than the version before them, the pattern behind account takeovers. npm only today.
Half the base fee for your first 3 months
€49.50 instead of €99 per month, plus €100 usage credit. Start with a 14-day trial. See what's new
Dependency Firewall
The managed dependency firewall in the Bytesafe platform, hosted in the EU. It runs every check above, and works in front of Artifactory, Nexus, GitLab, GitHub Packages and Azure Artifacts.
npm dependency firewall
PyPI dependency firewall
Maven dependency firewall
NuGet dependency firewall
Go dependency firewall
Composer dependency firewall
Cargo dependency firewall
RubyGems dependency firewall
Conda dependency firewall
Containers dependency firewall
On top of the checks above
- Vulnerability thresholds
- Block CVEs above a CVSS or EPSS score, per team or registry. New advisories apply on the next request.
- License rules
- Block disallowed licenses before they reach a build.
- A firewall per team
- Each team, pipeline or registry gets its own rules. A shared baseline runs first and cannot be weakened.
- Exceptions
- Developers request one from the blocked install, and the team you choose unblocks the package for a set time, with the reason logged.
- Audit log
- Every allow, block and exception, with rule, requester and time. Exports to your SIEM.
- Rules as code
- JSON files in Git, a full API, and rollback to any earlier configuration.
Common questions
Does a dependency firewall replace SCA?
No. They act at different moments. The firewall decides what gets installed. An SCA scanner reports on code, lockfiles and images you already have. Run both.
What happens when a package is blocked?
The package manager reports that the version could not be found, and the build stops. The firewall log shows the rule, package, version, user and IP. A developer can request a time-limited exception from the log entry, and the team that owns the rules approves or denies it.
What do developers need to change?
The registry URL, once: in .npmrc, pip.conf, settings.xml or NuGet.config, or as the upstream of your repository manager. No code, lockfile or manifest changes.
Does it work with Artifactory or Nexus?
Yes. The firewall speaks the same protocols as your package managers, so it sits in front of JFrog Artifactory, Sonatype Nexus, GitLab, GitHub Packages and Azure Artifacts as an upstream.
Try a dependency firewall on one project
Point one package manager at Dependency Firewall and read the log after the next install. No agent installs and no workflow changes.