Gh Actions - Context Script Injections
Basic Information
Зверніть увагу, що є певні github контексти, значення яких контролюються користувачем, що створює PR. Якщо github action використовує ці дані для виконання чогось, це може призвести до випадкового виконання коду. Ці контексти зазвичай закінчуються на body
, default_branch
, email
, head_ref
, label
, message
, name
, page_name
,ref
, і title
. Наприклад (список з цього опису):
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
Атака через ін'єкцію скриптів може статися безпосередньо в інлайн-скрипті робочого процесу. У наступному прикладі, дія використовує вираз для перевірки дійсності заголовка запиту на злиття, але також додає ризик ін'єкції скриптів:
Перед виконанням shell-скрипта вирази всередині ${{ }}
оцінюються і потім замінюються на отримані значення, що може зробити його вразливим до ін'єкцій команд shell.
Щоб ін'єктувати команди в цей робочий процес, зловмисник може створити pull request з заголовком a"; ls $GITHUB_WORKSPACE"
У цьому прикладі символ "
використовується для переривання виразу title=
"${{ github.event.pull_request.title }}"
, що дозволяє виконати команду ls
на runner.
Last updated