Naar de hoofdinhoud

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 (wat latest betekent), in plaats van met een digest. Onder een imagetag kan opnieuw andere inhoud worden gepusht. Gepind ziet eruit als docker://<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.