Skip to content

Integrate with the SBOM Ecosystem #763

@captn3m0

Description

@captn3m0

Looking at the purl-spec, and think it might solve some of the challenges I've had with figuring out ways to join the software-supply-chain-ecosystem.

I was looking at how other projects in the ecosystem track EoL dates, and it's not very good:

While our API is good for custom usecases where you define your own rules and build your own tooling, it doesn't work well with existing tools. @hugovk wrote a cli for the API, but it also suffers from the same problem: it exists for the EoL project, not for the people who're writing scanning tools.

I think I have one possible starting point: PURL. PURL is a specification to define a URL that links to a package (loosely defined) with an optional version. Here's some examples (for products we support):

  • pkg:github/electron/electron
  • pkg:github/electron/electron@16.0.5
  • pkg:maven/org.apache.logging.log4j/log4j-core
  • pkg:maven/org.apache.logging.log4j/log4j-core@2.17.0
  • pkg:deb/debian/php@8.1.1
  • pkg:deb/ubuntu/php@8.1.1

Note that since the same package can be installed in multiple ways, there can be multiple URLs to the same "package". The spec is fairly readable.

Suggested Changes

  1. Add a new purl key which lists out possible package names (without version numbers).
  2. Generate a list of supported_versions in the API response which lists down complete PURLs for all possible combinations.

Not sure how to best expose this in the website.

Problems with this approach

  • Not everything we track maps cleanly to (one or more) PURLs. Devices, Operating Systems, Client Side Applications (especially closed source ones), Managed Services (EKS,GKE) don't fit any of the available types.

  • Most SBOM tooling looks for CVEs, so it's based on "no match=good". In our case, since we only provide "supported releases", these might need additional work to support the "match=good" usecase. We might have to generate "version ranges" as unsupported.

  • Our version numbers might not match the version numbers actually reported by tools. As an example, apache-log4j package on debian is at version 2.17.1-1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions