pull_request_target + checkout (pwn request)
Severidad HighUn workflow con pull_request_target se ejecuta con los secretos del repo base y un token de lectura/escritura, pero puede dispararse desde cualquier fork. Hacer checkout y ejecutar el head del PR ejecuta código no confiable con tus secretos.
Riesgoso
# DANGEROUS — runs fork code with base-repo secrets
on: pull_request_target
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- run: npm ci && npm run build # attacker's code, your token Corregido
# SAFE — untrusted code runs with no secrets
on: pull_request # not pull_request_target
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4 # checks out the PR safely
- run: npm ci && npm run build