Fastlåsning af workflows
Et tag som @v4 er en pointer, som actionens vedligeholder, eller en angriber, der overtager vedkommendes konto, kan flytte. En commit-SHA på 40 tegn kan ikke flyttes.
Hvad der tjekkes
En daglig scanning læser alle *.yml- og *.yaml-filer i .forgejo/workflows/, .gitea/workflows/ og .github/workflows/ i din organisations repositorier. Forgejo kører også .github/workflows/, så alle tre tjekkes. Den viser:
- hver
uses:-reference til en action, der peger på et tag eller en branch i stedet for en commit-SHA på 40 tegn; - hvert
uses: docker://<image>-trin, hvis image er angivet med et tag eller slet intet tag, hvilket betyderlatest, i stedet for et digest. Et image-tag kan pushes igen med andet indhold. En fastlåst reference ser sådan ud:docker://<image>@sha256:<64 hex characters>; et tag foran digestet er tilladt.
Listen findes under Sikkerhed › Ret › Fastlåsning af workflows (/<org>/_admin/security/fix/workflow-pinning), grupperet efter repository. Image-referencer vises med typen docker.
Ikke tjekket: workflow-filer i undermapper eller andre steder, og et image, der navngives med et udtryk som docker://${{ env.IMAGE }}.
Fastlås dem med en pull request
For et repository på listen åbner ét klik en pull request, der erstatter hver viste action-reference med commit-SHA’en fra det tilsvarende frem.sh/mirrors/-repository og beholder det oprindelige tag som en kommentar. Den åbnes på en ny branch, bot/sha-pin-actions-<time>. En reference, der ikke kan slås op, efterlades uændret.
Pull requesten fastlåser ikke docker://-images: der er intet spejl at hente digestet fra. Fastlås dem i hånden, for eksempel med det digest, som docker buildx imagetools inspect <image>:<tag> udskriver.
Det samme findes som POST /_app/api/v1/orgs/{org}/security/sha-pin-rewrite med {"repo_full_name": "<org>/<repo>"} (scope findings:write).
Fastlåste referencer holdes stadig opdaterede: Opdateringer af afhængigheder foreslår nye versioner og omskriver SHA’en og dens kommentar samtidig.