- Warn: Records the event and allows the package installation without interrupting your CI pipeline.
- Block: Prevents the package installation entirely and returns an error.
How it works
The Package Firewall inspects each package request before the package is downloaded. When a developer or CI pipeline requests a package, the request routes through the Package Firewall, either directly or through a private registry such as JFrog Artifactory.- Route traffic through the Package Firewall: Your package manager or private registry forwards each request to the Package Firewall so that it evaluates every package before the download completes.
- Authenticate and control access: The Package Firewall verifies that each request presents an Endor Labs API key with the Package Firewall User role.
- Evaluate each package request: For each request, the Package Firewall parses the ecosystem, package name, and version, and checks it against the Endor Labs malware database. If a Package Firewall policy is configured, the firewall also evaluates restricted licenses, minimum package age, and exceptions before deciding on the action.
- Take action: Based on the malware check and policy conditions, the Package Firewall takes the configured action on the request and records an event with the package, version, and reason. When a package passes all checks, the installation proceeds and no log is recorded.
- Package Firewall logs: Package Firewall records the actions the firewall takes on package installation requests, which is helpful for debugging and compliance. The logs include details such as the package, version, time of the event, and the reason the firewall flagged the package.
Configure the Package Firewall
You can route package installations through the Package Firewall in two ways. Choose the integration that fits your environment.Direct integration
Direct integration routes installation requests from your machine through the Package Firewall directly, without an intermediary registry.
JFrog Artifactory
JFrog Artifactory uses the Package Firewall as its remote source instead of upstream package registries. Use this approach when your organization already uses Artifactory for package distribution.
View Package Firewall logs
To view Package Firewall logs in the Endor Labs application:- Select Package Firewall from the left sidebar.
-
Select an event to view the following details:
- Info: Package name, package version, API key, remote address, request URL, action taken, the reason the event was flagged, and when the event occurred.
- Risk Details: Explanation of why the package was flagged and remediation guidance.
- Metadata: Ecosystem, package release date, advisory published date, CWE ID, and OSV ID when available.
- Malware Info: Malware detection record in raw JSON format.
Filter Package Firewall logs
Use filters to narrow Package Firewall logs by ecosystem, action, rule reason, or time.- Select Package Firewall from the left sidebar.
- Toggle the filter panel to show the filters.
-
Set any of the following filters to narrow the log list.
- Ecosystem - Filter logs by their package ecosystem.
- Action: Filter logs by the action taken on the package installation, either Warning or Blocked.
- Reason: Filter logs by why the package was flagged, which can be Malware detected, Minimum package age not met, or Restricted license.
- All Time - Filter logs by when the event was recorded. You can select All Time, Last Day, Last Week, Last Month, Last 60 Days, Last 90 Days, or a custom range.
endorctl. See Query Package Firewall logs using endorctl.
Query Package Firewall logs using endorctl
The Package Firewall logs record every action the firewall takes on package installation requests. You can view them by querying theendorctl API.
-
To list all Package Firewall logs in your namespace, run the following command. Replace
<namespace>with your namespace. -
To list logs only for a specific ecosystem, add a filter.
Replace:
<ecosystem_variable>withECOSYSTEM_NPMfor npm,ECOSYSTEM_PYPIfor PyPI, andECOSYSTEM_GOfor Go.<namespace>with your namespace.
-
To list logs for a specific package in an ecosystem, use a filter with
spec.ecosystem,spec.package_name, andspec.package_version.Replace:<namespace>with your namespace.<ecosystem_variable>withECOSYSTEM_NPMfor npm,ECOSYSTEM_PYPIfor PyPI, andECOSYSTEM_GOfor Go.<package_name>with the package name you want to query.<package_version>with the package version you want to query.
The API key created with
SYSTEM_ROLE_PACKAGE_FIREWALL routes traffic through the Package Firewall. It does not grant access to the Package Firewall Log API.To query logs, create an API key with at least the Read-only role. For more information about roles and permissions, see Authorization roles.Troubleshooting and FAQ
Does the Package Firewall block installation of all versions of a malicious package?
Does the Package Firewall block installation of all versions of a malicious package?
No. The Package Firewall blocks only the specific package versions that Endor Labs flags as malware in the malware database.
How does the Package Firewall handle transitive dependencies?
How does the Package Firewall handle transitive dependencies?
The Package Firewall checks each package individually when the client requests it during installation. If any dependency, direct or transitive, contains malware, the firewall blocks that specific package installation and stops the overall installation process.
Does the Package Firewall slow down package installations?
Does the Package Firewall slow down package installations?
No. The impact on installation time is minimal.
What happens with package version ranges like `npm install express@^4.0.0`?
What happens with package version ranges like `npm install express@^4.0.0`?
The package manager resolves version ranges as usual. The Package Firewall checks the resolved version when the client requests it for download. If Endor Labs flags that version as malware, the firewall blocks the installation.