pull_request_target + checkout (Pwn-Request)
Schweregrad HighEin pull_request_target-Workflow läuft mit den Secrets des Basis-Repos und einem Lese-/Schreib-Token, kann aber aus jedem beliebigen Fork ausgelöst werden. Das Auschecken und Ausführen des PR-Heads führt nicht vertrauenswürdigen Code mit Ihren Secrets aus.
Riskant
# 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 Behoben
# 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