Låsning av arbetsflöden
En tagg som @v4 är en pekare som actionens underhållare, eller en angripare som tar över deras konto, kan flytta. En commit-SHA på 40 tecken kan inte flyttas.
Vad som kontrolleras
En daglig skanning läser varje *.yml- och *.yaml-fil i .forgejo/workflows/, .gitea/workflows/ och .github/workflows/ i din organisations repon. Forgejo kör även .github/workflows/, så alla tre kontrolleras. Den listar:
- varje
uses:-referens till en action som pekar på en tagg eller en branch i stället för en commit-SHA på 40 tecken; - varje steg-image
uses: docker://<image>som refereras med en tagg, eller helt utan tagg, vilket betyderlatest, i stället för en digest. En image-tagg kan pushas igen med annat innehåll. En låst referens ser ut somdocker://<image>@sha256:<64 hex characters>; en tagg före digesten är tillåten.
Listan finns under Säkerhet › Åtgärda › Låsning av arbetsflöden (/<org>/_admin/security/fix/workflow-pinning), grupperad per repo. Image-referenser visas med typen docker.
Kontrolleras inte: arbetsflödesfiler i underkataloger eller någon annanstans, och en image som anges med ett uttryck som docker://${{ env.IMAGE }}.
Lås dem med en pull request
För ett repo i listan öppnar ett klick en pull request som ersätter varje listad action-referens med commit-SHA:n från motsvarande repo under frem.sh/mirrors/ och behåller den ursprungliga taggen som en kommentar. Den öppnas på en ny branch, bot/sha-pin-actions-<time>. En referens som inte kan slås upp lämnas som den är.
Pull requesten låser inte docker://-images: det finns ingen spegel att hämta digesten från. Lås dem för hand, till exempel med den digest som docker buildx imagetools inspect <image>:<tag> skriver ut.
Samma sak finns som POST /_app/api/v1/orgs/{org}/security/sha-pin-rewrite med {"repo_full_name": "<org>/<repo>"} (scope findings:write).
Låsta referenser hålls ändå aktuella: Beroendeuppdateringar föreslår nya versioner och skriver om SHA:n och dess kommentar tillsammans.