Skip to content

Commit 4837438

Browse files
authored
fix: Apply fixes from PR 1319 and 1320 to draft (#1321)
Align the draft version of the spec with the latest v1.1-rc2. Signed-off-by: Arnaud Le Hors <[email protected]>
1 parent 9e01280 commit 4837438

10 files changed

+45
-45
lines changed

docs/spec/draft/about.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: About SLSA
3-
description: With supply chain attacks on the rise, a shared vocabulary and universal framework is needed to provide incremental guidance to harden supply chains for more secure software production. This page introduces the main concepts behind SLSA and explains how it can help anyone involved in producing, consuming, or providing infrastructure for software.
3+
description: With supply chain attacks on the rise, a shared vocabulary and universal framework are needed to provide incremental guidance to harden supply chains for more secure software production. This page introduces the main concepts behind SLSA and explains how it can help anyone involved in producing, consuming, or providing infrastructure for software.
44
---
55

66
This page is an introduction to SLSA and its concepts. If you're new
@@ -23,15 +23,15 @@ SLSA offers:
2323

2424
## Why SLSA is needed
2525

26-
High profile attacks like those against [SolarWinds](https://www.crowdstrike.com/blog/sunspot-malware-technical-analysis/) or [Codecov](https://about.codecov.io/apr-2021-post-mortem/) have exposed the kind of supply
26+
High-profile attacks like those against [SolarWinds](https://www.crowdstrike.com/blog/sunspot-malware-technical-analysis/) or [Codecov](https://about.codecov.io/apr-2021-post-mortem/) have exposed the kind of supply
2727
chain integrity weaknesses that may go unnoticed, yet quickly become very
2828
public, disruptive, and costly in today's environment when exploited. They've
2929
also shown that there are inherent risks not just in code itself, but at
3030
multiple points in the complex process of getting that code into software
3131
systems—that is, in the **software supply chain**. Since these attacks are on
3232
the rise and show no sign of decreasing, a universal framework for hardening the
3333
software supply chain is needed, as affirmed by the U.S. Executive Order on
34-
Improving the Nation's Cybersecurity of May 12th 2021.
34+
Improving the Nation's Cybersecurity of May 12th, 2021.
3535

3636
Security techniques for vulnerability detection and analysis of source code are
3737
essential, but are not enough on their own. Even after fuzzing or vulnerability

docs/spec/draft/attestation-model.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ consuming the attestation.
4242

4343
### First party
4444

45-
Producers of first party code might consider the following questions:
45+
Producers of first-party code might consider the following questions:
4646

4747
- Will SLSA be used only within our organization?
4848
- Is SLSA's primary use case to manage insider risk?
49-
- Are we developing entirely in a closed source environment?
49+
- Are we developing entirely in a closed-source environment?
5050

5151
If these are the main considerations, the organization can choose any format
5252
for internal use. To make an external claim of meeting a SLSA level, however,
@@ -56,10 +56,10 @@ attestations since it is easy to verify using the [Generic SLSA Verifier].
5656

5757
### Open source
5858

59-
Producers of open source code might consider these questions:
59+
Producers of open-source code might consider these questions:
6060

6161
- Is SLSA's primary use case to convey trust in how your code was developed?
62-
- Do you develop software with standard open source licenses?
62+
- Do you develop software with standard open-source licenses?
6363
- Will the code be consumed by others?
6464

6565
In these situations, we encourage you to use the [SLSA Provenance format]. The SLSA
@@ -69,10 +69,10 @@ using the [Generic SLSA Verifier].
6969

7070
### Closed source, third party
7171

72-
Producers of closed source code that is consumed by others might consider
72+
Producers of closed-source code that is consumed by others might consider
7373
the following questions:
7474

75-
- Is my code produced for the sole purpose of specific third party consumers?
75+
- Is my code produced for the sole purpose of specific third-party consumers?
7676
- Is SLSA's primary use case to create trust in our organization or to comply with
7777
audits and legal requirements?
7878

docs/spec/draft/distributing-provenance.md

+10-10
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ In order to make provenance for artifacts available after generation
77
for verification, SLSA requires the distribution and verification of provenance
88
metadata in the form of SLSA attestations.
99

10-
This document provides specifications for distributing provenance, and the
10+
This document provides specifications for distributing provenance and the
1111
relationship between build artifacts and provenance (build attestations). It is
1212
primarily concerned with artifacts for ecosystems that distribute build
1313
artifacts, but some attention is also paid to ecosystems that distribute
@@ -29,15 +29,15 @@ interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119).
2929
The [package ecosystem]'s maintainers are responsible for reliably
3030
redistributing artifacts and provenance, making the producers' expectations
3131
available to consumers, and providing tools to enable safe artifact consumption
32-
(e.g. whether an artifact meets its producer's expectations).
32+
(e.g., whether an artifact meets its producer's expectations).
3333

3434
## Relationship between releases and attestations
3535

3636
Attestations SHOULD be bound to artifacts, not releases.
3737

3838
A single "release" of a project, package, or library might include multiple
3939
artifacts. These artifacts result from builds on different platforms,
40-
architectures or environments. The builds need not happen at roughly the same
40+
architectures, or environments. The builds need not happen at roughly the same
4141
point in time and might even span multiple days.
4242

4343
It is often difficult or impossible to determine when a release is 'finished'
@@ -57,7 +57,7 @@ Package ecosystems SHOULD support a one-to-many relationship from build
5757
artifacts to attestations to ensure that anyone is free to produce and publish
5858
any attestation they might need. However, while there are lots of possible
5959
attestations that can have a relationship to a given artifact, in this context
60-
SLSA is primarily concerned with build attestations, i.e. provenance, and as
60+
SLSA is primarily concerned with build attestations, i.e., provenance, and as
6161
such, this specification only considers build attestations, produced by the
6262
same maintainers as the artifacts themselves.
6363

@@ -71,15 +71,15 @@ support the publication of arbitrary attestations by third parties.
7171

7272
As a result, this provenance SHOULD accompany the artifact at publish time, and
7373
package ecosystems SHOULD provide a way to map a given artifact to its
74-
corresponding attestations. The mappings can be either implicit (e.g. require a
74+
corresponding attestations. The mappings can be either implicit (e.g., require a
7575
custom filename schema that uniquely identifies the provenance over other
76-
attestation types) or explicit (e.g. it could happen as a de-facto standard
76+
attestation types) or explicit (e.g., it could happen as a de-facto standard
7777
based on where the attestation is published).
7878

7979
The provenance SHOULD have a filename that is directly related to the build
8080
artifact filename. For example, for an artifact `<filename>.<extension>`, the
8181
attestation is `<filename>.attestation` or some similar extension (for example
82-
[in-toto](https://in-toto.io/) recommends `<filename>.intoto.jsonl`.)
82+
[in-toto](https://in-toto.io/) recommends `<filename>.intoto.jsonl`).
8383

8484
## Where attestations are published
8585

@@ -95,7 +95,7 @@ one place, and SHOULD publish attestations in more than one place:
9595
producers SHOULD include provenance as part of such releases. This option
9696
has the benefit of requiring no changes to the package registry to support
9797
provenance formats, but has the disadvantage of putting the source
98-
repository hosting providing in the critical path for installers that want to
98+
repository hosting provider in the critical path for installers that want to
9999
verify policy at build-time.
100100
- **Publish attestations alongside the artifact in the package registry**:
101101
Many software repositories already support some variety of publishing 1:1
@@ -153,12 +153,12 @@ the other requirements.
153153
## Considerations for source-based ecosystems
154154

155155
Some ecosystems have support for installing directly from source repositories
156-
(an option for Python/`pip`, Go, etc). In these cases, there is no need to
156+
(an option for Python/`pip`, Go, etc.). In these cases, there is no need to
157157
publish or verify provenance because there is no "build" step that translates
158158
between a source repository and an artifact that is being installed.
159159

160160
However, for ecosystems that install from source repositories _via_ some
161-
intermediary (e.g. [Homebrew installing from GitHub release artifacts generated
161+
intermediary (e.g., [Homebrew installing from GitHub release artifacts generated
162162
from the repository or GitHub Packages](https://docs.brew.sh/Bottles), [Go
163163
installing through the Go module proxy](https://proxy.golang.org/)), these
164164
ecosystems distribute "source archives" that are not the bit-for-bit identical

docs/spec/draft/future-directions.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,4 @@ The Source track will be scoped to revisions of a single repository.
6363
The intent of each revision is determined by the [software producer](terminology.md#roles) who is also responsible for declaring which Source level should apply and administering technical controls to enforce that level.
6464

6565
The primary purpose of the Source track will be to enable verification that the creation of a revision followed the producer's intended process.
66-
Consumers will be able to examine source provenance attestations to determine if a revision meet their requirements.
66+
Consumers will be able to examine source provenance attestations to determine if a revision meets their requirements.

docs/spec/draft/levels.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ tracks without invalidating previous levels.
3131
hermeticity or completeness of provenance -->
3232

3333
> Note: The [previous version] of the specification used a single unnamed track,
34-
> SLSA 1–4. For version 1.0 the Source aspects were removed to focus on the
34+
> SLSA 1–4. For version 1.0, the Source aspects were removed to focus on the
3535
> Build track. A Source track may be added in [future versions].
3636
3737
## Build track
@@ -223,7 +223,7 @@ All of [Build L2], plus:
223223
credentials, or other tenants.
224224

225225
- Greatly reduces the impact of compromised package upload credentials by
226-
requiring attacker to perform a difficult exploit of the build process.
226+
requiring the attacker to perform a difficult exploit of the build process.
227227

228228
- Provides strong confidence that the package was built from the official
229229
source and build process.

docs/spec/draft/principles.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ levels into separate tracks to recognize progress in unrelated security areas.
1515
**Reasoning:** Levels simplify how to think about security by boiling a complex
1616
topic into an easy-to-understand number. It is clear that level N is better than
1717
level N-1, even to someone with passing familiarity. This provides a convenient
18-
way to describe current security state as well as a natural path to improvement.
18+
way to describe the current security state as well as a natural path to improvement.
1919

2020
Guidelines:
2121

2222
- **Define levels in terms of concrete security outcomes.** Each level should
2323
have clear and meaningful security value, such as stopping a particular
2424
class of threats. Levels should represent security milestones, not just
2525
incremental progress. Give each level an easy-to-remember mnemonic, such as
26-
"Provenance exists".
26+
"Provenance exists."
2727

2828
- **Balance level granularity.** Too many levels makes SLSA hard to understand
2929
and remember; too few makes each level hard to achieve. Collapse levels
@@ -53,8 +53,8 @@ supply chain. Verifying that an artifact is produced by a trusted platform,
5353
though, is easy to automate.
5454

5555
To simultaneously scale and reduce attack surfaces, it is most efficient to trust a limited
56-
numbers of platforms and then automate verification of the artifacts produced by those platforms.
57-
The attack surface and work to establish trust does not scale with the number of artifacts produced,
56+
number of platforms and then automate verification of the artifacts produced by those platforms.
57+
The attack surface and work to establish trust do not scale with the number of artifacts produced,
5858
as happens when artifacts each use a different trusted platform.
5959

6060
**Benefits**: Allows SLSA to scale to entire ecosystems or organizations with a near-constant
@@ -67,7 +67,7 @@ platform to ensure that it meets the SLSA Build Track requirements. Following th
6767
analysis, the public keys used by the build platform to sign provenance are
6868
"trusted" up to the given SLSA level. Downstream platforms verify the provenance
6969
signed by the public key to automatically determine that an artifact meets the
70-
SLSA level.
70+
SLSA level.
7171

7272
### Corollary: Minimize the number of trusted platforms
7373

@@ -122,7 +122,7 @@ While organizations that implement SLSA may choose otherwise, SLSA itself does n
122122
or encourage, participants to be mapped to their legal identities.
123123

124124
**Nothing in this specification should be taken to mean that SLSA requires participants to
125-
to reveal their legal identity.**
125+
reveal their legal identity.**
126126

127127
**Reasoning**: SLSA uses identities for multiple purposes: as a trust anchor for attestations
128128
(i.e. who or what is making this claim and do I trust it to do so) or for attributing actions
@@ -132,7 +132,7 @@ stacks implementing the SLSA standards.
132132
When identities are strongly authenticated and used consistently they can often be leveraged
133133
for both of these purposes without requiring them to be mapped to legal identities.
134134
This reflects how identities are often used in open source where legal name means much less
135-
to projects than the history and behavior of a given handle over time does. Meanwhile some
135+
to projects than the history and behavior of a given handle over time does. Meanwhile, some
136136
organizations may choose to levy additional requirements on identities. They are free to do
137137
so, but SLSA itself does not require it.
138138

docs/spec/draft/provenance.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ layout: standard
55
---
66
To trace software back to the source and define the moving parts in a complex
77
supply chain, provenance needs to be there from the very beginning. It's the
8-
verifiable information about software artifacts describing where, when and how
8+
verifiable information about software artifacts describing where, when, and how
99
something was produced. For higher SLSA levels and more resilient integrity
1010
guarantees, provenance requirements are stricter and need a deeper, more
1111
technical understanding of the predicate.
@@ -129,7 +129,7 @@ disagreement with the text description, the text is authoritative.*
129129

130130
Link: [provenance.proto](schema/provenance.proto)
131131

132-
*NOTE: This protobuf definition prioritises being a human-readable summary
132+
*NOTE: This protobuf definition prioritizes being a human-readable summary
133133
of the schema for readers of the specification. A version of the protobuf
134134
definition useful for code generation is maintained in the
135135
[in-toto attestation] repository.*
@@ -191,7 +191,7 @@ https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1
191191

192192
The parameters that are under external control, such as those set by a user or
193193
tenant of the build platform. They MUST be complete at SLSA Build L3, meaning that
194-
that there is no additional mechanism for an external party to influence the
194+
there is no additional mechanism for an external party to influence the
195195
build. (At lower SLSA Build levels, the completeness MAY be best effort.)
196196

197197
The build platform SHOULD be designed to minimize the size and complexity of

docs/spec/draft/terminology.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -289,24 +289,24 @@ additions are welcome!
289289
Notes:
290290

291291
- Go uses a significantly different distribution model than other ecosystems.
292-
In go, the package name is a source repository URL. While clients can fetch
292+
In Go, the package name is a source repository URL. While clients can fetch
293293
directly from that URL---in which case there is no "package" or
294294
"registry"---they usually fetch a zip file from a *module proxy*. The module
295295
proxy acts as both a builder (by constructing the package artifact from
296296
source) and a registry (by mapping package name to package artifact). People
297-
trust the module proxy because builds are independently reproducible and a
297+
trust the module proxy because builds are independently reproducible, and a
298298
*checksum database* guarantees that all clients receive the same artifact
299299
for a given URL.
300300

301301
### Verification model
302302

303303
Verification in SLSA is performed in two ways. Firstly, the build platform is
304304
certified to ensure conformance with the requirements at the level claimed by
305-
the build platform. This certification should happen on a recurring cadence with
305+
the build platform. This certification should happen on a recurring cadence, with
306306
the outcomes published by the platform operator for their users to review and
307307
make informed decisions about which builders to trust.
308308

309-
Secondly, artifacts are verified to ensure they meet the producer defined
309+
Secondly, artifacts are verified to ensure they meet the producer-defined
310310
expectations of where the package source code was retrieved from and on what
311311
build platform the package was built.
312312

docs/spec/draft/use-cases.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Example ways an organization might use SLSA internally:
4040
- A small company or team uses SLSA to ensure that the code being deployed to
4141
production in binary form is the same one that was tested and reviewed in
4242
source form.
43-
- A large company uses SLSA to require two person review for every production
43+
- A large company uses SLSA to require two-person review for every production
4444
change, scalably across hundreds or thousands of employees/teams.
4545
- An open source project uses SLSA to ensure that compromised credentials
4646
cannot be abused to release an unofficial package to a package registry.
@@ -96,16 +96,16 @@ Reducing risk from consuming vendor provided software and services
9696
</div>
9797
<div class="md:w-2/3">
9898

99-
Finally, SLSA can be used to reduce risk for consumers of vendor provided
99+
Finally, SLSA can be used to reduce risk for consumers of vendor-provided
100100
software and services. Unlike open source, there is no canonical source
101-
repository to map to, so instead the focus is on trustworthiness of claims made
101+
repository to map to, so instead the focus is on the trustworthiness of claims made
102102
by the vendor.
103103

104-
Example ways a consumer might use SLSA for vendor provided software:
104+
Example ways a consumer might use SLSA for vendor-provided software:
105105

106106
- Prefer vendors who make SLSA claims and back them up with credible evidence.
107107
- Require a vendor to implement SLSA as part of a contract.
108-
- Require a vendor to be SLSA certified from a trusted third-party auditor.
108+
- Require a vendor to be SLSA certified by a trusted third-party auditor.
109109

110110
</div>
111111
</div>

0 commit comments

Comments
 (0)