skip to content

SLSA & Build Provenance

SLSA levels turn 'a provenance file exists' into 'a builder the build cannot forge produced it', and in-toto attestations carry the claim. Interviewers read the ladder as pipeline maturity.

on this pageshow

explore

questions

page 1 of 2

A firmware binary carries a valid vendor signature: what does that prove, and what can it not tell you?

level: juniorimportance: must knowfreq 66%

answer

  1. Three different documents, three different questions
  2. Bytes and identity, nothing else
  3. Contents need an inventory instead
  4. Origin needs a provenance statement
  5. Wax seal, not a packing list

basics

~20 s

A valid signature proves only that the bytes are unchanged since signing and that a named identity vouched for them. It says nothing about which components are inside the binary or which source revision and build produced it.

solid answer

~50 s

A signature is a claim about *who* and about *these exact bytes*. Verifying it tells me the artifact has not been altered since it was signed and that a particular identity stood behind it. That is all. It does not enumerate what is inside the binary, so it cannot tell a hospital's clinical-risk board which cryptography library version ships in the firmware; that is what a component inventory, an SBOM, is for. It also does not describe how the artifact came to exist, so it cannot say which source repository, branch or revision was built, or which builder ran the build; that is what a build provenance statement records. The three claims answer different questions: a signature answers *who vouches for these bytes*, an SBOM answers *what is inside*, provenance answers *how it came to be*. Asking a signature the other two questions is the classic mistake.

go deeper

for a junior

Be ready to state the two things a signature establishes - unchanged bytes and a signer identity - and to name the other two documents by the question they answer. Recalling the who / what / how split is the whole ask at this level.

for a middle

An interviewer expects you to explain why a signature is blind to contents and origin: it is computed over a digest of finished bytes, after the fact. Explain how an inventory and a provenance statement are bound to that same digest so they describe the artifact you actually hold.

for a senior

Show the operational reflex: when someone offers 'it's signed' as an answer, restate which question is being asked and name the document that answers it. Be able to say what you would demand from a supplier and what you would record as a finding when they cannot produce it.

for a principal

Own the policy angle. Decide which artifact classes must carry which claims, who is accountable for producing them, and what happens at intake when one is missing. The tradeoff is supplier friction against the ability to answer composition and origin questions later under time pressure.

## The three claims, one line each When an artifact is shipped with "security evidence", that evidence is almost always one of three different documents, each answering a different question: | Claim | The question it answers | Core content | |---|---|---| | Signature | Who vouches for **these exact bytes**? | A signer identity bound to a digest of the artifact | | SBOM (component inventory) | **What is inside** the artifact? | The components and versions it is composed of | | Build provenance | **How did it come to be**? | Source repository and revision, builder, build entry point | Every interview confusion in this area comes from asking one of them a question that belongs to another. ## What a signature actually asserts A signature is computed over a digest of specific bytes. Verifying it establishes two facts and no others: 1. **Integrity** - the bytes you have are the bytes that were signed. Change one bit and verification fails. 2. **Signer identity** - some identity (a release key, an organisation, a build system) put its name to those bytes. Notice what is missing from that list. The signature does not describe the artifact's contents, because it never inspected them; it treated the artifact as an opaque blob and hashed it. It does not describe the artifact's history either, because signing happens *after* the artifact exists and is indifferent to how it got there. ## The scenario that makes it concrete A medical-device supplier ships a firmware image to a hospital's biomedical engineering team. The download page shows a valid vendor signature, so integrity in transit is settled. Then the clinical-risk board asks two questions: - *"Which version of the cryptography library is inside this firmware?"* The signature cannot answer it. Nothing in the signature describes the composition of the image. Answering it requires an inventory of the firmware's components - an SBOM - produced by the supplier from the build (or, failing that, reconstructed by analysing the binary, which is far less reliable). - *"Which branch and revision of the vendor's source was this built from?"* The signature cannot answer that either. Answering it requires a build provenance statement: a claim, bound to the firmware's digest, that names the source repository and revision, the builder that executed the build, and the entry point it was invoked with. The device is safety-critical, so "the vendor signed it" is a perfectly good answer to *did anyone tamper with the file after the vendor produced it* and a non-answer to both of the board's actual questions. ## Why the confusion is so common Signing is the oldest and most visible of the three practices, so people generalise it into an all-purpose stamp of quality. Three habits reinforce that: - Release pages present the signature as *the* security artifact, with nothing next to it. - The word "verified" reads like a verdict about the artifact rather than a statement about bytes and an identity. - Signatures are often the only one of the three a consumer has ever been asked to check, so it becomes the mental default for every question. A useful correction: a signature is closer to a **wax seal on an envelope** than to a **packing list** or a **factory record**. The seal proves the envelope has not been opened and shows whose ring pressed it. It says nothing about what is inside or where it was assembled. ## What each of the three cannot answer - A **signature** cannot say what components are inside, and cannot say which source or build produced the artifact. - An **SBOM** cannot say that this inventory belongs to the bytes you actually hold unless it is bound to their digest and signed, and it cannot say where those bytes came from. - **Provenance** cannot enumerate the shipped contents; it describes the build that produced the artifact, not the artifact's composition. They are complementary, not competing, and they are usually distributed together: the inventory and the provenance are themselves signed and bound to the artifact's digest, so the signature is what makes the other two trustworthy rather than merely present. ## What to say in an interview State the three-way mapping first (who / what / how), then name the specific limit the question is probing. If someone hands you an artifact and says "it's signed", the right follow-up questions are *signed by whom, over which digest, and what else did they publish alongside it*.

  • So if the vendor also ships an SBOM, is the contents question settled?
    Only if the SBOM is tied to the artifact you hold. An inventory document on its own is a text file that could describe a different build. It becomes evidence when it is bound to the artifact's digest and signed, so you can check that this inventory belongs to these bytes. The signature is what gives the inventory weight; the inventory is what gives the signature something to say about contents.
  • The vendor says a signed artifact is enough for a safety review. How do you push back?
    I would separate the questions. The signature answers integrity and authorship, and I accept it for that. The review's questions are composition and origin, and I would ask for the two documents that answer them: a component inventory so we can see which libraries and versions ship in the image, and a build provenance statement naming the source revision and builder. If the vendor cannot produce either, that gap itself is the review finding.
  • Can you reconstruct the component list from the binary instead of asking for an SBOM?
    Partly, and unreliably. Analysing a binary can recover some embedded version strings and recognisable library fingerprints, but statically linked, stripped or vendored code frequently vanishes, and you learn nothing about build-time inputs. It is a fallback when a supplier will not produce an inventory, not a substitute for one generated by the build that has the full dependency graph in front of it.

A signature is a wax seal on an envelope: it shows whose ring pressed it and that nobody has opened the envelope since. It tells you nothing about what is inside or where it was packed.

saying these in an interview costs you the question

  • Says a valid signature means the artifact is free of vulnerabilities
  • Thinks the signature lists the components inside the artifact
  • Believes a signature identifies the source repository or commit
  • Treats signature, SBOM and provenance as three names for one thing
  • Assumes an unsigned SBOM shipped nearby proves the contents

context

open as a page

Why is build provenance from a long-lived, reused build machine worth less than from a single-use builder?

level: juniorimportance: must knowfreq 62%

basics

~20 s

A reused machine keeps state from earlier builds - caches, installed tools, leftover credentials, running processes - so an earlier job could have altered this build or what was recorded about it. A single-use environment removes that whole class of doubt.

open as a page

Does SLSA Build L3 provenance mean an artifact has no known vulnerable dependencies?

level: juniorimportance: must knowfreq 62%

basics

~10 s

No. The SLSA build track attests to how an artifact was produced and by which builder, not to what is inside it or whether those components are flawed. Vulnerable dependencies are a separate question.

open as a page

Your pipeline generates a provenance attestation for every build — what still has to happen for that to protect anything?

level: juniorimportance: must knowfreq 74%

basics

~20 s

A provenance statement proves nothing until something checks it. The control is a consumer verifying the statement against expectations fixed in advance and refusing the artifact when the check fails. Unverified attestations are metadata, not protection.

open as a page

When verifying build provenance, what does a consumer compare it against?

level: juniorimportance: must knowfreq 74%

basics

~20 s

Verification compares the statement against expectations written down in advance: the builder identity that produced the artifact, the source repository and revision it was built from, the build entry point, and the subject digest matching the artifact you actually hold.

open as a page

Why does SLSA Build L2 reject a provenance file that your own release script wrote and signed?

level: middleimportance: must knowfreq 56%

basics

~20 s

SLSA Build L2 is about who attests, not what the document says: the hosted build platform must generate and sign the provenance itself. Provenance composed and signed by the build's own steps stays at Build L1.

open as a page

Under SLSA, why is provenance signed by the build job itself worth little to a consumer?

level: middleimportance: must knowfreq 55%

basics

~20 s

Because whoever can change the build steps can also change the claim. Self-issued provenance sits at Build L1; L2 moves generation and signing to the hosted platform, and L3 puts the signing material out of reach of user-defined build steps.

open as a page

In SLSA v1 provenance, why does a verifier care more about externalParameters than internalParameters?

level: middleimportance: must knowfreq 65%

basics

~20 s

externalParameters holds whatever the person who triggered the build chose, so it is where an adversary with trigger rights expresses themselves. internalParameters is set by the platform you already trust. Verification means comparing the external half against expectations.

open as a page

Why compare a provenance statement's subject digest against the bytes you installed?

level: middleimportance: must knowfreq 58%

basics

~20 s

A signature proves the statement is authentic, not that it describes your file. The subject digest is the only field tying a statement to specific bytes, so without hashing what you installed, a genuine statement about a different build still passes.

open as a page

An in-toto statement lists three deploy bundles — how does a deploy job confirm it covers the one it holds?

level: seniorimportance: must knowfreq 50%

basics

~10 s

Hash the bundle in hand and look for that exact digest among the statement's subject entries. A statement can cover many artifacts, but it covers yours only if one entry's digest matches those bytes.

open as a page

On SLSA's build track, where does a shared-account, script-driven gem release sit, and what one change moves it up?

level: seniorimportance: must knowfreq 60%

basics

~20 s

Almost certainly Build L1 — provenance exists, but the release script that controls the build also writes it. The highest-leverage single change is having the build platform generate and sign provenance under an identity the job cannot use.

open as a page

Two organisations rebuild the same package to identical digests — what does that prove that one builder's signed provenance cannot?

level: seniorimportance: must knowfreq 46%

basics

~10 s

It turns testimony into a fact anyone can re-derive. Signed provenance is one builder's claim; independent agreement shows unrelated parties derived the same bytes, so subverting a single build platform no longer goes unchallenged.

open as a page

Signed SLSA provenance exists, but a release tarball was swapped after the build. What catches it?

level: seniorimportance: must knowfreq 50%

basics

~20 s

Only verification at the point of use catches it. Recompute the digest of the bytes about to be deployed and match it against the provenance subject digest, after checking the envelope signature and the builder identity.

open as a page

Your build script writes builder.id into its own SLSA provenance — why is that value worthless?

level: seniorimportance: must knowfreq 58%

basics

~20 s

builder.id names the platform whose security you are relying on, so a value the job writes about itself is a self-assertion: a compromised step can name any platform. It counts only when stamped outside the job's reach.

open as a page

In an in-toto attestation statement, what do the four top-level fields hold?

level: juniorimportance: should knowfreq 58%

basics

~20 s

An in-toto statement carries _type (the statement format version), subject (the artifacts the claim is about, each identified by a cryptographic digest), predicateType (a URI naming the schema of the claim), and predicate (the claim's own content).

open as a page

What does SLSA Build L1 add over L0 when the provenance is written by the machine that built the artifact?

level: juniorimportance: should knowfreq 52%

basics

~20 s

Build L0 means no provenance at all. L1 means provenance exists and is distributed: a machine-readable record of how the artifact was built. Self-issued and unsigned, it catches mistakes and supports investigation, not a determined forger.

open as a page

What does a hermetic build guarantee that makes a provenance statement's input list worth trusting?

level: juniorimportance: should knowfreq 42%

basics

~20 s

A hermetic build consumes only inputs declared and fetched before the build step runs, with no network access during it. That makes the provenance's list of inputs complete, not merely honest: nothing can enter the artifact that was never recorded.

open as a page

In a SLSA v1 provenance predicate, what do buildDefinition and runDetails each describe?

level: juniorimportance: should knowfreq 50%

basics

~20 s

buildDefinition describes what was requested: the recipe type and the inputs it was given. runDetails describes what actually happened: which builder ran the job, when, and what else the run emitted. One is the order, the other is the receipt.

open as a page

Handed a signature, an SBOM and a provenance statement for one JAR, which proves it was built from the reviewed branch?

level: middleimportance: should knowfreq 54%

basics

~20 s

Only the provenance statement. It names the source repository and revision, the builder and the build entry point for that artifact. The signature covers bytes and a signer; the SBOM covers components. Neither records where the build came from.

open as a page

Why is base64-decoding a DSSE envelope's payload and parsing it not verification?

level: middleimportance: should knowfreq 42%

basics

~20 s

Base64 is an encoding, not a signature check. A DSSE signature covers the payload bytes together with the declared payload type, so a verifier checks that signature and the type before trusting anything it decodes.

open as a page

Why must a build platform fix the build definition before a run starts for its provenance to mean anything?

level: middleimportance: should knowfreq 44%

basics

~20 s

Provenance records what the platform decided to run. If the running build can rewrite the definition it is executing, the recorded steps and the executed steps drift apart, and the signed statement describes a build that never happened.

open as a page

Why does the SLSA v1.0 build track stop at L3 rather than requiring hermetic or reproducible builds?

level: middleimportance: should knowfreq 34%

basics

~20 s

SLSA v1.0 specified only the build track, L0 to L3, where each level is a build-platform property a consumer can check. Hermeticity lives in a project's own build definition and reproducibility needs a second rebuilder, so neither is checkable that way.

open as a page

A bank's build platform mounts one shared secret store into every job. Why is that a builder-level failure no pipeline fix repairs?

level: seniorimportance: should knowfreq 50%

basics

~20 s

Isolation between builds is a property of the platform, not of any one pipeline. If every job can reach every secret, the lowest-trust build on the platform effectively holds the release credentials, and no pipeline-level care takes that access away.

open as a page

A .deb build's provenance carries no resolvedDependencies — what may a verifier conclude?

level: seniorimportance: should knowfreq 42%

basics

~10 s

Only that the inputs were not stated. SLSA v1 makes resolvedDependencies optional and allows it to be incomplete, so an absent or empty list means unknown, never that the build consumed nothing.

open as a page

How do you chain provenance across three repositories so a consumer can verify more than the last build?

level: seniorimportance: should knowfreq 52%

basics

~20 s

Every stage attests its own output and records, by digest, the inputs it consumed. A verifier then walks from the artifact in hand back through those recorded digests, checking each hop against expectations. Inputs recorded by name only are where the chain silently ends.

open as a page

Your provenance expectation pins the source repository but not the ref. What still passes?

level: seniorimportance: should knowfreq 45%

basics

~20 s

Any build from any branch or tag in that repository. A low-privilege contributor who can push an unprotected branch and trigger the trusted builder gets an artifact whose provenance names the right repository, the right builder, and code nobody reviewed.

open as a page

Leadership thinks SLSA Build L3 covers insider risk in source. How do you answer them?

level: principalimportance: should knowfreq 38%

basics

~20 s

The build track guarantees an artifact was faithfully built from a stated source revision on a hardened builder. It says nothing about that revision, so a backdoor merged by an authorised committer still yields a verifiable artifact.

open as a page

A critical Java data connector ships with no provenance attestation — what are your realistic options?

level: principalimportance: should knowfreq 41%

basics

~20 s

Three: rebuild it from source and attest your own build, accept it while attaching an honest, clearly weaker statement about what you did verify, or refuse it and contain or replace the component. Choose by what the connector can reach, and record the gap as data.

open as a page

How do you set provenance expectations for a sole-source vendor you cannot audit?

level: principalimportance: should knowfreq 34%

basics

~20 s

Source the expected builder, repository, ref and entry point from outside the artifact — the vendor's documented release process, confirmed in writing — record them with a named owner, and decide in advance who is allowed to change them and what a mismatch stops.

open as a page

Why does SLSA v1.0's build track have no rung for source review, and where should that requirement land?

level: middleimportance: nice to knowfreq 34%

basics

~20 s

SLSA v1.0 split the specification into independent tracks and defines only the build track. It grades the build process and how believable its provenance is; two-person review is a source-side control, evidenced separately from any build level.

open as a page

showing 1–30 of 36