GitHub is bezig met het versterken van de beveiliging van de softwaretoeleveringsketen door “actions/checkout” bij te werken naar blokkeren pwn-verzoekaanvallen die misbruik maken van het risicovolle gebruik van de trigger “pull_request_target workflow” om kwaadaardige code uit te voeren met de volledige bevoegdheden van de workflow.
Met ingang van 18 juni 2026 weigert de nieuwste versie van ‘actions/checkout’, de officiële GitHub-actie voor het uitchecken van een repository in de runner van de workflow, standaard veelvoorkomende pwn-verzoekpatronen. De wijziging zal naar verwachting op 16 juli 2026 worden teruggezet naar alle momenteel ondersteunde hoofdversies.
“Actions/checkout v7 weigert de fork pull-verzoekcode op te halen in de workflows pull_request_target en workflow_run (de laatste alleen als workflow_run.event een pull_request*-gebeurtenis is)”, voegde het eraan toe.
De weigering vindt plaats wanneer het pull-verzoek afkomstig is van een fork en aan een van de volgende criteria wordt voldaan, tenzij werkstroomauteurs zich er expliciet voor afmelden door de vlag “allow-unsafe-pr-checkout” in te stellen op “true” in “actions/checkout” –
- repository: wordt omgezet naar de repository van de fork pull-aanvraag
- ref: komt overeen met refs/pull/number/head of refs/pull/number/merge
- ref: lost op naar het hoofd van een fork pull-verzoek of merge commit SHA
De wijziging is gericht op het voorkomen van de meest voorkomende vorm van pwn-verzoeken in het Actions-ecosysteem. Als gevolg hiervan zal “actions/checkout” mislukken voor “pull_request_target events” van forks met onveilige invoer.
“Pull_request_target” is een werkstroomtrigger die automatisch wordt uitgevoerd zonder dat handmatige goedkeuring vereist is wanneer een pull-aanvraag wordt geopend of opnieuw geopend, of wanneer de hoofdtak van de pull-aanvraag wordt bijgewerkt. Het is belangrijk op te merken dat de gebeurtenis wordt uitgevoerd in de context van de standaardvertakking van de basisrepository, waardoor mogelijk geheimen en een bevoorrechte GITHUB_TOKEN met zowel lees- als schrijfrechten worden vrijgegeven.
“Het uitvoeren van niet-vertrouwde code op de pull_request_target-trigger kan leiden tot beveiligingsproblemen”, merkt GitHub op in zijn documentatie. “Deze kwetsbaarheden omvatten cache-vergiftiging en het verlenen van onbedoelde toegang tot schrijfrechten of geheimen.”
Het gevaar ontstaat wanneer een “pull_request_target” wordt gecombineerd met “actions/checkout” om code te downloaden en uit te voeren die is ingediend door een niet-vertrouwde fork. Mocht een slechte actor een pull-request indienen met kwaadaardige scripts en de workflow checkt uit en voert de code uit, dan kan de aanvaller de GITHUB_TOKEN en andere geheimen stelen, wat leidt tot een zogenaamde pwn request-aanval.
“Workflows die worden geactiveerd door pull_request_target worden uitgevoerd met de GITHUB_TOKEN, geheimen en standaard branch cache-toegang van de basisrepository”, aldus GitHub. “Door de kop van een niet-beoordeelde pull-aanvraag van een fork in een van deze workflows te bekijken, kan door aanvallers bestuurde code doorgaans worden uitgevoerd met de volledige bevoegdheden van de workflow.”
De afgelopen maanden hebben een aantal softwareketenaanvallen dit gedrag bewapend. De ernstigste daarvan was het compromitteren van meerdere pakketten die verband hielden met het Nx-buildsysteem als onderdeel van een campagne met de codenaam s1ngularity, evenals de schending van PostHog, TanStack en het populaire Emacs-pakket “kubernetes-el/kubernetes-el.”
“Pull_request_target is ontworpen voor vertrouwde automatisering rond pull-aanvragen, zoals het labelen, becommentariëren of toepassen van projectmetagegevens”, aldus Socket. “Maar de checkout-stap bepaalt welke code daadwerkelijk in de runner-werkruimte terechtkomt. Als de code uit een gevorkt pull-verzoek wordt gehaald, kan de workflow uiteindelijk door de aanvaller bestuurde code uitvoeren met de rechten van de basisrepository.”
Dat gezegd hebbende, benadrukte de dochteronderneming van Microsoft dat pwn-verzoeken die worden geactiveerd via andere gebeurtenistypen dan pull_request_target (bijvoorbeeld issue_comment) of via andere middelen, zoals git of de GitHub CLI, buiten het bereik van deze wijziging vallen.
“Deze wijziging blokkeert alleen de checkouts van de fork pull request head en merge commits”, voegde het eraan toe. “Het blokkeert het uitchecken van andere niet-vertrouwde repository’s niet. Het instellen van repository: op een niet-verwante repository van derden wordt bijvoorbeeld niet geblokkeerd. Het uitchecken en uitvoeren van niet-vertrouwde code in een bevoorrechte gebeurtenis blijft een pwn-verzoekrisico dat moet worden beoordeeld.”
Om het risico van “pull_request_target” tegen te gaan, wordt ontwikkelaars geadviseerd om het alleen te beoordelen en te gebruiken wanneer dat nodig is, over te schakelen naar “pull_request” als de workflow geen verhoogde rechten of toegang tot geheimen vereist, de rechten die aan de workflows worden verleend te beperken en ervoor te zorgen dat door de gebruiker gecontroleerde invoer niet resulteert in de uitvoering van niet-vertrouwde code.
“De bescherming in deze update dekt alleen het afrekenen via acties/afrekenen”, aldus Socket. “Dat maakt dit tot een vangrail, en niet tot een complete oplossing voor Actions-beveiliging. Workflows die draaien met geheimen, schrijfrechten, implementatierechten of OIDC-publicatietoegang moeten nog steeds zorgvuldig worden beoordeeld.”