Skip to content

Commit 8444ef8

Browse files
committed
chore: pin all non-docker/non-GH action versions
This avoids the issue of malleable version tags in the event of repo compromise. Note that this leaves the tagged versions from official GH/docker actions out of a hope to minimize churn/maintenance-burden. Includes a NEWS post. cf. https://www.cve.org/CVERecord?id=CVE-2025-30066 Signed-off-by: Sam Stuewe <[email protected]>
1 parent 96062b5 commit 8444ef8

File tree

3 files changed

+32
-3
lines changed

3 files changed

+32
-3
lines changed

.github/workflows/docker-pull.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
# For PRs, this action compares between the commit and trunk
2323
- name: Get specific changed files
2424
id: changed-files-specific
25-
uses: tj-actions/changed-files@v44
25+
uses: tj-actions/changed-files@2f7c5bfce28377bc069a65ba478de0a74aa0ca32
2626
with:
2727
files: |
2828
Dockerfile

.github/workflows/pages.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ jobs:
2020
submodules: true
2121
fetch-depth: 0
2222
- name: Run Doxygen
23-
uses: mattnotmitt/doxygen-action@edge
23+
uses: mattnotmitt/doxygen-action@b84fe17600245bb5db3d6c247cc274ea98c15a3b
2424
with:
2525
working-directory: .
2626
doxyfile-path: ./Doxyfile
2727
enable-latex: false
2828
additional-packages: graphviz
2929
- name: Deploy GitHub Pages
30-
uses: peaceiris/actions-gh-pages@v4
30+
uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e
3131
with:
3232
deploy_key: ${{ secrets.TX_PAGES_DEPLOY_KEY }}
3333
external_repository: mit-dci/opencbdc-tx-pages

NEWS.md

+29
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,32 @@
1+
# 2025-03-19: Pinning all 3rd-party GH action versions to specific commits
2+
3+
<details>
4+
<summary>Mitigating the Risk of Action Repository Compromise</summary>
5+
6+
## Motivation
7+
8+
As discovered and reported by [StepSecurity](https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised), between 2025-03-14 and 2025-03-15, [a widely-used GitHub action](https://github.com/tj-actions/changed-files) was compromised.
9+
We, **and by extension all our forks**, use this action in our CI/CD workflow to test docker image builds when the ``Dockerfile`` itself changes.
10+
11+
This exploit relied upon the ability to update a repository's tags (which are typically the default mechanism to pin an action to a specific version).
12+
13+
**N.B.:** Our affected repositories had no CI runs during the compromised period, and so none of our PATs are expected to have been compromised.
14+
Out of an abundance of caution, we have rotated all relevant secrets regardless;
15+
you may wish to do the same.
16+
17+
## Correction
18+
19+
Following [GitHub's recommendations](https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions#using-third-party-actions), pinning all third-party actions to specific commits dramatically reduces the practicality of this attack.
20+
There are resources to take this mitigation [further](https://michaelheap.com/pin-your-github-actions/), but to minimize maintenance burden and workflow churn, we have taken a more minimal mitigation step.
21+
**Note,** this posture is partly due to the fact that this work is research-grade and **is not production-ready**!
22+
23+
## Action You Should Take
24+
25+
You should not need to take any actions to handle this change to our workflows, but you should carefully review StepSecurity's [documented recovery steps](https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised#recovery-steps) and determine if you should take further action for your own repositories!
26+
27+
</details>
28+
29+
130
# 2022-04-05: Force-push against `trunk`
231

332
<details>

0 commit comments

Comments
 (0)