diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 10fba78..bc6036e 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,7 +9,7 @@ updates: - "dependencies" - "php" cooldown: - default-days: 5 + default-days: 7 semver-major-days: 7 semver-minor-days: 5 semver-patch-days: 3 @@ -23,4 +23,4 @@ updates: - "dependencies" - "github-actions" cooldown: - default-days: 5 + default-days: 7 diff --git a/.github/workflows/fix-style.yml b/.github/workflows/fix-style.yml index 795a081..7f5fd51 100644 --- a/.github/workflows/fix-style.yml +++ b/.github/workflows/fix-style.yml @@ -37,7 +37,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index 5317cc2..640cccc 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -35,7 +35,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 68a470e..2629b40 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -41,7 +41,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false @@ -77,7 +77,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false diff --git a/.github/workflows/zizmor.yml b/.github/workflows/zizmor.yml new file mode 100644 index 0000000..fca122e --- /dev/null +++ b/.github/workflows/zizmor.yml @@ -0,0 +1,44 @@ +name: "Audit GitHub Actions" + +on: + push: + branches: + - main + - master + paths: + - '.github/workflows/**' + pull_request: + branches: + - main + - master + paths: + - '.github/workflows/**' + schedule: + - cron: '17 6 * * 1' + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + zizmor: + name: "Zizmor GitHub Actions Audit" + runs-on: ubuntu-latest + timeout-minutes: 10 + + steps: + - name: Checkout code + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Audit GitHub Actions workflows + uses: zizmorcore/zizmor-action@3dc1ecc9bcb9e94e9b2c709687979e1298497054 # v0.6.2 + with: + advanced-security: false + annotations: true + version: 1.29.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 3da18b9..46f5751 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Security - Pinned all third-party GitHub Actions to immutable full commit SHAs. +- Added a blocking, SHA-pinned Zizmor workflow audit with a fixed scanner + version for deterministic GitHub Actions security checks. - Added Dependabot cooldowns of at least three days for Composer and GitHub Actions updates to reduce exposure to newly compromised releases. - Restricted GitHub Actions tokens to read-only repository contents and stopped