Skip to content

Commit 8ce27e6

Browse files
authored
Harden release workflow shell inputs (#86)
Pass resolved and verified release tags to shell steps through step-scoped environment variables instead of interpolating GitHub expressions directly into generated shell source. This addresses the two reproducible template-injection findings in the release workflow while retaining existing shell quoting. Release behavior, permissions, trusted-publishing provenance, server compatibility, MSRV, dependencies, and public APIs are unchanged. Record the workflow hardening in the Unreleased security changelog.
1 parent e821a45 commit 8ce27e6

2 files changed

Lines changed: 7 additions & 2 deletions

File tree

.github/workflows/release.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ jobs:
5656
fi
5757
5858
- name: Check Release Metadata
59-
run: ./scripts/check-release.sh "${{ steps.release.outputs.release_tag }}"
59+
run: ./scripts/check-release.sh "${RELEASE_TAG}"
60+
env:
61+
RELEASE_TAG: ${{ steps.release.outputs.release_tag }}
6062

6163
- name: List hubuum_client Package Contents
6264
run: cargo package --list -p hubuum_client
@@ -158,9 +160,10 @@ jobs:
158160

159161
- name: Create or Update GitHub Release
160162
if: github.event_name == 'push'
161-
run: ./scripts/publish-github-release.sh "${{ needs.verify.outputs.release_tag }}" --latest
163+
run: ./scripts/publish-github-release.sh "${RELEASE_TAG}" --latest
162164
env:
163165
GH_TOKEN: ${{ github.token }}
166+
RELEASE_TAG: ${{ needs.verify.outputs.release_tag }}
164167

165168
- name: Create or Update Stable GitHub Releases
166169
if: github.event_name == 'workflow_dispatch'

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ The format is based on Keep a Changelog, and this project aims to follow Semanti
4242

4343
### Security
4444

45+
- Pass release tags to workflow shell steps through environment variables instead
46+
of interpolating expressions into generated shell commands.
4547
- Update `h2` to 0.4.19 (including the fix released in 0.4.16) to address
4648
RUSTSEC-2026-0258, which could allow an
4749
HTTP/2 peer to cause unbounded processing of empty DATA frames.

0 commit comments

Comments
 (0)