Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Script injection: github.ref_name / github.ref interpolated into shell run: on push path

Abierto Apto para principiantes
#26 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
74/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
github-actions, shell
Área
ci-cd, security

Línea de trabajo

Empieza leyendo el bloque run de push/workflow_dispatch que no corresponde a PR en action.yml y compáralo con las directrices de GitHub para reforzar la protección contra script-injection. Se considera hecho cuando los valores derivados de la rama se pasan de forma segura al shell sin interpolación directa, mientras que la búsqueda de PR y el comportamiento de commit/ref permanecen sin cambios.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Summary

action.yml interpolates ${{ github.ref_name }} and ${{ github.ref }} directly into the composite action's run: (shell) block on the non-PR (push / workflow_dispatch) path:

COMMIT_OID="${{ github.sha }}"
REF="${{ github.ref }}"
PR_NUMBER=$(gh pr list \
  --repo "$GITHUB_REPOSITORY" \
  --head "${{ github.ref_name }}" \
  --state open --json number --jq '.[0].number // empty' 2>/dev/null || true)

Because these branch-derived values are interpolated into a shell context, a branch named e.g. foo-$(command) — or one using backticks or a " to break out of the double quotes — results in command execution when a consuming workflow runs on push or workflow_dispatch for that ref.

Impact

Reachable by anyone who can push a branch (or workflow_dispatch) to a repo that uses this action — i.e. it requires write access, so the marginal privilege is limited (such a user can generally already run code in CI). Even so, it's a script-injection footgun in a first-party action: it defeats the usual expectation that uses: of a trusted action is safe, and the injected code runs with whatever token the caller grants (commonly code-quality: write).

Suggested fix

Pass the untrusted values via env: and reference them as quoted shell variables, per GitHub's own hardening guidance (https://docs.github.com/en/actions/security-for-github-actions/security-guidelines/security-hardening-for-github-actions#understanding-the-risk-of-script-injections):

env:
  GH_REF: ${{ github.ref }}
  GH_REF_NAME: ${{ github.ref_name }}
run: |
  REF="$GH_REF"
  PR_NUMBER=$(gh pr list --repo "$GITHUB_REPOSITORY" --head "$GH_REF_NAME" \
    --state open --json number --jq '.[0].number // empty' 2>/dev/null || true)
Version

Observed on v1.4.1 (commit 1c15be3).

Lenguaje dominante
Python
Estrellas
99
Forks
20
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de actions/upload-code-coverage

Todos los issues de actions/upload-code-coverage

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.