Azterlanak / S18
Zer babesten dute argitalpen aldaezinek GitHub Actions lan-fluxuetan
Zer babesten dute GitHub-en argitalpen aldaezinek (immutable releases) biltegi ezagunen Actions lan-fluxuetan?
Laburpena
2025eko urriaren 28az geroztik, GitHub-eko argitalpen bat aldaezin gisa argitara daiteke: haren Git etiketa (tag) ezin da gehiago mugitu edo ezabatu. GitHub-en dokumentazioak ekintzen (actions) egileei esaten die, gainera, eguneratzen jarraitu nahi duten etiketa bat, hala nola bertsio nagusiaren v1 etiketa, ez dela argitalpen bati lotu behar, eta iradokitzen die «zure erabiltzaileei bertsio nagusi bat zehazteko gomendatzea». uses: owner/action@v1 idazten duen lan-fluxu batek dokumentatutako eta aurreikusitako erabilera hori betetzen du, eta argitalpen aldaezinek ez dute hura babesten. Mekanismoak praktikan zer babesten duen neurtu genuen 2026ko urriaren 3an, GitHub-en APIaren bidez soilik:
- A: izar gehien dituzten 1.000 biltegiak, azken 90 egunetan push bat jaso duten biltegi publiko, fork ez diren eta artxibatu gabeen artean (muga: 29.565 izar);
- B: ausaz aukeratutako 500 biltegi (hazia: 20261003), 1.000–5.000 izar dituzten horrelako 20.553 biltegien artetik.
Haien adar lehenetsiko lan-fluxuek urruneko 58.690 uses: erreferentzia dituzte A-n eta 10.472 B-n. Bakoitza sailkatu zen commit-aren SHA bidez, argitalpen aldaezin baten etiketa bidez, etiketa aldagarri baten bidez edo adar baten bidez finkatuta zegoen kontuan hartuta.
Egileak dagoeneko argitalpen aldaezinak argitaratzen dituen kasuetan, ia ez dago erreferentzia babesturik. Azken argitalpena aldaezina duten ekintzetarako etiketa-erreferentzietatik, 6.898tik 312k (%4,5) etiketa babestu bat seinalatzen dute A-n (%95eko tartea: %2,8–7,1, biltegien gaineko bootstrap bidez), eta 1.564tik 76k (%4,9) B-n. Babestutakoak kontzentratuta daude: biltegi bakar batek 312tik 68 ditu, eta edozein biltegi bakar kanpoan utzita %3,6–4,6 ateratzen da. Gainerako ia guztiak bertsio nagusiaren etiketak dira, @v7 bezalakoak. A-ko babesik gabeko erreferentzietatik 6.586tik 3.238tan (%49,2; tartea: %43,2–56,0), argitalpen aldaezin baten etiketa batek commit berera seinalatzen du jada; beraz, hartara aldatzeak ez luke exekutatzen den kodea aldatuko.
Gehien erabilitako ekintzak. A-n biltegi gehienek erabiltzen dituzten 50 ekintza-biltegietatik 28k (%56,0) beren azken argitalpena aldaezin gisa argitaratzen dute. GitHub-en beraren ekintzak: 28tik 12 (%42,9) actions/* kasuan (bai: setup-node, setup-python, setup-go, setup-java; ez: checkout, cache, upload-artifact, download-artifact, github-script) eta 6tik 3 (%50,0) github/* kasuan.
SHA bidezko finkatzeak ematen du babesa, biltegien gutxiengo batean. Guztira, A-ko urruneko 58.690 erreferentzietatik 32.978 (%56,2) SHA bidez finkatuta daude (tartea: %50,7–61,7), eta B-ko 10.472tik 4.812 (%46,0) (tartea: %29,0–60,1; %37,7 haren biltegirik handiena kanpoan utzita, open-telemetry/opentelemetry-python, 1.392 erreferentzia dituena). Biltegi tipikoak gutxi finkatzen ditu: biltegi bakoitzeko SHA proportzioaren mediana %5,0 da A-n eta %0,0 B-n. Lan-fluxuen fitxategietan idatzitako urruneko erreferentzia guztiak SHA bidez finkatuta daude A-ko 891 biltegietatik gehienez 263tan (%29,5), eta 891tik 174tan (%19,5) irakurri ez genituen tokiko ekintzak ere deitzen dituzten 89ak kanpoan utzita; B-n, 398tik gehienez 65etan (%16,3), edo 398tik 55etan (%13,8). Etiketa aldaezinak: erreferentzien %0,6 A-n, %0,8 B-n.
Lan-fluxu mailako mendekotasunen blokeoa (workflow-level dependency locking), 2026ko martxoaren 26an «Public preview 3-6 months» oharrarekin iragarria, ez zegoen argitaratuta 2026ko urriaren 3an: haren bide-orriko elementuak irekita daude, eta ez dago hura dokumentatzen duen aldaketa-erregistroko sarrerarik, ezta lan-fluxuen sintaxiaren erreferentziarik ere. Zifra hauek hura argitaratu aurreko egoera deskribatzen dute.
Aurreko lanak. datosh/pinned-actions-ek SHA bidezko finkatzearen jarraipena egiten du izar gehien dituzten 10.000 biltegietan («%7 bakarrik» finkatzen dute guztiz, 2026ko apirila; haren artxiboan, Actions erabiltzen duten 6.290 biltegietatik 506, %8,0), eta 2026ko apirilean azken argitalpenaren aldaezintasunaren egiaztapen bat gehitu zuen; joshjohanning/ensure-immutable-actions-ek (2025eko azaroaz geroztik) egiaztatzen du lan-fluxuetako erreferentziek argitalpen aldaezinak erabiltzen dituzten. 2022an, artikulu batzuek erreferentzien %1–2an neurtu zuten SHA bidezko finkatzea; NDSS 2026k aurkitu zuen biltegien %16,2k hirugarrenen ekintza guztiak SHA bidez edo egiaztatutako sortzaile (verified creator) baten etiketa bidez erreferentziatzen dituztela. Gure %29,5 datosh-en %8,0tik bereizten da batez ere populazioagatik (jarduera berria duten 1.000 nagusiak, ez 10.000 nagusiak) eta dataragatik; datosh-en beraren lehen 1.000 sarrerek 781etik 100 ematen dituzte (%12,8). Aurkitu ahal izan dugunez, H1 (argitalpen aldaezinek zenbat etiketa-erreferentzia babesten dituzten) eta commit berean etiketa aldaezin bat duen %49,2 ez ziren neurtu. Artikulua eta iturriak: https://easybyte.es/lab/studies/s18/paper/.
Automatizazioa eta berrikuspena. AA agenteek egin zuten azterlana eta idatzi zuten testua. AA berrikusle independente batek lana egiaztatu zuen; haren aurkikuntzak aplikatu dira (METHOD.md, Deviations atala).
Interes-gatazkak. EasyByte-k attest-lint garatzen du, eta hemen erabilitako sailkatzailea, scripts/uses_check.py, doako tresna gisa argitara dezake. ensure-immutable-actions ez bezala (horrek SHA bidezko finkatzeak iradokitzen ditu), etiketa mugikor bakoitzarentzat commit berean dagoen argitalpen aldaezinaren etiketa jakinarazten du.
Aipatu azterlan hau
EasyxLab (2026). What immutable releases protect in GitHub Actions workflows. Study S18. EasyByte Hub S. Coop. Mad. https://github.com/easybytehub/easyxlab/tree/main/studies/s18-actions-immutable-releases@techreport{easyxlab_s18,
title = {What immutable releases protect in GitHub Actions workflows},
author = {{EasyxLab}},
institution = {EasyByte Hub S. Coop. Mad.},
number = {S18},
year = {2026},
url = {https://github.com/easybytehub/easyxlab/tree/main/studies/s18-actions-immutable-releases}
}