Gh Actions - Context Script Injections
Основна Інформація
Зверніть увагу, що існують певні контексти 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";#
може бути дійсною назвою гілки і може бути можливим вектором атаки для цільового репозиторію.
Приклад атаки внедрення скриптів
Атака внедрення скриптів може відбутися безпосередньо в межах вбудованого скрипту робочого процесу. У наступному прикладі дія використовує вираз для перевірки валідності заголовка запиту на витяг, але також додає ризик внедрення скриптів:
Перед тим як виконується shell-сценарій, вирази всередині ${{ }}
оцінюються і потім замінюються отриманими значеннями, що може зробити його уразливим для впровадження команд оболонки.
Для впровадження команд у цей робочий процес атакувальник може створити запит на злиття з заголовком a"; ls $GITHUB_WORKSPACE"
У цьому прикладі символ "
використовується для переривання виразу title=
"${{ github.event.pull_request.title }}"
, що дозволяє виконати команду ls
на виконавчому пристрої.
Last updated