Skip to content

Commit cd3f34e

Browse files
authored
editorial: draft: Address MarkLodato's comments on RC2 (#1316)
Addressing @MarkLodato's [comments on RC2](#1298 (comment)). > https://deploy-preview-1298--slsa.netlify.app/spec/v1.1-rc2/terminology > * [x] nit: The paragraph defines "distribution platform" but the table still says "package registry". Instead of _replacing_ "Package Registry" with "Distribution Platform" I simply added "Distribution Platform" since a Package Registry is a specialization (at least as described) and seems worth calling out (also because it would mess us up elsewhere when we talk about Package Registries). > https://deploy-preview-1298--slsa.netlify.app/spec/v1.1-rc2/threats-overview > * [ ] nit: "Dependency becomes unavailable" seems out of place. Maybe remove? I chose to leave the "Dependency becomes unavailable" bit because it maps to the expanded "Availability Threats"(https://deploy-preview-1298--slsa.netlify.app/spec/v1.1-rc2/threats#availability-threats) and seems worth referencing since we have an example. We don't currently have examples of Verification Threats but I think that's OK. If we think it's especially important we can keep it. > https://deploy-preview-1298--slsa.netlify.app/spec/v1.1-rc2/threats > * [x] nit: "Single actor controls multiple accounts" - the "Solution" piece is a separate paragraph here, whereas it is in the same paragraph as "Example:" elsewhere. > * [x] nit: "Use a robot account to submit change" - the "Solution" of "Require review for such changes." is incomplete. If you just require a single person to review, it doesn't help because that same reviewer has control over hte robot. You need either two humans to review OR have some guarantee that the robot cannot be controlled by a reviewer. > * [x] nit: "Rule exceptions provide vector for abuse" - missing period at end > * [x] nit: link to "/spec/v1.1/verifying-artifacts" should just be "verifying-artifacts" --------- Signed-off-by: Tom Hennen <[email protected]>
1 parent df37bdd commit cd3f34e

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

docs/spec/draft/terminology.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,13 @@ It is the primary identifier to which consumers attach expectations.
157157

158158
| Term | Description
159159
| ---- | -----------
160+
| Distribution platform | An entity responsible for mapping package names to immutable package artifacts.
160161
| Package | An identifiable unit of software intended for distribution, ambiguously meaning either an "artifact" or a "package name". Only use this term when the ambiguity is acceptable or desirable.
161162
| Package artifact | A file or other immutable object that is intended for distribution.
162163
| Package ecosystem | A set of rules and conventions governing how packages are distributed, including how clients resolve a package name into one or more specific artifacts.
163164
| Package manager client | Client-side tooling to interact with a package ecosystem.
164165
| Package name | <p>The primary identifier for a mutable collection of artifacts that all represent different versions of the same software. This is the primary identifier that consumers use to obtain the software.<p>A package name is specific to an ecosystem + registry, has a maintainer, is more general than a specific hash or version, and has a "correct" source location. A package ecosystem may group package names into some sort of hierarchy, such as the Group ID in Maven, though SLSA does not have a special term for this.
165-
| Package registry | An entity responsible for mapping package names to artifacts within a packaging ecosystem. Most ecosystems support multiple registries, usually a single global registry and multiple private registries.
166+
| Package registry | A specific type of "distribution platform" used within a packaging ecosystem. Most ecosystems support multiple registries, usually a single global registry and multiple private registries.
166167
| Publish [a package] | Make an artifact available for use by registering it with the package registry. In technical terms, this means associating an artifact to a package name. This does not necessarily mean making the artifact fully public; an artifact may be published for only a subset of users, such as internal testing or a closed beta.
167168

168169
<details><summary>Ambiguous terms to avoid</summary>

docs/spec/draft/threats.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -110,30 +110,30 @@ A best practice is to require approval of any changes via a change management to
110110
*Mitigation:* The producer must ensure that no actor is able to control or influence multiple accounts with review privileges.
111111

112112
*Example:* Adversary creates a pull request using a secondary account and approves it using their primary account.
113-
114-
Solution: The producer must track all actors who have both explicit review permissions and the independent ability to control a privileged bot.
115-
A common vector for this attack is to influence a robot account with the permission to review or contribute code.
116-
Control of the robot account and an actor's own personal account is enough to exploit this vulnerability.
117-
A common solution to this flow is to deny bot accounts from contributing or reviewing code, or to require more human reviews in those cases.
113+
Solution: The producer must track all actors who have both explicit review permissions and the independent ability to control
114+
a privileged bot. A common vector for this attack is to influence a robot account with the permission to review or contribute
115+
code. Control of the robot account and an actor's own personal account is enough to exploit this vulnerability. A common
116+
solution to this flow is to deny bot accounts from contributing or reviewing code, or to require more human reviews in those
117+
cases.
118118

119119
</details>
120120
<details><summary>Use a robot account to submit change</summary>
121121

122122
*Threat:* Exploit a robot account that has the ability to submit changes without
123123
two-person review.
124124

125-
*Mitigation:* All changes require two-person review, even changes authored by
125+
*Mitigation:* All changes require review by two people, even changes authored by
126126
robots.
127127

128128
*Example:* A file within the source repository is automatically generated by a
129129
robot, which is allowed to submit without review.
130130
Adversary compromises the robot and submits a malicious change.
131-
Solution: Require review for such changes.
131+
Solution: Require two-person review for such changes, ignoring the robot.
132132

133133
</details>
134134
<details><summary>Abuse of rule exceptions</summary>
135135

136-
*Threat:* Rule exceptions provide vector for abuse
136+
*Threat:* Rule exceptions provide vector for abuse.
137137

138138
*Mitigation:* Remove rule exceptions.
139139

@@ -770,7 +770,7 @@ packages. If a misconfigured victim attempts to install attacker's package with
770770
an internal name but from the public registry, then verification against
771771
expectations will fail.
772772

773-
For more information see [Verifying artifacts](/spec/v1.1/verifying-artifacts)
773+
For more information see [Verifying artifacts](verifying-artifacts.md)
774774
and [Defender's Perspective: Dependency Confusion and Typosquatting Attacks](/blog/2024/08/dep-confusion-and-typosquatting).
775775

776776
</details>

0 commit comments

Comments
 (0)