pull_request_target + checkout (pwn request)
Gravité élevéeUn workflow pull_request_target s’exécute avec les secrets du dépôt de base et un jeton en lecture/écriture, mais peut être déclenché depuis n’importe quel fork. Extraire et exécuter le head de la PR fait exécuter du code non fiable avec vos secrets.
Risqué
# 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 Corrigé
# 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