pull_request_target + checkout (pwn request)
Severidade HighUm workflow com pull_request_target roda com os secrets do repo base e um token de leitura/escrita, mas pode ser disparado a partir de qualquer fork. Fazer checkout e rodar o head do PR executa código não confiável com os seus secrets.
Arriscado
# 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 Corrigido
# 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