Gh Actions - Context Script Injections
Osnovne informacije
Imajte na umu da postoje određeni github konteksti čije vrednosti kontroliše korisnik koji kreira PR. Ako github akcija koristi te podatke da izvrši bilo šta, to može dovesti do izvršavanja proizvoljnog koda. Ovi konteksti obično završavaju sa body
, default_branch
, email
, head_ref
, label
, message
, name
, page_name
,ref
i title
. Na primer (lista iz ovog članka):
github.event.comment.body
github.event.issue.body
github.event.issue.title
github.head_ref
github.pull_request.*
github.*.*.authors.name
github.*.*.authors.email
Imajte na umu da postoje manje očigledni izvori potencijalno nepouzdanog unosa, kao što su nazivi grana i email adrese, koje mogu biti prilično fleksibilne u pogledu dozvoljenog sadržaja. Na primer, zzz";echo${IFS}"hello";#
bio bi validan naziv grane i mogao bi biti mogući vektor napada na ciljni repozitorijum.
Primer napada ubacivanjem skripti
Napad ubacivanjem skripti može se desiti direktno unutar inline skripte workflow-a. U sledećem primeru, akcija koristi izraz za testiranje ispravnosti naslova pull request-a, ali takođe dodaje rizik od ubacivanja skripti:
Pre nego što se izvrši shell skripta, izrazi unutar ${{ }}
se procenjuju a zatim zamenjuju rezultujućim vrednostima, što može učiniti da bude ranjiv na ubacivanje shell komandi.
Da bi ubacio komande u ovaj workflow, napadač može napraviti pull request sa naslovom a"; ls $GITHUB_WORKSPACE"
U ovom primeru, karakter "
se koristi da prekine izjavu title=
"${{ github.event.pull_request.title }}"
, omogućavajući izvršavanje ls
komande na runner-u.
Last updated