Commit 2e713f7
committed
ci(security): pin every GitHub Action to an immutable commit SHA [@Raydikalx]
A major tag such as `v4` is mutable: the action's owner can repoint it, so the
code that executes in CI can change while not a single byte of this repository
does. This workflow runs with `permissions: contents: write` and the repository
token, so that substituted code would be allowed to write to `main`. All five
`uses:` now name a 40-hex commit SHA, with the human-readable version kept in a
trailing comment — the form Dependabot understands, so upgrades are still
proposed as ordinary PRs.
actions/checkout 11d5960a326750d5838078e36cf38b85af677262 v4.4.0
actions/setup-python a26af69be951a213d495a4c3e4e4022e16d87065 v5.6.0
actions/cache (x2) 0057852bfaa89a56745cba8c7296529d2fc39830 v4.3.0
actions/upload-artifact ea165f8d65b6e75b540449e92b4886f43607fa02 v4.6.2
Each SHA was resolved from the upstream repository and checked to be the commit
its version tag actually points at. The pins deliberately stay on the current
majors: this commit is about integrity, not about upgrading.
test_pipeline.py — `test_workflow_downloads_and_caches_the_geoip_database`
asserted the literal string `actions/cache@v4`, so it failed the moment the
workflow became *safer*. It now parses `uses:` out of the YAML and asserts the
cache step exists regardless of how its version is written. A new gate,
`test_every_workflow_action_is_pinned_to_an_immutable_commit_sha`, stops the
pins being undone in a drive-by change; it carries a self-test of its own SHA
matcher, because a check that cannot fail is not a check. Suite: 289/289.
SECURITY.md — the supply-chain row for Actions now reads "yes, a SHA is
immutable" where it read "no", and the three citations of aggregate.yml line
numbers shift +6 in lockstep with the comment inserted above the checkout step.
CONTRIBUTING.md — the sample runner output said 288/288; there are now 289.1 parent 9ed059c commit 2e713f7
4 files changed
Lines changed: 82 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
115 | | - | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
116 | 122 | | |
117 | 123 | | |
118 | 124 | | |
| |||
202 | 208 | | |
203 | 209 | | |
204 | 210 | | |
205 | | - | |
| 211 | + | |
206 | 212 | | |
207 | 213 | | |
208 | 214 | | |
| |||
239 | 245 | | |
240 | 246 | | |
241 | 247 | | |
242 | | - | |
| 248 | + | |
243 | 249 | | |
244 | 250 | | |
245 | 251 | | |
| |||
381 | 387 | | |
382 | 388 | | |
383 | 389 | | |
384 | | - | |
| 390 | + | |
385 | 391 | | |
386 | 392 | | |
387 | 393 | | |
| |||
498 | 504 | | |
499 | 505 | | |
500 | 506 | | |
501 | | - | |
| 507 | + | |
502 | 508 | | |
503 | 509 | | |
504 | 510 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
62 | | - | |
| 62 | + | |
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
| |||
227 | 227 | | |
228 | 228 | | |
229 | 229 | | |
230 | | - | |
| 230 | + | |
231 | 231 | | |
232 | 232 | | |
233 | 233 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
109 | 109 | | |
110 | 110 | | |
111 | 111 | | |
112 | | - | |
| 112 | + | |
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
118 | 118 | | |
119 | | - | |
| 119 | + | |
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
123 | | - | |
| 123 | + | |
124 | 124 | | |
125 | 125 | | |
126 | | - | |
| 126 | + | |
127 | 127 | | |
128 | 128 | | |
129 | 129 | | |
| |||
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
136 | | - | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
137 | 143 | | |
138 | 144 | | |
139 | 145 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
813 | 813 | | |
814 | 814 | | |
815 | 815 | | |
816 | | - | |
| 816 | + | |
817 | 817 | | |
818 | 818 | | |
819 | 819 | | |
| |||
1969 | 1969 | | |
1970 | 1970 | | |
1971 | 1971 | | |
| 1972 | + | |
| 1973 | + | |
| 1974 | + | |
| 1975 | + | |
| 1976 | + | |
| 1977 | + | |
| 1978 | + | |
| 1979 | + | |
| 1980 | + | |
| 1981 | + | |
| 1982 | + | |
| 1983 | + | |
| 1984 | + | |
| 1985 | + | |
| 1986 | + | |
| 1987 | + | |
| 1988 | + | |
| 1989 | + | |
| 1990 | + | |
| 1991 | + | |
| 1992 | + | |
| 1993 | + | |
1972 | 1994 | | |
1973 | 1995 | | |
1974 | 1996 | | |
1975 | 1997 | | |
1976 | | - | |
| 1998 | + | |
| 1999 | + | |
| 2000 | + | |
| 2001 | + | |
| 2002 | + | |
| 2003 | + | |
| 2004 | + | |
1977 | 2005 | | |
1978 | 2006 | | |
1979 | 2007 | | |
| 2008 | + | |
| 2009 | + | |
| 2010 | + | |
| 2011 | + | |
| 2012 | + | |
| 2013 | + | |
| 2014 | + | |
| 2015 | + | |
| 2016 | + | |
| 2017 | + | |
| 2018 | + | |
| 2019 | + | |
| 2020 | + | |
| 2021 | + | |
| 2022 | + | |
| 2023 | + | |
| 2024 | + | |
| 2025 | + | |
| 2026 | + | |
| 2027 | + | |
| 2028 | + | |
| 2029 | + | |
| 2030 | + | |
| 2031 | + | |
| 2032 | + | |
| 2033 | + | |
| 2034 | + | |
| 2035 | + | |
1980 | 2036 | | |
1981 | 2037 | | |
1982 | 2038 | | |
| |||
0 commit comments