Skip to content

Commit 52182ef

Browse files
authored
Apply some security hardening, as recommended by OSSF scorecard (#595)
* Use hashes to pin versions of third-party Actions used in CI * Use GitHub's dependabot to do a monthly update of the Actions * Restrict all Workflows to use a read-only token (except for the steps which need to upload a SARIF file)
1 parent f95b881 commit 52182ef

File tree

7 files changed

+63
-41
lines changed

7 files changed

+63
-41
lines changed

.github/dependabot.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: github-actions
4+
directory: /
5+
schedule:
6+
interval: monthly

.github/workflows/build.yml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
21
name: Build
32
on: [push, pull_request]
43

4+
permissions:
5+
contents: read
6+
57
jobs:
68
linux:
79
name: Linux
@@ -13,7 +15,7 @@ jobs:
1315
sudo apt-get -qq install zlib1g-dev libbz2-dev
1416
1517
- name: Checkout
16-
uses: actions/checkout@v4
18+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
1719
with:
1820
submodules: true
1921

@@ -47,7 +49,7 @@ jobs:
4749
run: apk add --no-cache automake autoconf gcc libtool make musl-dev git zlib zlib-dev bzip2 bzip2-dev #musl-locales
4850

4951
- name: Checkout
50-
uses: actions/checkout@v4
52+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
5153
with:
5254
submodules: true
5355

@@ -77,7 +79,7 @@ jobs:
7779
runs-on: macos-latest
7880
steps:
7981
- name: Checkout
80-
uses: actions/checkout@v4
82+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
8183
with:
8284
submodules: true
8385

@@ -99,7 +101,7 @@ jobs:
99101
arch: ["Win32", "x64"]
100102
steps:
101103
- name: Checkout
102-
uses: actions/checkout@v4
104+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
103105
with:
104106
submodules: true
105107

@@ -122,7 +124,7 @@ jobs:
122124
sudo apt-get -qq install zlib1g-dev libbz2-dev libedit-dev
123125
124126
- name: Checkout
125-
uses: actions/checkout@v4
127+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
126128
with:
127129
submodules: true
128130

@@ -169,7 +171,7 @@ jobs:
169171
echo '```' >> "$GITHUB_STEP_SUMMARY"
170172
171173
- name: Upload report
172-
uses: actions/upload-artifact@v4
174+
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
173175
with:
174176
name: "Coverage report"
175177
path: './build/coverage-report'

.github/workflows/cifuzz.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
11
name: CIFuzz
22
on: [pull_request]
3+
4+
permissions:
5+
contents: read
6+
37
jobs:
48
Fuzzing:
59
runs-on: ubuntu-latest
610
steps:
711
- name: Build Fuzzers
812
id: build
9-
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
13+
uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@3d38acd485bc848e33396e7523b9a4f2aff9027e # master
1014
with:
1115
oss-fuzz-project-name: 'pcre2'
1216
dry-run: false
1317
- name: Run Fuzzers
14-
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
18+
uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@3d38acd485bc848e33396e7523b9a4f2aff9027e # master
1519
with:
1620
oss-fuzz-project-name: 'pcre2'
1721
fuzz-seconds: 300
1822
dry-run: false
1923
- name: Upload Crash
20-
uses: actions/upload-artifact@v4
24+
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
2125
if: failure() && steps.build.outcome == 'success'
2226
with:
2327
name: artifacts

.github/workflows/clang-analyzer.yml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
1-
21
name: Clang Static Analyzer
32
on: [push, pull_request]
43

4+
permissions:
5+
contents: read
6+
57
jobs:
68
Analyze:
79
runs-on: ubuntu-latest
10+
11+
permissions:
12+
# Needed to upload the results to code-scanning dashboard.
13+
security-events: write
14+
contents: read
15+
816
steps:
917
- name: Setup
1018
run: |
1119
sudo apt-get -qq update
1220
sudo apt-get -qq install ninja-build clang-tools
1321
1422
- name: Checkout
15-
uses: actions/checkout@v4
23+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
1624
with:
1725
submodules: true
1826

@@ -38,14 +46,14 @@ jobs:
3846
3947
# Upload the browsable HTML report as an artifact.
4048
- name: Upload report
41-
uses: actions/upload-artifact@v4
49+
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
4250
with:
4351
name: "Clang Static Analyzer report"
4452
path: './build/clang-report'
4553

4654
# Upload the results to GitHub's code scanning dashboard.
4755
- name: "Upload to code-scanning"
48-
uses: github/codeql-action/upload-sarif@v3
56+
uses: github/codeql-action/upload-sarif@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6
4957
with:
5058
sarif_file: build/clang.sarif
5159
category: clang-analyzer

.github/workflows/codeql.yml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,19 @@ on:
2020
schedule:
2121
- cron: '27 6 * * 4'
2222

23-
# Declare default permissions as read only.
24-
permissions: read-all
23+
permissions:
24+
contents: read
2525

2626
jobs:
2727
analyze:
2828
name: Analyze
2929
runs-on: ubuntu-latest
30+
3031
permissions:
32+
# Needed to upload the results to code-scanning dashboard.
33+
security-events: write
3134
actions: read
3235
contents: read
33-
security-events: write
3436

3537
strategy:
3638
fail-fast: false
@@ -41,13 +43,13 @@ jobs:
4143

4244
steps:
4345
- name: Checkout repository
44-
uses: actions/checkout@v4
46+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
4547
with:
4648
submodules: true
4749

4850
# Initializes the CodeQL tools for scanning.
4951
- name: Initialize CodeQL
50-
uses: github/codeql-action/init@v3
52+
uses: github/codeql-action/init@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6
5153
with:
5254
languages: ${{ matrix.language }}
5355
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -58,7 +60,7 @@ jobs:
5860
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
5961
# If this step fails, then you should remove it and run the build manually (see below)
6062
- name: Autobuild
61-
uses: github/codeql-action/autobuild@v3
63+
uses: github/codeql-action/autobuild@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6
6264

6365
# ℹ️ Command-line programs to run using the OS shell.
6466
# 📚 https://git.io/JvXDl
@@ -72,4 +74,4 @@ jobs:
7274
# make release
7375

7476
- name: Perform CodeQL Analysis
75-
uses: github/codeql-action/analyze@v3
77+
uses: github/codeql-action/analyze@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6

.github/workflows/dev.yml

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
name: Dev
2-
on:
3-
workflow_dispatch:
4-
pull_request:
5-
branches:
6-
- master
2+
on: [push, pull_request]
3+
4+
permissions:
5+
contents: read
76

87
jobs:
98

@@ -18,7 +17,7 @@ jobs:
1817
sudo apt-get -qq install libedit-dev
1918
2019
- name: Checkout
21-
uses: actions/checkout@v4
20+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
2221
with:
2322
submodules: true
2423

@@ -53,7 +52,7 @@ jobs:
5352
opt: ["-O0", "-O2"]
5453
steps:
5554
- name: Checkout
56-
uses: actions/checkout@v4
55+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
5756
with:
5857
submodules: true
5958

@@ -86,7 +85,7 @@ jobs:
8685
runs-on: ubuntu-20.04
8786
steps:
8887
- name: Checkout
89-
uses: actions/checkout@v4
88+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
9089
with:
9190
submodules: true
9291

@@ -112,12 +111,12 @@ jobs:
112111
sudo apt-get -qq install language-pack-fr ninja-build libreadline-dev
113112
114113
- name: Checkout
115-
uses: actions/checkout@v4
114+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
116115
with:
117116
submodules: true
118117

119118
- name: Cache CMake
120-
uses: actions/cache@v4
119+
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
121120
with:
122121
key: cmake-${{ env.CMAKE_VER }}-Linux-x86_64
123122
path: cmake-${{ env.CMAKE_VER }}-Linux-x86_64.tar.gz
@@ -145,7 +144,7 @@ jobs:
145144
runs-on: windows-latest
146145
steps:
147146
- name: Checkout
148-
uses: actions/checkout@v4
147+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
149148
with:
150149
submodules: true
151150

@@ -164,7 +163,7 @@ jobs:
164163
runs-on: windows-latest
165164
steps:
166165
- name: Checkout
167-
uses: actions/checkout@v4
166+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
168167
with:
169168
submodules: true
170169

@@ -188,7 +187,7 @@ jobs:
188187
sudo apt-get install -y valgrind
189188
190189
- name: Checkout
191-
uses: actions/checkout@v4
190+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
192191
with:
193192
submodules: true
194193

@@ -209,7 +208,7 @@ jobs:
209208
apt-get -qq install cmake ninja-build
210209
211210
- name: Checkout
212-
uses: actions/checkout@v4
211+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
213212
with:
214213
submodules: yes
215214

@@ -232,7 +231,7 @@ jobs:
232231
runs-on: ubuntu-latest
233232
steps:
234233
- name: Checkout
235-
uses: actions/checkout@v4
234+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
236235
with:
237236
submodules: true
238237

.github/workflows/scorecards.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@ on:
77
push:
88
branches: [ master ]
99

10-
# Declare default permissions as read only.
11-
permissions: read-all
10+
permissions:
11+
contents: read
1212

1313
jobs:
1414
analysis:
1515
name: Scorecards analysis
1616
runs-on: ubuntu-latest
17+
1718
permissions:
1819
# Needed to upload the results to code-scanning dashboard.
1920
security-events: write
@@ -22,7 +23,7 @@ jobs:
2223

2324
steps:
2425
- name: "Checkout code"
25-
uses: actions/checkout@v4
26+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
2627
with:
2728
submodules: true
2829
persist-credentials: false
@@ -43,15 +44,15 @@ jobs:
4344

4445
# Upload the results as artifacts (optional).
4546
- name: "Upload artifact"
46-
uses: actions/upload-artifact@v4
47+
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
4748
with:
4849
name: SARIF file
4950
path: results.sarif
5051
retention-days: 5
5152

5253
# Upload the results to GitHub's code scanning dashboard.
5354
- name: "Upload to code-scanning"
54-
uses: github/codeql-action/upload-sarif@v3
55+
uses: github/codeql-action/upload-sarif@aa578102511db1f4524ed59b8cc2bae4f6e88195 # v3.27.6
5556
with:
5657
sarif_file: results.sarif
5758
category: ossf-scorecard

0 commit comments

Comments
 (0)