-
-
Notifications
You must be signed in to change notification settings - Fork 803
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Integrate with the SBOM Ecosystem #763
Comments
We could use CPEs for some of the hardware stuff. |
So no new CPEs have been assigned for iPhones since the iPhone 5. Dropped a mail to [email protected] requesting the same. |
This PURL stuff looks very similar to what https://clearlydefined.io/ offers for licenses, mabe it makes semse to adopt those as well? as you can attach additional data to clearly-defined items an EOL might also be an option. |
That does indeed make sense - will make sense to add a harvester for eol.date into clearlydefined project (with PURL actually being the linkage between the two as a bridge between ecosystems) - our data currently doesn't point out for eg that https://endoflife.date/api/laravel.json is actually a packagist package, and https://endoflife.date/api/rails.json is a ruby package. With a PURL link in place, the above API URLs will link to canonical PURL representations of these packages, and that can be used to update the correct data in ClearlyDefined. |
Please let me share my experience. Maybe something will help you. In my organization, engineers install various of software with various method. Current my approach to apply EOL for those software dataset is ...
I think this site will be good source dataset for thos part for Non OS vendor's package. And, current my approach to check vulnerability for those software dataset is ...
To check vulnerability properly, Classify package type step is important. Similarly I believe Classify package type step is also important to check EOL properly, . |
Our current plan is for us to have a SBOM scanner that reports any EOL tooling no matter how it is installed (as long as it is tracked by your SBOM tool), irrespective of whether it is supported by your distro or not. If your distro decides to support a specific package really long-term, you can always mark it as a false-positive.
We do provide information about how long the OS itself is supported, but this ought to be treated with caution since many distros only provide this level of support for specific packages, or repositories (not covering As an example, Debian 10 (supported) is still shipping Nodejs 10 (went EOL April 2021) despite having known security concerns. The Jan-2022 Nodejs security fixes that notably include a certificate validation vulnerability are not present in the Debian release. As such, an end-user relying on just the distro EOL data here will be vulnerable despite thinking otherwise. We've previously discussed tracking per-distro support for a given project (#365) and I believe current approach works for the best (track upstream). |
Yes, I agreed your discussion (#365). I felt this experience may be a littele helpful, but if you have no interest, please ignore my episode. |
The current long-term plan is (going in reverse):
The
The plan is for (2) to be unrolled into (1) by using the repology API. So that leaves us with:
As an example, for tomcat, we'll have:
With all of the above, we can generate a relevant pseudo-vulnerability report for tomcat:
There are two more problems:
(1) can be solved by some customization - offer different feed variants. This might need some customization on the product level as well. There's still a lot of open questions around the levers for both the questions - it often takes distros longer-than-expected to backport patches, and sometimes these are missed. |
From what I understand the final objective of this issue is to have an indicator on endoflife.date that tells if the version a user is currently using is "dangerous" with a High/Medium/Low severity. And this indicator could be exposed using the API or using a new CLI tool (that's the SBOM Ecosystem integration part). Did I understood correctly ? If it is, I do not think |
We could use Risk, but existing tooling is hard wired for Severity, with a high/low/medium/info level already. We can write our own tooling later, but for now we'll just need to document this the best we can. |
Yes, but did I understood correctly the final objective of this issue ? I am really not sure ;). |
I've been working on some tooling for this. I ported the grype codebase and modified for this use case. https://github.com/noqcks/xeol (still have some more tests to add, but it should be useable). I have a little lambda function running that pulls data from this repo and creates a sqlite database from static purls You can see the DB structure by running
It only uses static purls listed in the endoflife.date repo, which I think is about 30 purls, so it probably won't match much if you try something other than |
This is great work. I have some WIP at endoflife-date/release-data#54 to integrate Repology Data to enhance the PURL coverage. Got slowed down due to some unexpected hurdles in what repology tracks. Would be great if you could document the changes between grype->xeol. My original plan was to generate a feed with pseudo vulnerabilities (EOL-YYYY-XXXX) for a feed, but creating a new table might also work like you've done here. It's still relying on Syft underneath, which isn't quite as comprehensive as I'd like (No PURL support for os for eg).
Would appreciate help on this front. Feel free to file PRs, keeping repology identifiers in mind. I'd also love to adopt xeol as our official scanner, but I'm wary of maintaining a fork, that might be too much work? |
Exciting integrations with : |
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/[email protected]
pkg:maven/org.apache.logging.log4j/log4j-core
pkg:maven/org.apache.logging.log4j/[email protected]
pkg:deb/debian/[email protected]
pkg:deb/ubuntu/[email protected]
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
purl
key which lists out possible package names (without version numbers).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 version2.17.1-1
.The text was updated successfully, but these errors were encountered: