Gh Actions - Context Script Injections
Basic Information
ध्यान दें कि कुछ github contexts हैं जिनके मान उपयोगकर्ता द्वारा PR बनाने के द्वारा नियंत्रित होते हैं। यदि github action उस डेटा का उपयोग करके कुछ निष्पादित कर रहा है, तो यह मनमाने कोड निष्पादन की ओर ले जा सकता है। ये संदर्भ आमतौर पर body
, default_branch
, email
, head_ref
, label
, message
, name
, page_name
,ref
, और title
के साथ समाप्त होते हैं। उदाहरण के लिए (इस writeup से सूची):
github.event.comment.body
github.event.issue.body
github.event.issue.title
github.head_ref
github.pull_request.*
github.*.*.authors.name
github.*.*.authors.email
ध्यान दें कि यहां कम स्पष्ट स्रोत हैं जो संभावित रूप से अविश्वसनीय इनपुट हो सकते हैं, जैसे कि शाखा नाम और ईमेल पते, जो उनके अनुमत सामग्री के संदर्भ में काफी लचीले हो सकते हैं। उदाहरण के लिए, zzz";echo${IFS}"hello";#
एक मान्य शाखा नाम होगा और एक लक्षित रिपॉजिटरी के लिए एक संभावित हमले का वेक्टर होगा।
Example of a script injection attack
एक स्क्रिप्ट इंजेक्शन हमला सीधे एक वर्कफ़्लो के इनलाइन स्क्रिप्ट के भीतर हो सकता है। निम्नलिखित उदाहरण में, एक क्रिया एक पुल अनुरोध शीर्षक की वैधता का परीक्षण करने के लिए एक अभिव्यक्ति का उपयोग करती है, लेकिन स्क्रिप्ट इंजेक्शन के जोखिम को भी जोड़ती है:
Before the shell script is run, the expressions inside ${{ }}
are evaluated and then substituted with the resulting values, which can make it vulnerable to shell command injection.
इस वर्कफ़्लो में कमांड इंजेक्ट करने के लिए, हमलावर a"; ls $GITHUB_WORKSPACE"
शीर्षक के साथ एक पुल अनुरोध बना सकता है।
इस उदाहरण में, "
वर्ण title=
"${{ github.event.pull_request.title }}"
कथन को बाधित करने के लिए उपयोग किया जाता है, जिससे ls
कमांड को रनर पर निष्पादित किया जा सके।
Last updated