Workflow-pinning
Een tag zoals @v4 is een verwijzing die de maintainer van de action, of een aanvaller die zijn account overneemt, kan verplaatsen. Een commit-SHA van 40 tekens kan niet worden verplaatst.
Wat er wordt gecontroleerd
Een dagelijkse scan leest elk *.yml- en *.yaml-bestand in .forgejo/workflows/, .gitea/workflows/ en .github/workflows/ in de repository’s van je organisatie. Forgejo draait ook .github/workflows/, dus alle drie worden gecontroleerd. De scan vermeldt:
- elke
uses:-verwijzing naar een action die naar een tag of branch wijst in plaats van naar een commit-SHA van 40 tekens; - elk stapimage
uses: docker://<image>waarnaar met een tag wordt verwezen, of zonder tag (watlatestbetekent), in plaats van met een digest. Onder een imagetag kan opnieuw andere inhoud worden gepusht. Gepind ziet eruit alsdocker://<image>@sha256:<64 hex characters>; een tag vóór de digest mag.
De lijst staat onder Beveiliging › Herstellen › Workflow-pinning (/<org>/_admin/security/fix/workflow-pinning), gegroepeerd per repository. Imageverwijzingen hebben het soort docker.
Niet gecontroleerd: workflowbestanden in submappen of op andere plekken, en een image dat met een expressie wordt benoemd, zoals docker://${{ env.IMAGE }}.
Pin ze met een pull request
Voor een repository op de lijst opent één klik een pull request dat elke vermelde actionverwijzing vervangt door de commit-SHA uit de bijbehorende frem.sh/mirrors/-repository, en de oorspronkelijke tag als commentaar bewaart. Het wordt geopend op een nieuwe branch bot/sha-pin-actions-<time>. Een verwijzing die niet kan worden opgelost, blijft zoals ze is.
Het pull request pint geen docker://-images: er is geen mirror om de digest uit te halen. Pin die met de hand, bijvoorbeeld met de digest die docker buildx imagetools inspect <image>:<tag> toont.
Hetzelfde kan via POST /_app/api/v1/orgs/{org}/security/sha-pin-rewrite met {"repo_full_name": "<org>/<repo>"} (scope findings:write).
Gepinde verwijzingen worden nog steeds actueel gehouden: Updates van afhankelijkheden stelt nieuwe versies voor en herschrijft de SHA en het commentaar ervan samen.