Skip to content
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

[feature] Add support for endoflife.date #2037

Closed
funnelfiasco opened this issue Jul 18, 2024 · 3 comments · Fixed by #2215
Closed

[feature] Add support for endoflife.date #2037

funnelfiasco opened this issue Jul 18, 2024 · 3 comments · Fixed by #2215
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed

Comments

@funnelfiasco
Copy link
Contributor

Is your feature request related to a problem? Please describe.
endoflife.date tracks information about when versions reach the end of supported life. This is useful information to include in the understanding of the supply chain. Knowing which dependencies are (or soon will be) unsupported can be an important part of proactively reducing risk.

Describe the solution you'd like
Use the endoflife.date API to fetch EOL dates for nodes in the dependency graph.

Describe alternatives you've considered
As far as I can tell, deps.dev does not offer this information.

Additional context
The API is currently in alpha, so it may be too early to adopt in GUAC.

@funnelfiasco funnelfiasco added the enhancement New feature or request label Jul 18, 2024
@lumjjb
Copy link
Contributor

lumjjb commented Aug 19, 2024

We took a look at the API of endoflife.date, and it looks like this would be a good first issue to run a certifier.

Two pieces of has metadata info

  • Is EOL? - is this EOL today?
  • EOL date - if exists

Note that some don't have EOL dates, but just says "EOL": true or false. Consumption for these would likely will be HasMetadata of something being supported. Consumption may also be an alerting flow of change in metadata (be via some policy engine).

Open Questions:

  • How do some of these non-open source products appear in other tools. For example, windows. Do we need to match them towards CPEs?

@lumjjb lumjjb added good first issue Good for newcomers help wanted Extra attention is needed labels Aug 19, 2024
@robert-cronin
Copy link
Contributor

I'd love to give this one a go if no one else has started already.

My first impression is that this would involve something similar to pkg/certifier/clearlydefined/clearlydefined.go, however I am not too sure how the HasMetadata entries mentioned above get added.

Any pointers or guidance on which parts of GUAC might be good reference would be much appreciated!

@pxp928
Copy link
Collaborator

pxp928 commented Oct 18, 2024

I'd love to give this one a go if no one else has started already.

My first impression is that this would involve something similar to pkg/certifier/clearlydefined/clearlydefined.go, however I am not too sure how the HasMetadata entries mentioned above get added.

Any pointers or guidance on which parts of GUAC might be good reference would be much appreciated!

Yes that is correct, using the clearlydefined certifier is a good example and will function similarly.

As for the HasMetadata, you can find an example of that usage here in the SPDX Parser (used to store CPEs):

for _, pkg := range s.spdxDoc.Packages {
pkgInputSpecs := s.packagePackages[string(pkg.PackageSPDXIdentifier)]
for _, extRef := range pkg.PackageExternalReferences {
if extRef.Category == spdx_common.CategorySecurity {
locator := extRef.Locator
metadataInputSpec := &model.HasMetadataInputSpec{
Key: "cpe",
Value: locator,
Timestamp: time.Now().UTC(),
Justification: "spdx cpe external reference",
Origin: "GUAC SPDX",
Collector: "GUAC",
}
for i := range pkgInputSpecs {
hasMetadata := assembler.HasMetadataIngest{
Pkg: pkgInputSpecs[i],
PkgMatchFlag: model.MatchFlags{Pkg: model.PkgMatchTypeSpecificVersion},
HasMetadata: metadataInputSpec,
}
preds.HasMetadata = append(preds.HasMetadata, hasMetadata)

Let us know if you have more questions!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants