From b3123a1c196e240ae7ddc635553bce0551e32461 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Budai?= Date: Tue, 3 Dec 2024 15:15:33 +0100 Subject: [PATCH] github: prevent script injections via PR branch names Prior this commit, ${{ github.event.workflow_run.head_branch }} got expanded in the bash script. A malicious actor could inject an arbitrary shell script. Since this action has access to a token with write rights the malicious actor can easily steal this token. This commit moves the expansion into an env block where such an injection cannot happen. This is the preferred way according to the github docs: https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable --- .github/workflows/trigger-gitlab.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/trigger-gitlab.yml b/.github/workflows/trigger-gitlab.yml index 3cd459b8..0ca8db2e 100644 --- a/.github/workflows/trigger-gitlab.yml +++ b/.github/workflows/trigger-gitlab.yml @@ -35,6 +35,8 @@ jobs: route: GET /repos/${{ github.repository }}/pulls - name: Checkout branch + env: + BRANCH: ${{ github.event.workflow_run.head_branch }} run: | PR_DATA=$(mktemp) # use uuid as a file terminator to avoid conflicts with data content @@ -46,7 +48,7 @@ jobs: if [ ! -z "$PR" ]; then git checkout -b PR-$PR else - git checkout ${{ github.event.workflow_run.head_branch }} + git checkout "${BRANCH}" fi - name: Push to gitlab