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

You are only as secure as your weakest dependency; SLSA 4 artifacts can have SLSA 0 dependencies? #61

Open
vielmetti opened this issue Jun 17, 2021 · 2 comments

Comments

@vielmetti
Copy link

My experience of several real supply-chain vulnerabilities is that integrity of the finished product depends on the whole supply chain. In particular, incidents like left-pad,
shared-mime-info, and a host of others have seen
substantial disruptions as a result of problems deep in the dependency tree.

With that in mind, I have a hard time seeing how SLSA levels can reasonably be independent of the quality assessment of the dependencies they rely on. If I read things right, you could have an SLSA 4 rating on a final product, but that rating could include components that were unrated or SLSA 0 or even I guess known to have problems.

Did I miss something crucial here? I just don't see the point of having hypercorrect build patterns for the finished product if the components it's being built from are not adequately testable.

@TomHennen
Copy link
Contributor

Hi Edward, thanks for your comment.

This issue is discussed in the scope section.

The reason for non-transitivity is to make the problem tractable. If SLSA 4 required dependencies to be SLSA 4, then reaching SLSA 4 would require starting at the very beginning of the supply chain and working forward. This is backwards, forcing us to work on the least risky component first and blocking any progress further downstream. By making each artifact's SLSA rating independent from one another, it allows parallel progress and prioritization based on risk. (This is a lesson we learned when deploying other security controls at scale throughout Google.)

Does that help? Is further clarification needed?

@vielmetti
Copy link
Author

@TomHennen

Upon reflection this seems to make sense for prioritizing the workload, if nothing else. As long as people understand the SLSA is a metric of build system quality, not code quality, I think that will be helpful overall.

However - I look at the results from Google's deps.dev project where big projects routinely include 100s of individual dependencies, and wonder how this process will adequately identify weak spots in big systems like kubernetes.

TomHennen added a commit to TomHennen/slsa that referenced this issue Jan 31, 2022
Fixes slsa-framework#107 by creating an attestation that indicates a `verifier`
has determined that the specified `subject` artifact(s) meets the
indicated SLSA level.

In addition this attestation also indicates the minimum aggregate
SLSA level met by the dependencies used to build the artifact
which can help to address slsa-framework#61.

This leaves a number of things up to the user:
* What it means to evaluate an artifact against policy. (See slsa-framework#46)
* How to communicate the attestations required to create this
    attestation.
* How to debug failures

I borrowed heavily from slsa.dev/provenance in terms of
formatting/documentation.

This attestation is based off or work done by @AdamZWu.

Signed-off-by: Tom Hennen <[email protected]>
TomHennen added a commit to TomHennen/slsa that referenced this issue Jan 31, 2022
Fixes slsa-framework#107 by creating an attestation that indicates a `verifier`
has determined that the specified `subject` artifact(s) meets the
indicated SLSA level.

In addition this attestation also indicates the minimum aggregate
SLSA level met by the dependencies used to build the artifact
which can help to address slsa-framework#61.

This leaves a number of things up to the user:
* What it means to evaluate an artifact against policy. (See slsa-framework#46)
* How to communicate the attestations required to create this
    attestation.
* How to debug failures

I borrowed heavily from slsa.dev/provenance in terms of
formatting/documentation.

If desired I can provide detailed algorithms for how the minimum_*
fields could be computed.

This attestation is based on work done by @AdamZWu.

Signed-off-by: Tom Hennen <[email protected]>
@kpk47 kpk47 moved this to 🆕 New in Issue triage May 25, 2023
@kpk47 kpk47 moved this from 🆕 New Issues to 📋 Backlog in Issue triage May 25, 2023
@kpk47 kpk47 moved this from 📋 Backlog to Untriaged in Issue triage Jun 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Untriaged
Development

No branches or pull requests

2 participants