Repository navigation
feat(scanner): support SBOM applications and non-CVE vulnerability IDs - #176
Merged
Merged
Conversation
- parent POM 6.2221.va_045130417c9 -> 6.2236.v12dd4c483242 - Jenkins BOM 6931.vea_a_b_c6fd017d -> 7169.vb_32a_cfd93fa_6 - flake inputs (nixpkgs, flake-utils) - default sysdig-cli-scanner 1.29.0 -> 1.30.2 (oldest supported stays 1.23.0) - regenerate scanner fixtures with 1.30.2 and 1.23.0
Newer sysdig-cli-scanner versions report every SBOM component in `result.packages`, told apart by a `category` field (package, application, image, operating-system, file). Applications (e.g. an embedded web server or monitoring tool) carry a free-text type such as "Web Server" instead of a package ecosystem, so they were parsed as packages of type Unknown. Model them explicitly instead of folding everything into packages: - Introduce the `Component` abstraction with `Package`, `Application` and `ImageComponent` (operating system / container image) implementations. - Vulnerabilities, accepted risks, layers and policy failures now relate to components instead of packages only. - Map `category` when parsing the JSON v1 report. Missing category (scanners before the field existed) or categories without a dedicated kind (file) fall back to packages so their findings are still reported. - Reports show the application type for applications. - Switch the scanner fixtures to grafana/grafana:9.5.21, which contains an application, Go modules and OS packages.
… dates Vulnerability advisories without a CVE alias are now exported under their own ID (e.g. GHSA-5j5w-g665-5m35). Those entries may also come without `disclosureDate`, which is optional in the JSON v1 contract but was parsed unconditionally, making the whole report fail. - Make `Vulnerability.disclosureDate()` optional; reports show "None". - Link GHSA advisories to github.com/advisories in the UI (CVEs keep linking to NVD) through a single `vulnerabilityAdvisoryUrl` helper. - Add a fixture with a GHSA-only advisory without disclosure date referenced by a policy failure. - Keep vulnerability IDs on a single line in the image diff tables.
tembleking
marked this pull request as ready for review
October 14, 2026 10:19
tembleking
requested review from
Jujuyeh,
airadier,
alecron and
mateobur
as code owners
October 14, 2026 10:19
mateobur
approved these changes
Oct 14, 2026
tembleking
enabled auto-merge (squash)
October 14, 2026 10:25
tembleking
disabled auto-merge
October 14, 2026 11:47
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Recent
sysdig-cli-scannerversions report every SBOM component in the JSON v1 output, not only software packages. That includes standalone applications such as an embedded web server or a monitoring tool. Vulnerabilities can also be identified by advisory IDs other than CVEs, such asGHSA-…. The plugin now handles both, and its dependencies and default scanner version are updated.What changes
Applications and other SBOM components
Unknown. The vulnerability report and the image diff show their type (e.g. "Web Server") and their path.Componentabstraction with three implementations:Package: a software package, with aPackageType.Application: has a free-text type.ImageComponent: the operating system or the container image, with no layer.categoryfield, and categories without a dedicated kind are still parsed as packages.Non-CVE vulnerability IDs
disclosureDateis optional in the JSON v1 contract, but it was parsed unconditionally, so a vulnerability without it made the whole report fail to parse. It is now optional, and the report shows an empty publish date.Dependencies
6.2236.v12dd4c483242, Jenkins BOM7169.vb_32a_cfd93fa_6, and updated Nix flake inputs.sysdig-cli-scanneris now1.30.2. The oldest supported stays1.23.0.grafana/grafana:9.5.21, which contains an application, Go modules and OS packages.Testing
just verifypasses.1.30.2) and oldest (1.23.0) supported versions, with and without component categories.ComponentTestfor the relationships of applications and image components, including policy failures on an application.mvn hpi:runand real scans ofgrafana/grafana:9.5.21,grafana/grafana:10.0.0(usingimageToCompare) andhttpd:2.4.49-alpine:Notes for reviewers
SysdigActiononly stores strings), so moving fromPackage-based APIs toComponenthas no impact on existing builds.Vulnerability.cve(),findVulnerabilityByCVE()and the "CVE ID" column keep their names even though they can now hold other advisory IDs. Renaming them would also touch the UI, which looks the column up by its title, so it is left for a follow-up.Cannot read properties of null (reading 'rows').index.jellynever setsdata-gates-summary-table, andindex-script.jsonly compares it with'', so it callsJSON.parse(null). The rendered tables are not affected.