Александр Макаров начал внедрять инструмент zizmor в репозитории Yii. Раньше про него не слышал, надо разобраться 🙂
🌈 zizmor — статический анализатор безопасности для GitHub Actions. Проверяет конфигурации рабочих процессов GitHub Action и конфигурацию Dependabot.
zizmor предоставляет множество путей для установки. Для запуска локально я взял Docker-образ:
docker run \
--volume .:/project:ro \
--rm \
ghcr.io/zizmorcore/zizmor:latest \
--persona auditor --color always /project
А для запуска в CI воспользовался экшеном zizmor-action.
Инструмент поддерживает три уровня строгости проверок (в терминах zizmor — persona):
•
regular — режим по умолчанию;•
pedantic — «педантичный» режим, включающий больше проверок;•
auditor — максимально строгий режим, возможны ложноположительные срабатывания.Если у zizmor есть доступ к интернету и GitHub API, то он попытается получить дополнительная информацию о подключаемых экшенах и сделает дополнительные проверки.
Эксперименты проводил над репозиториями PHPTG. Анализитор обнаружил, например, такие проблемы:
Использование тегов вместо хэшей для подключаемых экшенов:
uses: ramsey/composer-install@v4
^ action is not pinned to a hash (required by blanket policy)
Отсутствие явно прописанных разрешений:
tests:
name: PHP ${{ matrix.php }}-${{ matrix.os }}
runs-on: ${{ matrix.os }}
...
^
this job default permissions used due to no permissions: block
Использование стороннего экшена вместо явного использования уже доступных команд:
- name: Commit changes
uses: stefanzweifel/git-auto-commit-action@v7
^ use `git add`, `git commit`, and `git push` in a script step
Для каждой проблемы в документации доступно подробное описание и предложения по исправлению. К слову, zizmor умеет и в автоматическое исправление, но этот функционал я не проверял, воспользовался ИИ 🤖
Итого — инструмент крайне полезный. Если в репозитории используется GitHub Actions, нужно обязательно добавлять zizmor в CI.