Вопрос или проблема
В документации по GitHub Actions есть примечание:
Из-за ограничений безопасности
GITHUB_ENV
не может быть использован для установки переменной окруженияNODE_OPTIONS
.
Какую уязвимость они пытались подавить, сделав это исключение? Кажется, что в целом, если вы можете записывать в CI (или изменять окружение), вы
- уже имеете доступ к репозиторию
- из-за этого у вас есть возможность выполнения кода на раннерах
Почему это исключительное правило необходимо?
Ответ или решение
В документации GitHub Actions представлено предупреждение о том, что переменную окружения NODE_OPTIONS
нельзя устанавливать с помощью GITHUB_ENV
. Это ограничение вызвано специфическими соображениями безопасности, которые требуют более тщательного анализа.
Причины ограничения
-
Безопасность системы CI/CD: В контексте GitHub Actions системы непрерывной интеграции и доставки (CI/CD) безопасность является первоочередной задачей, поскольку они обеспечивают автоматизированный запуск кода, который может содержать возможные уязвимости или злонамеренные элементы. Если злоумышленник получит доступ к репозиторию, он может попытаться внедрить вредоносный код, который будет исполняться с полными правами доступа к среде выполнения.
-
NODE_OPTIONS как входная точка для эксплойтов: Переменная
NODE_OPTIONS
позволяет изменять поведение узлового процессора Node.js. Установленный через эту переменную ввод может директивно влиять на выполнение JavaScript-кода, включая изменение уровня доступа к важным системным ресурсам или выполнение неожиданного кода. Это может быть использовано для выполнения атак, например, внедрения вредоносного JavaScript-кода в рабочую среду. -
Разграничение прав: GitHub Actions обеспечивает определенные границы между разными шагами и сборками, чтобы изолировать изменение рабочего окружения. Запрет на установку
NODE_OPTIONS
черезGITHUB_ENV
становится дополнительным слоем защиты, который защищает систему от потенциальных угроз. Это значит, что даже имея доступ к другим аспектам CI/CD, злоумышленник не сможет использовать эту важную переменную для изменения поведения Node.js и получения несанкционированного доступа к ресурсам или данным.
Финальные наблюдения
Следует отметить, что хотя в общем случае, если у вас есть доступ к CI, вы уже обладаете правами на выполнение кода в раннере, установка ограничения на NODE_OPTIONS
служит дополнительной защитой, когда доступ к репозиторию может быть получен с помощью несанкционированных методов. Это решение отражает проактивный подход GitHub к обеспечению безопасности борцовки с возможными уязвимостями, позволяя пользователям сосредотачиваться на разработке, а не на уязвимостях системы.
В конечном итоге, подобные ограничения подчеркивают важность управления доступом и безопасностью в экосистеме разработки, а также необходимость внедрения комплексной политики по защите при работе с автоматизированными процессами, такими как GitHub Actions.