Gå til hovedindhold

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 betyder latest, 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.