Gh Actions - Context Script Injections
Taarifa Msingi
Tambua kuwa kuna muktadha wa github ambao thamani zake zinadhibitiwa na mtumiaji anayesababisha PR. Ikiwa hatua ya github inatumia data hiyo kutekeleza chochote, inaweza kusababisha utekelezaji wa nambari za aina yoyote. Muktadha hawa kawaida huishia na body
, default_branch
, email
, head_ref
, label
, message
, name
, page_name
,ref
, na title
. Kwa mfano (orodha kutoka kwenye makala hii):
github.event.comment.body
github.event.issue.body
github.event.issue.title
github.head_ref
github.pull_request.*
github.*.*.authors.name
github.*.*.authors.email
Tambua kuwa kuna vyanzo visivyo wazi sana vya data isiyoaminika, kama majina ya matawi na anwani za barua pepe, ambazo zinaweza kuwa nyepesi sana kwa upande wa yaliyoruhusiwa. Kwa mfano, zzz";echo${IFS}"hello";#
ingekuwa jina sahihi la tawi na inaweza kuwa njia ya shambulio inayowezekana kwa repo lengwa.
Mfano wa shambulio la uingizaji wa scripti
Shambulio la uingizaji wa scripti linaweza kutokea moja kwa moja ndani ya scripti ya mstari wa mwelekeo. Katika mfano ufuatao, hatua inatumia muktadha kuthibitisha usahihi wa kichwa cha PR, lakini pia inaongeza hatari ya uingizaji wa scripti:
Kabla ya script ya shell kutekelezwa, maelezo ndani ya ${{ }}
yanafanyiwa tathmini na kisha kubadilishwa na thamani zinazopatikana, ambayo inaweza kufanya iwe dhaifu kwa kuingiza amri za shell.
Ili kuingiza amri katika mfumo huu, mshambuliaji anaweza kuunda ombi la kuchota na kichwa cha a"; ls $GITHUB_WORKSPACE"
Katika mfano huu, herufi ya "
hutumiwa kuingilia kati taarifa ya title=
"${{ github.event.pull_request.title }}"
, kuruhusu amri ya ls
kutekelezwa kwenye runner.
Last updated