Vulnerability scanners and Chainguard Libraries
Details for using vulnerability scanners with Chainguard Libraries.
For the complete documentation index, see llms.txt.
CVE remediation for Chainguard Libraries provides protection against critical and high CVEs. Applications often rely on older versions of libraries, but upstream maintainers may not apply and release patches for those versions. Chainguard addresses this gap by backporting vulnerability fixes from newer releases to older releases, particularly in cases where maintainers are no longer able to support and provide fixes.
CVE remediation helps reduce risk for organizations that cannot always upgrade quickly, especially when moving to a newer version would introduce disruptive changes. Remediated artifacts are published as incremental patch versions, allowing teams to take a targeted fix for a CVE without taking on a broader upgrade at the same time.
CVE remediation is available for a subset of Chainguard Libraries for Python and Chainguard Libraries for Java (available in private preview). If you want to request CVE remediation for additional libraries, reach out to your account team.
CVE remediation focuses on critical and high vulnerabilities. Chainguard backports fixes that are already available in the new versions of the upstream project to older versions that may no longer receive updates.
Before publishing a remediated version, Chainguard validates that the remediated version does not introduce regressions. All upstream test suites are run before and after applying the fix to confirm functional consistency. Chainguard also develops additional regression tests to validate the effectiveness of the CVE fix.
Remediated libraries are distributed through a dedicated repository. This provides the option to make remediated versions available for your development or opt out of using these versions completely and continue to use upstream versions only.
Chainguard publishes remediated versions using ecosystem-specific version suffixes.
For Python, remediated packages use a +cgr.N local version suffix. For example, if flask==1.1.2 has a remediated build, Chainguard publishes it as flask==1.1.2+cgr.1. Python package managers treat this as a higher-precedence local version of the base release, so remediated versions can be selected automatically during dependency resolution when the remediated index is configured.
For Java, remediated artifacts use a -0.cgr.N suffix appended to the base version. For example, if org.apache.commons:commons-lang3:3.18.0 has a remediated build, that build is published as org.apache.commons:commons-lang3:3.18.0-0.cgr.1. If Chainguard publishes another remediated iteration for the same base version, the trailing number increases, such as -0.cgr.2 or -0.cgr.3.
Some Python packages bundle compiled code written in other languages (such as Go, Rust, or C/C++) directly into their wheel. When a CVE exists in a dependency of that vendored code, Chainguard may publish a remediated version even when no CVE has been filed against the Python package itself.
In these cases, Chainguard bumps the vulnerable dependency within the vendored
code and publishes a new +cgr.N version of the package. Because the
vulnerability exists at the vendored dependency level rather than the Python
package level, no advisory entry is published in the VEX feed for these
versions. However, scanners that inspect vendored binaries will reflect the fix
in their results.
Remediated libraries are published in dedicated repositories:
https://libraries.cgr.dev/python-remediated/ - the simple index is at https://libraries.cgr.dev/python-remediated/simple/https://libraries.cgr.dev/java-remediated/ - a companion to the standard Chainguard Libraries for Java repository at https://libraries.cgr.dev/java/You can:
In the Chainguard Console, navigate to the Python or Java libraries, then click the Remediated tab. Click into a library to see which versions have remediated CVEs.
Learn more in Browsing Chainguard libraries.
Advisories for each CVE addressed in our remediated libraries are published via a public VEX feed at https://libraries.cgr.dev/openvex/v1/all.json. Supported scanners and your own custom tooling can use this feed to identify and recognize remediated versions.
To view more details on the CVE and versions of a library that have been remediated, identify the library then navigate to the URL. For example: https://libraries.cgr.dev/openvex/v1/pypi/urllib3.openvex.json.
Chainguard works closely with scanner partners so that remediated versions are properly recognized in vulnerability reports. This ensures that teams can maintain their existing scanning workflows while benefiting from patched dependencies.
Find more general information and specifics for supported scanners in Vulnerability Scanners and Chainguard Libraries.
Last updated: 2025-09-11 00:00