From ae2fd1754a4b048d8ef060311f0a31ee2293f761 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 13 Dec 2025 20:47:58 +0000 Subject: [PATCH] fix: prevent command injection in test-failure-analysis example Fix command injection vulnerability where github.event.workflow_run.head_branch was directly interpolated into shell commands. Branch names containing shell metacharacters could execute arbitrary commands. Changes: - Pass head_branch through environment variables instead of direct interpolation - Affects gh pr list --head and gh workflow run --ref commands - Prevents execution of malicious code in branch names Severity: HIGH Category: command_injection --- examples/test-failure-analysis.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/test-failure-analysis.yml b/examples/test-failure-analysis.yml index 85d63c6..97580b4 100644 --- a/examples/test-failure-analysis.yml +++ b/examples/test-failure-analysis.yml @@ -53,6 +53,7 @@ jobs: fromJSON(steps.detect.outputs.structured_output).confidence >= 0.7 env: GH_TOKEN: ${{ github.token }} + HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }} run: | OUTPUT='${{ steps.detect.outputs.structured_output }}' CONFIDENCE=$(echo "$OUTPUT" | jq -r '.confidence') @@ -64,7 +65,7 @@ jobs: echo "Triggering automatic retry..." gh workflow run "${{ github.event.workflow_run.name }}" \ - --ref "${{ github.event.workflow_run.head_branch }}" + --ref "$HEAD_BRANCH" # Low confidence flaky detection - skip retry - name: Low confidence detection @@ -83,13 +84,14 @@ jobs: if: github.event.workflow_run.event == 'pull_request' env: GH_TOKEN: ${{ github.token }} + HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }} run: | OUTPUT='${{ steps.detect.outputs.structured_output }}' IS_FLAKY=$(echo "$OUTPUT" | jq -r '.is_flaky') CONFIDENCE=$(echo "$OUTPUT" | jq -r '.confidence') SUMMARY=$(echo "$OUTPUT" | jq -r '.summary') - pr_number=$(gh pr list --head "${{ github.event.workflow_run.head_branch }}" --json number --jq '.[0].number') + pr_number=$(gh pr list --head "$HEAD_BRANCH" --json number --jq '.[0].number') if [ -n "$pr_number" ]; then if [ "$IS_FLAKY" = "true" ]; then