mirror of
https://github.com/anthropics/claude-code-action.git
synced 2026-01-22 22:44:13 +08:00
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
This commit is contained in:
@@ -53,6 +53,7 @@ jobs:
|
|||||||
fromJSON(steps.detect.outputs.structured_output).confidence >= 0.7
|
fromJSON(steps.detect.outputs.structured_output).confidence >= 0.7
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }}
|
||||||
run: |
|
run: |
|
||||||
OUTPUT='${{ steps.detect.outputs.structured_output }}'
|
OUTPUT='${{ steps.detect.outputs.structured_output }}'
|
||||||
CONFIDENCE=$(echo "$OUTPUT" | jq -r '.confidence')
|
CONFIDENCE=$(echo "$OUTPUT" | jq -r '.confidence')
|
||||||
@@ -64,7 +65,7 @@ jobs:
|
|||||||
echo "Triggering automatic retry..."
|
echo "Triggering automatic retry..."
|
||||||
|
|
||||||
gh workflow run "${{ github.event.workflow_run.name }}" \
|
gh workflow run "${{ github.event.workflow_run.name }}" \
|
||||||
--ref "${{ github.event.workflow_run.head_branch }}"
|
--ref "$HEAD_BRANCH"
|
||||||
|
|
||||||
# Low confidence flaky detection - skip retry
|
# Low confidence flaky detection - skip retry
|
||||||
- name: Low confidence detection
|
- name: Low confidence detection
|
||||||
@@ -83,13 +84,14 @@ jobs:
|
|||||||
if: github.event.workflow_run.event == 'pull_request'
|
if: github.event.workflow_run.event == 'pull_request'
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }}
|
||||||
run: |
|
run: |
|
||||||
OUTPUT='${{ steps.detect.outputs.structured_output }}'
|
OUTPUT='${{ steps.detect.outputs.structured_output }}'
|
||||||
IS_FLAKY=$(echo "$OUTPUT" | jq -r '.is_flaky')
|
IS_FLAKY=$(echo "$OUTPUT" | jq -r '.is_flaky')
|
||||||
CONFIDENCE=$(echo "$OUTPUT" | jq -r '.confidence')
|
CONFIDENCE=$(echo "$OUTPUT" | jq -r '.confidence')
|
||||||
SUMMARY=$(echo "$OUTPUT" | jq -r '.summary')
|
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 [ -n "$pr_number" ]; then
|
||||||
if [ "$IS_FLAKY" = "true" ]; then
|
if [ "$IS_FLAKY" = "true" ]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user