GitHub a făcut disponibilă general pe 10 septembrie noua opțiune cache-mode pentru GitHub Actions, un control care permite limitarea explicită a accesului la cache la nivel de workflow sau job. Schimbarea urmărește principiul least privilege și țintește direct una dintre suprafețele mai subtile de atac din pipeline-urile CI/CD: contaminarea sau reutilizarea necontrolată a cache-urilor.
Administratorii și dezvoltatorii pot alege acum între patru moduri. read permite restaurarea cache-ului fără salvare, write permite atât citirea, cât și scrierea, write-only permite doar salvarea, iar none dezactivează complet accesul. Setările la nivel de job au prioritate față de cele definite pentru întregul workflow.
GitHub spune că pentru evenimente cu nivel mai scăzut de încredere, precum pull_request_target, comportamentul implicit rămâne restrictiv. Dacă un workflow declară explicit acces de scriere într-un astfel de context, platforma afișează o avertizare deoarece riscul de cache poisoning crește.
Schimbarea este importantă mai ales pentru organizațiile care rulează multe pipeline-uri reutilizabile. Regula de acces se propagă și către reusable workflows: un workflow apelat nu poate primi drepturi mai largi asupra cache-ului decât cele acordate de workflow-ul care îl invocă. Asta reduce riscul ca o componentă reutilizabilă să obțină accidental permisiuni excesive.
Cache poisoning poate deveni relevant atunci când un actor reușește să introducă artefacte, dependențe sau rezultate modificate într-un cache consumat ulterior de un workflow de încredere. Într-un lanț de build și deployment, consecința poate fi executarea unui cod care nu mai corespunde sursei verificate.
De ce contează: nu este doar o opțiune de configurare, ci o măsură de hardening a supply chain-ului software. Echipele care folosesc Actions pentru build-uri de producție ar trebui să revizuiască în special workflow-urile declanșate din pull request-uri externe și să acorde drept de scriere numai unde există o justificare clară.
Sursa:
GitHub Changelog – Control GitHub Actions cache access with cache-mode