Låsing av workflower
En tag som @v4 er en peker som vedlikeholderen av actionen – eller en angriper som overtar kontoen deres – kan flytte. En commit-SHA på 40 tegn kan ikke flyttes.
Hva som sjekkes
En daglig skanning leser hver *.yml- og *.yaml-fil i .forgejo/workflows/, .gitea/workflows/ og .github/workflows/ i organisasjonens repositoryer. Forgejo kjører også .github/workflows/, så alle tre sjekkes. Skanningen lister opp:
- hver
uses:-referanse til en action som peker på en tag eller en branch i stedet for en commit-SHA på 40 tegn; - hvert steg-image
uses: docker://<image>som er referert med en tag, eller uten tag i det hele tatt (som betyrlatest), i stedet for en digest. En image-tag kan pushes på nytt med annet innhold. En låst referanse ser slik ut:docker://<image>@sha256:<64 hex characters>; en tag foran digesten er tillatt.
Listen finner du under Sikkerhet › Utbedre › Låsing av workflower (/<org>/_admin/security/fix/workflow-pinning), gruppert etter repository. Image-referanser vises med typen docker.
Dette sjekkes ikke: workflow-filer i underkataloger eller andre steder, og et image som er navngitt med et uttrykk, for eksempel docker://${{ env.IMAGE }}.
Lås dem med en pull request
For et repository på listen åpner ett klikk en pull request som erstatter hver oppførte action-referanse med commit-SHA-en fra det tilsvarende repositoryet under frem.sh/mirrors/, og beholder den opprinnelige taggen som en kommentar. Den åpnes på en ny branch, bot/sha-pin-actions-<time>. En referanse som ikke kan løses opp, blir stående som den er.
Pull requesten låser ikke docker://-imager: det finnes ikke noe speil å hente digesten fra. Lås dem for hånd, for eksempel med digesten som docker buildx imagetools inspect <image>:<tag> skriver ut.
Det samme er tilgjengelig som POST /_app/api/v1/orgs/{org}/security/sha-pin-rewrite med {"repo_full_name": "<org>/<repo>"} (scope findings:write).
Låste referanser holdes fortsatt oppdatert: Avhengighetsoppdateringer foreslår nye versjoner og skriver om SHA-en og kommentaren samtidig.