GH Actions - Cache Poisoning

Support HackTricks

For further details check the original post https://scribesecurity.com/blog/github-cache-poisoning/

Cache Poisoning

Kitendo cha Git action/cache kinatoa mfumo wa kuhifadhi data katika mchakato wa Kuunganisha Endelevu (CI), ukijumuisha hatua mbili muhimu:

  1. Run Action: Hatua hii inahusisha kutafuta na kupata data iliyohifadhiwa wakati wa kuendesha CI. Utafutaji unatumia funguo za kipekee za kuhifadhi, ukileta matokeo mawili:

  • Cache-hit: Data iliyohitajika inapatikana kwenye cache na hivyo inapatikana kwa matumizi ya haraka.

  • Cache-miss: Hakuna data inayolingana inayopatikana kwenye cache, ikichochea upakuaji mpya wa faili na saraka zinazohitajika, kama ombi la mara ya kwanza.

  1. Post Workflow Action: Hatua hii inajitolea kwa kuhifadhi data baada ya mchakato wa CI. Kwa hakika, ikiwa cache-miss inatokea wakati wa hatua ya kuendesha, hali ya sasa ya saraka zilizotajwa inahifadhiwa kwa kutumia funguo iliyotolewa. Mchakato huu unafanywa kiotomatiki na hauhitaji mwito wa wazi.

Security Measures: Cache Isolation and Access Restrictions

Ili kudumisha usalama na kuhakikisha kutengwa kwa cache, vizuizi vya ufikiaji vinatekelezwa, kuunda mgawanyiko wa kimantiki kati ya matawi tofauti. Kwa mfano, cache iliyoundwa kwa tawi Feature-A (ikiwa na msingi katika tawi kuu) haitapatikana kwa ombi la kuvuta kwa tawi Feature-B (pia ikiwa na msingi katika tawi kuu).

Kitendo cha cache kinafuata mpangilio maalum wa utafutaji:

  • Kwanza kinatafuta cache hits ndani ya tawi sawa na mchakato wa kazi.

  • Ikiwa hakufanikiwa, kinapanua utafutaji hadi tawi la mzazi na matawi mengine ya juu.

Kwa umuhimu, ufikiaji wa cache unategemea tawi, ukipanuka katika mchakato wote na kuendesha kazi za tawi maalum. Zaidi ya hayo, GitHub inatekeleza sera ya kusoma pekee kwa entries za cache mara tu zinapoundwa, ikizuia mabadiliko yoyote.

Real-World Implication: From Low to High-Permission Workflow Attack

Mfano wa hali halisi ya CI unaonyesha jinsi mshambuliaji anaweza kutumia kuharibu cache ili kupandisha ruhusa kutoka kwa mchakato wa kazi wa ruhusa ya chini hadi wa ruhusa ya juu:

  • Mchakato wa Unit-test, unaohusika na kuendesha majaribio ya kitengo na zana za kufunika msimbo, unadhaniwa kutumia zana iliyovunjika au dhaifu. Mchakato huu unatumia kitendo cha action/cache cha Git, na kufanya cache ipatikane kwa mchakato wowote.

  • Mchakato wa Release, unaohusika na kujenga na kutoa kipande cha programu, unaboresha shughuli zake kwa kuhifadhi utegemezi wa Golang.

Katika hali hii, mchakato wa unit-test unaanzisha entry mbaya ya cache kwa kubadilisha maktaba halali ya kuandika ya Golang (`go

Last updated