zizmor 1.2.2__tar.gz → 1.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of zizmor might be problematic. Click here for more details.
- {zizmor-1.2.2 → zizmor-1.3.0}/.github/workflows/ci.yml +1 -1
- {zizmor-1.2.2 → zizmor-1.3.0}/.github/workflows/pypi.yml +8 -8
- {zizmor-1.2.2 → zizmor-1.3.0}/.github/workflows/zizmor.yml +1 -1
- {zizmor-1.2.2 → zizmor-1.3.0}/Cargo.lock +61 -17
- {zizmor-1.2.2 → zizmor-1.3.0}/Cargo.toml +9 -8
- {zizmor-1.2.2 → zizmor-1.3.0}/PKG-INFO +1 -1
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/audits.md +63 -2
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/release-notes.md +30 -1
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/snippets/trophies.md +27 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/snippets/trophies.txt +6 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/usage.md +1 -1
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/bot_conditions.rs +15 -10
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/mod.rs +39 -4
- zizmor-1.3.0/src/audit/overprovisioned_secrets.rs +117 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/template_injection.rs +14 -15
- {zizmor-1.2.2 → zizmor-1.3.0}/src/expr/mod.rs +163 -25
- {zizmor-1.2.2 → zizmor-1.3.0}/src/finding/mod.rs +118 -23
- {zizmor-1.2.2 → zizmor-1.3.0}/src/main.rs +8 -3
- {zizmor-1.2.2 → zizmor-1.3.0}/src/models.rs +9 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/registry.rs +2 -2
- {zizmor-1.2.2 → zizmor-1.3.0}/src/render.rs +31 -3
- {zizmor-1.2.2 → zizmor-1.3.0}/src/utils.rs +27 -24
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshot.rs +20 -0
- zizmor-1.3.0/tests/snapshots/snapshot__invalid_inputs.snap +17 -0
- zizmor-1.3.0/tests/snapshots/snapshot__overprovisioned_secrets.snap +22 -0
- zizmor-1.3.0/tests/test-data/invalid/invalid-workflow.yml +14 -0
- zizmor-1.3.0/tests/test-data/overprovisioned-secrets.yml +27 -0
- zizmor-1.2.2/src/finding/locate.rs +0 -59
- {zizmor-1.2.2 → zizmor-1.3.0}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/.github/dependabot.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/.github/workflows/release.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/.github/workflows/site.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/.gitignore +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/CONTRIBUTING.md +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/LICENSE +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/Makefile +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/README.md +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/assets/favicon48x48.png +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/assets/rainbow.svg +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/assets/zizmor-demo.gif +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/configuration.md +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/development.md +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/index.md +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/installation.md +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/magiclink.css +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/quickstart.md +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/snippets/help.txt +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/snippets/render-sponsors.py +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/snippets/render-trophies.py +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/snippets/sponsors.html +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/snippets/sponsors.json +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/docs/trophy-case.md +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/mkdocs.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/pyproject.toml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/artipacked.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/cache_poisoning.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/dangerous_triggers.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/excessive_permissions.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/github_env.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/hardcoded_container_credentials.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/impostor_commit.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/insecure_commands.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/known_vulnerable_actions.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/ref_confusion.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/secrets_inherit.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/self_hosted_runner.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/unpinned_uses.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/audit/use_trusted_publishing.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/config.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/expr/expr.pest +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/github_api.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/models/coordinate.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/models/uses.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/sarif.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/src/state.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/acceptance.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/common.rs +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__artipacked-2.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__artipacked-3.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__artipacked-4.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__artipacked.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__bot_conditions.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-10.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-11.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-12.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-13.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-14.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-2.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-3.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-4.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-5.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-6.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-7.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-8.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning-9.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cache_poisoning.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__cant_retrieve.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__conflicting_online_options-2.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__conflicting_online_options-3.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__conflicting_online_options.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__excessive_permissions-10.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__excessive_permissions-11.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__excessive_permissions-12.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__excessive_permissions-2.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__excessive_permissions-3.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__excessive_permissions-4.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__excessive_permissions-5.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__excessive_permissions-6.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__excessive_permissions-7.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__excessive_permissions-8.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__excessive_permissions-9.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__excessive_permissions.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__github_env-2.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__github_env-3.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__github_env.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__insecure_commands-2.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__insecure_commands-3.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__insecure_commands.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__secrets_inherit.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__self_hosted-2.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__self_hosted-3.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__self_hosted-4.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__self_hosted-5.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__self_hosted-6.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__self_hosted-7.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__self_hosted-8.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__self_hosted.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__template_injection-2.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__template_injection-3.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__template_injection-4.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__template_injection-5.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__template_injection-6.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__template_injection-7.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__template_injection-8.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__template_injection.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__unpinned_uses-2.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__unpinned_uses-3.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__unpinned_uses-4.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/snapshots/snapshot__unpinned_uses.snap +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/artipacked/issue-447-repro.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/artipacked.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/bot-conditions.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/caching-disabled-by-default.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/caching-enabled-by-default.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/caching-not-configurable.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/caching-opt-in-boolean-toggle.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/caching-opt-in-boolish-toggle.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/caching-opt-in-expression.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/caching-opt-in-multi-value-toggle.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/caching-opt-out.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/issue-343-repro.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/issue-378-repro.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/no-cache-aware-steps.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/publisher-step.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/workflow-release-branch-trigger.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning/workflow-tag-trigger.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/cache-poisoning.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/excessive-permissions/issue-336-repro.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/excessive-permissions/issue-472-repro.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/excessive-permissions/jobs-broaden-permissions.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/excessive-permissions/reusable-workflow-call.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/excessive-permissions/reusable-workflow-other-triggers.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/excessive-permissions/workflow-default-perms-all-jobs-explicit.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/excessive-permissions/workflow-default-perms.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/excessive-permissions/workflow-empty-perms.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/excessive-permissions/workflow-read-all.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/excessive-permissions/workflow-write-all.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/excessive-permissions/workflow-write-explicit.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/excessive-permissions.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/github-env/action.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/github-env/github-path.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/github-env/issue-397-repro.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/github_env.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/hardcoded-credentials.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/inlined-ignores.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/insecure-commands/action.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/insecure-commands.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/secrets-inherit.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/self-hosted/issue-283-repro.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/self-hosted/self-hosted-matrix-dimension.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/self-hosted/self-hosted-matrix-exclusion.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/self-hosted/self-hosted-matrix-inclusion.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/self-hosted/self-hosted-runner-group.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/self-hosted/self-hosted-runner-label.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/self-hosted.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/template-injection/issue-22-repro.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/template-injection/issue-339-repro.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/template-injection/issue-418-repro.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/template-injection/pr-317-repro.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/template-injection/pr-425-backstop/action.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/template-injection/static-env.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/template-injection/template-injection-dynamic-matrix.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/template-injection/template-injection-static-matrix.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/template-injection.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/unpinned-uses/action.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/unpinned-uses/issue-433-repro.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/unpinned-uses.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/tests/test-data/use-trusted-publishing.yml +0 -0
- {zizmor-1.2.2 → zizmor-1.3.0}/uv.lock +0 -0
|
@@ -23,7 +23,7 @@ jobs:
|
|
|
23
23
|
- runner: ubuntu-24.04
|
|
24
24
|
target: x86
|
|
25
25
|
manylinux: auto
|
|
26
|
-
- runner: ubuntu-24.04
|
|
26
|
+
- runner: ubuntu-24.04
|
|
27
27
|
target: aarch64
|
|
28
28
|
manylinux: "2_24"
|
|
29
29
|
- runner: ubuntu-24.04
|
|
@@ -40,7 +40,7 @@ jobs:
|
|
|
40
40
|
with:
|
|
41
41
|
persist-credentials: false
|
|
42
42
|
- name: Build wheels
|
|
43
|
-
uses: PyO3/maturin-action@
|
|
43
|
+
uses: PyO3/maturin-action@5f8a1b3b0aad13193f46c9131f9b9e663def8ce5 # v1
|
|
44
44
|
with:
|
|
45
45
|
target: ${{ matrix.platform.target }}
|
|
46
46
|
args: --release --out dist
|
|
@@ -70,7 +70,7 @@ jobs:
|
|
|
70
70
|
with:
|
|
71
71
|
persist-credentials: false
|
|
72
72
|
- name: Build wheels
|
|
73
|
-
uses: PyO3/maturin-action@
|
|
73
|
+
uses: PyO3/maturin-action@5f8a1b3b0aad13193f46c9131f9b9e663def8ce5 # v1
|
|
74
74
|
with:
|
|
75
75
|
target: ${{ matrix.platform.target }}
|
|
76
76
|
args: --release --out dist
|
|
@@ -96,7 +96,7 @@ jobs:
|
|
|
96
96
|
with:
|
|
97
97
|
persist-credentials: false
|
|
98
98
|
- name: Build wheels
|
|
99
|
-
uses: PyO3/maturin-action@
|
|
99
|
+
uses: PyO3/maturin-action@5f8a1b3b0aad13193f46c9131f9b9e663def8ce5 # v1
|
|
100
100
|
with:
|
|
101
101
|
target: ${{ matrix.platform.target }}
|
|
102
102
|
args: --release --out dist
|
|
@@ -121,7 +121,7 @@ jobs:
|
|
|
121
121
|
with:
|
|
122
122
|
persist-credentials: false
|
|
123
123
|
- name: Build wheels
|
|
124
|
-
uses: PyO3/maturin-action@
|
|
124
|
+
uses: PyO3/maturin-action@5f8a1b3b0aad13193f46c9131f9b9e663def8ce5 # v1
|
|
125
125
|
with:
|
|
126
126
|
target: ${{ matrix.platform.target }}
|
|
127
127
|
args: --release --out dist
|
|
@@ -139,7 +139,7 @@ jobs:
|
|
|
139
139
|
with:
|
|
140
140
|
persist-credentials: false
|
|
141
141
|
- name: Build sdist
|
|
142
|
-
uses: PyO3/maturin-action@
|
|
142
|
+
uses: PyO3/maturin-action@5f8a1b3b0aad13193f46c9131f9b9e663def8ce5 # v1
|
|
143
143
|
with:
|
|
144
144
|
command: sdist
|
|
145
145
|
args: --out dist
|
|
@@ -167,12 +167,12 @@ jobs:
|
|
|
167
167
|
steps:
|
|
168
168
|
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4
|
|
169
169
|
- name: Generate artifact attestation
|
|
170
|
-
uses: actions/attest-build-provenance@
|
|
170
|
+
uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2
|
|
171
171
|
with:
|
|
172
172
|
subject-path: 'wheels-*/*'
|
|
173
173
|
- name: Publish to PyPI
|
|
174
174
|
if: ${{ startsWith(github.ref, 'refs/tags/') }}
|
|
175
|
-
uses: PyO3/maturin-action@
|
|
175
|
+
uses: PyO3/maturin-action@5f8a1b3b0aad13193f46c9131f9b9e663def8ce5 # v1
|
|
176
176
|
with:
|
|
177
177
|
command: upload
|
|
178
178
|
args: --non-interactive --skip-existing wheels-*/*
|
|
@@ -27,7 +27,7 @@ jobs:
|
|
|
27
27
|
env:
|
|
28
28
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
29
29
|
- name: Upload SARIF file
|
|
30
|
-
uses: github/codeql-action/upload-sarif@
|
|
30
|
+
uses: github/codeql-action/upload-sarif@f6091c0113d1dcf9b98e269ee48e8a7e51b7bdd4 # v3.28.5
|
|
31
31
|
with:
|
|
32
32
|
sarif_file: results.sarif
|
|
33
33
|
category: zizmor
|
|
@@ -273,9 +273,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|
|
273
273
|
|
|
274
274
|
[[package]]
|
|
275
275
|
name = "clap"
|
|
276
|
-
version = "4.5.
|
|
276
|
+
version = "4.5.27"
|
|
277
277
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
278
|
-
checksum = "
|
|
278
|
+
checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796"
|
|
279
279
|
dependencies = [
|
|
280
280
|
"clap_builder",
|
|
281
281
|
"clap_derive",
|
|
@@ -293,9 +293,9 @@ dependencies = [
|
|
|
293
293
|
|
|
294
294
|
[[package]]
|
|
295
295
|
name = "clap_builder"
|
|
296
|
-
version = "4.5.
|
|
296
|
+
version = "4.5.27"
|
|
297
297
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
298
|
-
checksum = "
|
|
298
|
+
checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7"
|
|
299
299
|
dependencies = [
|
|
300
300
|
"anstream",
|
|
301
301
|
"anstyle",
|
|
@@ -616,9 +616,9 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
|
|
|
616
616
|
|
|
617
617
|
[[package]]
|
|
618
618
|
name = "github-actions-models"
|
|
619
|
-
version = "0.
|
|
619
|
+
version = "0.23.0"
|
|
620
620
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
621
|
-
checksum = "
|
|
621
|
+
checksum = "f2269402e4d8fe06d41aa858a0fe15a49842764334d0aacc52f5f41e11466e30"
|
|
622
622
|
dependencies = [
|
|
623
623
|
"indexmap",
|
|
624
624
|
"serde",
|
|
@@ -972,9 +972,9 @@ dependencies = [
|
|
|
972
972
|
|
|
973
973
|
[[package]]
|
|
974
974
|
name = "indexmap"
|
|
975
|
-
version = "2.7.
|
|
975
|
+
version = "2.7.1"
|
|
976
976
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
977
|
-
checksum = "
|
|
977
|
+
checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652"
|
|
978
978
|
dependencies = [
|
|
979
979
|
"equivalent",
|
|
980
980
|
"hashbrown",
|
|
@@ -983,9 +983,9 @@ dependencies = [
|
|
|
983
983
|
|
|
984
984
|
[[package]]
|
|
985
985
|
name = "indicatif"
|
|
986
|
-
version = "0.17.
|
|
986
|
+
version = "0.17.11"
|
|
987
987
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
988
|
-
checksum = "
|
|
988
|
+
checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235"
|
|
989
989
|
dependencies = [
|
|
990
990
|
"console",
|
|
991
991
|
"number_prefix",
|
|
@@ -997,13 +997,14 @@ dependencies = [
|
|
|
997
997
|
|
|
998
998
|
[[package]]
|
|
999
999
|
name = "insta"
|
|
1000
|
-
version = "1.42.
|
|
1000
|
+
version = "1.42.1"
|
|
1001
1001
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1002
|
-
checksum = "
|
|
1002
|
+
checksum = "71c1b125e30d93896b365e156c33dadfffab45ee8400afcbba4752f59de08a86"
|
|
1003
1003
|
dependencies = [
|
|
1004
1004
|
"console",
|
|
1005
1005
|
"linked-hash-map",
|
|
1006
1006
|
"once_cell",
|
|
1007
|
+
"pin-project",
|
|
1007
1008
|
"similar",
|
|
1008
1009
|
]
|
|
1009
1010
|
|
|
@@ -1072,6 +1073,16 @@ dependencies = [
|
|
|
1072
1073
|
"redox_syscall",
|
|
1073
1074
|
]
|
|
1074
1075
|
|
|
1076
|
+
[[package]]
|
|
1077
|
+
name = "line-index"
|
|
1078
|
+
version = "0.1.2"
|
|
1079
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1080
|
+
checksum = "3e27e0ed5a392a7f5ba0b3808a2afccff16c64933312c84b57618b49d1209bd2"
|
|
1081
|
+
dependencies = [
|
|
1082
|
+
"nohash-hasher",
|
|
1083
|
+
"text-size",
|
|
1084
|
+
]
|
|
1085
|
+
|
|
1075
1086
|
[[package]]
|
|
1076
1087
|
name = "linked-hash-map"
|
|
1077
1088
|
version = "0.5.6"
|
|
@@ -1176,6 +1187,12 @@ dependencies = [
|
|
|
1176
1187
|
"windows-sys 0.52.0",
|
|
1177
1188
|
]
|
|
1178
1189
|
|
|
1190
|
+
[[package]]
|
|
1191
|
+
name = "nohash-hasher"
|
|
1192
|
+
version = "0.2.0"
|
|
1193
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1194
|
+
checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451"
|
|
1195
|
+
|
|
1179
1196
|
[[package]]
|
|
1180
1197
|
name = "nom"
|
|
1181
1198
|
version = "7.1.3"
|
|
@@ -1297,6 +1314,26 @@ dependencies = [
|
|
|
1297
1314
|
"sha2",
|
|
1298
1315
|
]
|
|
1299
1316
|
|
|
1317
|
+
[[package]]
|
|
1318
|
+
name = "pin-project"
|
|
1319
|
+
version = "1.1.8"
|
|
1320
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1321
|
+
checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916"
|
|
1322
|
+
dependencies = [
|
|
1323
|
+
"pin-project-internal",
|
|
1324
|
+
]
|
|
1325
|
+
|
|
1326
|
+
[[package]]
|
|
1327
|
+
name = "pin-project-internal"
|
|
1328
|
+
version = "1.1.8"
|
|
1329
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1330
|
+
checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb"
|
|
1331
|
+
dependencies = [
|
|
1332
|
+
"proc-macro2",
|
|
1333
|
+
"quote",
|
|
1334
|
+
"syn 2.0.90",
|
|
1335
|
+
]
|
|
1336
|
+
|
|
1300
1337
|
[[package]]
|
|
1301
1338
|
name = "pin-project-lite"
|
|
1302
1339
|
version = "0.2.15"
|
|
@@ -1766,9 +1803,9 @@ dependencies = [
|
|
|
1766
1803
|
|
|
1767
1804
|
[[package]]
|
|
1768
1805
|
name = "serde_json"
|
|
1769
|
-
version = "1.0.
|
|
1806
|
+
version = "1.0.137"
|
|
1770
1807
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1771
|
-
checksum = "
|
|
1808
|
+
checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b"
|
|
1772
1809
|
dependencies = [
|
|
1773
1810
|
"itoa",
|
|
1774
1811
|
"memchr",
|
|
@@ -2083,6 +2120,12 @@ version = "0.4.1"
|
|
|
2083
2120
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2084
2121
|
checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76"
|
|
2085
2122
|
|
|
2123
|
+
[[package]]
|
|
2124
|
+
name = "text-size"
|
|
2125
|
+
version = "1.1.1"
|
|
2126
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2127
|
+
checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233"
|
|
2128
|
+
|
|
2086
2129
|
[[package]]
|
|
2087
2130
|
name = "thiserror"
|
|
2088
2131
|
version = "1.0.69"
|
|
@@ -2332,9 +2375,9 @@ dependencies = [
|
|
|
2332
2375
|
|
|
2333
2376
|
[[package]]
|
|
2334
2377
|
name = "tracing-indicatif"
|
|
2335
|
-
version = "0.3.
|
|
2378
|
+
version = "0.3.9"
|
|
2336
2379
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2337
|
-
checksum = "
|
|
2380
|
+
checksum = "8201ca430e0cd893ef978226fd3516c06d9c494181c8bf4e5b32e30ed4b40aa1"
|
|
2338
2381
|
dependencies = [
|
|
2339
2382
|
"indicatif",
|
|
2340
2383
|
"tracing",
|
|
@@ -3108,7 +3151,7 @@ dependencies = [
|
|
|
3108
3151
|
|
|
3109
3152
|
[[package]]
|
|
3110
3153
|
name = "zizmor"
|
|
3111
|
-
version = "1.
|
|
3154
|
+
version = "1.3.0"
|
|
3112
3155
|
dependencies = [
|
|
3113
3156
|
"annotate-snippets",
|
|
3114
3157
|
"anstream",
|
|
@@ -3126,6 +3169,7 @@ dependencies = [
|
|
|
3126
3169
|
"indicatif",
|
|
3127
3170
|
"insta",
|
|
3128
3171
|
"itertools",
|
|
3172
|
+
"line-index",
|
|
3129
3173
|
"owo-colors",
|
|
3130
3174
|
"pest",
|
|
3131
3175
|
"pest_derive",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "zizmor"
|
|
3
3
|
description = "Static analysis for GitHub Actions"
|
|
4
|
-
version = "1.
|
|
4
|
+
version = "1.3.0"
|
|
5
5
|
edition = "2021"
|
|
6
6
|
repository = "https://github.com/woodruffw/zizmor"
|
|
7
7
|
homepage = "https://github.com/woodruffw/zizmor"
|
|
@@ -17,18 +17,19 @@ annotate-snippets = "0.11.5"
|
|
|
17
17
|
anstream = "0.6.18"
|
|
18
18
|
anyhow = "1.0.95"
|
|
19
19
|
camino = { version = "1.1.9", features = ["serde1"] }
|
|
20
|
-
clap = { version = "4.5.
|
|
20
|
+
clap = { version = "4.5.27", features = ["derive", "env"] }
|
|
21
21
|
clap-verbosity-flag = { version = "3.0.2", features = [
|
|
22
22
|
"tracing",
|
|
23
23
|
], default-features = false }
|
|
24
24
|
etcetera = "0.8.0"
|
|
25
25
|
flate2 = "1.0.35"
|
|
26
|
-
github-actions-models = "0.
|
|
26
|
+
github-actions-models = "0.23.0"
|
|
27
27
|
http-cache-reqwest = "0.15.0"
|
|
28
28
|
human-panic = "2.0.1"
|
|
29
|
-
indexmap = "2.7.
|
|
30
|
-
indicatif = "0.17.
|
|
29
|
+
indexmap = "2.7.1"
|
|
30
|
+
indicatif = "0.17.11"
|
|
31
31
|
itertools = "0.14.0"
|
|
32
|
+
line-index = "0.1.2"
|
|
32
33
|
owo-colors = "4.1.0"
|
|
33
34
|
pest = "2.7.15"
|
|
34
35
|
pest_derive = "2.7.15"
|
|
@@ -41,7 +42,7 @@ reqwest = { version = "0.12.12", features = [
|
|
|
41
42
|
reqwest-middleware = "0.4.0"
|
|
42
43
|
serde = { version = "1.0.217", features = ["derive"] }
|
|
43
44
|
serde-sarif = "0.7.0"
|
|
44
|
-
serde_json = "1.0.
|
|
45
|
+
serde_json = "1.0.137"
|
|
45
46
|
serde_yaml = "0.9.34"
|
|
46
47
|
# TODO remove pending https://github.com/tree-sitter/tree-sitter/pull/4034
|
|
47
48
|
streaming-iterator = "0.1.9"
|
|
@@ -49,7 +50,7 @@ tar = "0.4.43"
|
|
|
49
50
|
terminal-link = "0.1.0"
|
|
50
51
|
tokio = { version = "1.43.0", features = ["rt-multi-thread"] }
|
|
51
52
|
tracing = "0.1.41"
|
|
52
|
-
tracing-indicatif = "0.3.
|
|
53
|
+
tracing-indicatif = "0.3.9"
|
|
53
54
|
tracing-subscriber = { version = "0.3.19", features = ["env-filter"] }
|
|
54
55
|
tree-sitter = "0.24.7"
|
|
55
56
|
tree-sitter-bash = "0.23.3"
|
|
@@ -65,6 +66,6 @@ lto = true
|
|
|
65
66
|
|
|
66
67
|
[dev-dependencies]
|
|
67
68
|
assert_cmd = "2.0.16"
|
|
68
|
-
insta = { version = "1.42.
|
|
69
|
+
insta = { version = "1.42.1" }
|
|
69
70
|
pretty_assertions = "1.4.1"
|
|
70
71
|
serde_json_path = "0.7.1"
|
|
@@ -849,7 +849,7 @@ not using `pull_request_target` for auto-merge workflows.
|
|
|
849
849
|
jobs:
|
|
850
850
|
automerge:
|
|
851
851
|
runs-on: ubuntu-latest
|
|
852
|
-
if: github.actor == 'dependabot[bot] && github.repository ==
|
|
852
|
+
if: github.actor == 'dependabot[bot]' && github.repository == github.event.pull_request.head.repo.full_name
|
|
853
853
|
steps:
|
|
854
854
|
- run: gh pr merge --auto --merge "$PR_URL"
|
|
855
855
|
env:
|
|
@@ -865,7 +865,7 @@ not using `pull_request_target` for auto-merge workflows.
|
|
|
865
865
|
jobs:
|
|
866
866
|
automerge:
|
|
867
867
|
runs-on: ubuntu-latest
|
|
868
|
-
if: github.event.pull_request.user.login == 'dependabot[bot] && github.repository ==
|
|
868
|
+
if: github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == github.event.pull_request.head.repo.full_name
|
|
869
869
|
steps:
|
|
870
870
|
- run: gh pr merge --auto --merge "$PR_URL"
|
|
871
871
|
env:
|
|
@@ -873,6 +873,67 @@ not using `pull_request_target` for auto-merge workflows.
|
|
|
873
873
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
874
874
|
```
|
|
875
875
|
|
|
876
|
+
## `overprovisioned-secrets`
|
|
877
|
+
|
|
878
|
+
| Type | Examples | Introduced in | Works offline | Enabled by default |
|
|
879
|
+
|----------|-------------------------|---------------|----------------|--------------------|
|
|
880
|
+
| Workflow | [overprovisioned-secrets.yml] | v1.3.0 | ✅ | ✅ |
|
|
881
|
+
|
|
882
|
+
[overprovisioned-secrets.yml]: https://github.com/woodruffw/gha-hazmat/blob/main/.github/workflows/overprovisioned-secrets.yml
|
|
883
|
+
|
|
884
|
+
Detects excessive sharing of the `secrets` context.
|
|
885
|
+
|
|
886
|
+
Typically, users access the `secrets` context via its individual members:
|
|
887
|
+
|
|
888
|
+
```yaml
|
|
889
|
+
env:
|
|
890
|
+
SECRET_ONE: ${{ secrets.SECRET_ONE }}
|
|
891
|
+
SECRET_TWO: ${{ secrets.SECRET_TWO }}
|
|
892
|
+
```
|
|
893
|
+
|
|
894
|
+
This allows the Actions runner to only expose the secrets actually used by
|
|
895
|
+
the workflow to the job environment.
|
|
896
|
+
|
|
897
|
+
However, if the user instead accesses the *entire* `secrets` context:
|
|
898
|
+
|
|
899
|
+
```yaml
|
|
900
|
+
env:
|
|
901
|
+
SECRETS: ${{ toJson(secrets) }}
|
|
902
|
+
```
|
|
903
|
+
|
|
904
|
+
...then the entire `secrets` context is exposed to the runner, even if
|
|
905
|
+
only a single secret is actually needed.
|
|
906
|
+
|
|
907
|
+
### Remediation
|
|
908
|
+
|
|
909
|
+
In general, users should avoid loading the entire `secrets` context.
|
|
910
|
+
Secrets should be accessed individually by name.
|
|
911
|
+
|
|
912
|
+
=== "Before :warning:"
|
|
913
|
+
|
|
914
|
+
```yaml title="overprovisioned.yml" hl_lines="7"
|
|
915
|
+
jobs:
|
|
916
|
+
deploy:
|
|
917
|
+
runs-on: ubuntu-latest
|
|
918
|
+
steps:
|
|
919
|
+
- run: ./deploy.sh
|
|
920
|
+
env:
|
|
921
|
+
SECRETS: ${{ toJSON(secrets) }}
|
|
922
|
+
```
|
|
923
|
+
|
|
924
|
+
=== "After :white_check_mark:"
|
|
925
|
+
|
|
926
|
+
```yaml title="overprovisioned.yml" hl_lines="7-8"
|
|
927
|
+
jobs:
|
|
928
|
+
deploy:
|
|
929
|
+
runs-on: ubuntu-latest
|
|
930
|
+
steps:
|
|
931
|
+
- run: ./deploy.sh
|
|
932
|
+
env:
|
|
933
|
+
SECRET_ONE: ${{ secrets.SECRET_ONE }}
|
|
934
|
+
SECRET_TWO: ${{ secrets.SECRET_TWO }}
|
|
935
|
+
```
|
|
936
|
+
|
|
876
937
|
[ArtiPACKED: Hacking Giants Through a Race Condition in GitHub Actions Artifacts]: https://unit42.paloaltonetworks.com/github-repo-artifacts-leak-tokens/
|
|
877
938
|
[Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests]: https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/
|
|
878
939
|
[What the fork? Imposter commits in GitHub Actions and CI/CD]: https://www.chainguard.dev/unchained/what-the-fork-imposter-commits-in-github-actions-and-ci-cd
|
|
@@ -9,7 +9,35 @@ of `zizmor`.
|
|
|
9
9
|
|
|
10
10
|
## Next (UNRELEASED)
|
|
11
11
|
|
|
12
|
-
Nothing to see here
|
|
12
|
+
Nothing to see here yet!
|
|
13
|
+
|
|
14
|
+
## v1.3.0
|
|
15
|
+
|
|
16
|
+
This release comes with one new audit ([overprovisioned-secrets]), plus a
|
|
17
|
+
handful of bugfixes and analysis improvements to existing audits. It also
|
|
18
|
+
comes with a special easter egg for those who wish to *kvell* about their
|
|
19
|
+
audit results.
|
|
20
|
+
|
|
21
|
+
### New Features 🌈
|
|
22
|
+
|
|
23
|
+
* **New audit**: [overprovisioned-secrets] detects uses of the `secrets`
|
|
24
|
+
context that result in excessive secret provisioning (#485)
|
|
25
|
+
* Added a special naches mode for when you're feeling particularly proud of
|
|
26
|
+
your audit results (#490)
|
|
27
|
+
|
|
28
|
+
### Improvements 🌱
|
|
29
|
+
|
|
30
|
+
* `zizmor` produces slightly more informative error messages when given
|
|
31
|
+
an invalid input file (#482)
|
|
32
|
+
* Case insensitivity in contexts is now handeled more consistently
|
|
33
|
+
and pervasively (#491)
|
|
34
|
+
|
|
35
|
+
### Bug Fixes 🐛
|
|
36
|
+
|
|
37
|
+
* Fixed a bug where `zizmor` would fail to discover actions within
|
|
38
|
+
subdirectories of `.github/workflows` (#477)
|
|
39
|
+
* Fixed a bug where `zizmor` would fail to parse composite action definitions
|
|
40
|
+
with no `name` field (#487)
|
|
13
41
|
|
|
14
42
|
## v1.2.2
|
|
15
43
|
|
|
@@ -490,3 +518,4 @@ This is one of `zizmor`'s bigger recent releases! Key enhancements include:
|
|
|
490
518
|
[secrets-inherit]: ./audits.md#secrets-inherit
|
|
491
519
|
[unpinned-uses]: ./audits.md#unpinned-uses
|
|
492
520
|
[bot-conditions]: ./audits.md#bot-conditions
|
|
521
|
+
[overprovisioned-secrets]: ./audits.md#overprovisioned-secrets
|
|
@@ -48,6 +48,22 @@
|
|
|
48
48
|
- autotag-dev/autotag#142
|
|
49
49
|
|
|
50
50
|
|
|
51
|
+
- { width="40" loading=lazy align=left } BerkeleyLearnVerify
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
??? example "Examples"
|
|
56
|
+
- BerkeleyLearnVerify/Scenic#320
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
- { width="40" loading=lazy align=left } bitcoindevkit
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
??? example "Examples"
|
|
64
|
+
- bitcoindevkit/bdk#1778
|
|
65
|
+
|
|
66
|
+
|
|
51
67
|
- { width="40" loading=lazy align=left } blakeblackshear
|
|
52
68
|
|
|
53
69
|
---
|
|
@@ -445,6 +461,15 @@
|
|
|
445
461
|
- numpy/numpy.org#797
|
|
446
462
|
|
|
447
463
|
|
|
464
|
+
- { width="40" loading=lazy align=left } onnx
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
??? example "Examples"
|
|
469
|
+
- onnx/onnx#6661
|
|
470
|
+
- onnx/onnx#6662
|
|
471
|
+
|
|
472
|
+
|
|
448
473
|
- { width="40" loading=lazy align=left } Orange-OpenSource
|
|
449
474
|
|
|
450
475
|
---
|
|
@@ -514,6 +539,7 @@
|
|
|
514
539
|
---
|
|
515
540
|
|
|
516
541
|
??? example "Examples"
|
|
542
|
+
- pymc-devs/pymc#7624
|
|
517
543
|
- pymc-devs/pytensor#1136
|
|
518
544
|
|
|
519
545
|
|
|
@@ -666,6 +692,7 @@
|
|
|
666
692
|
- sigstore/cosign#3959
|
|
667
693
|
- sigstore/fulcio#1910
|
|
668
694
|
- sigstore/gitsign#602
|
|
695
|
+
- sigstore/sigstore-rs#424
|
|
669
696
|
|
|
670
697
|
|
|
671
698
|
- { width="40" loading=lazy align=left } simpeg
|
|
@@ -11,6 +11,8 @@ ashishb/wp2hugo#91
|
|
|
11
11
|
astral-sh/ruff#14844
|
|
12
12
|
astropy/astropy#17315
|
|
13
13
|
autotag-dev/autotag#142
|
|
14
|
+
BerkeleyLearnVerify/Scenic#320
|
|
15
|
+
bitcoindevkit/bdk#1778
|
|
14
16
|
blakeblackshear/frigate#15490
|
|
15
17
|
brian-team/brian2@d497b11a268549c0c491df2f5f9c6332c4f733d0
|
|
16
18
|
cakephp/cakephp#18081
|
|
@@ -93,6 +95,8 @@ NLnetLabs/nsd#413
|
|
|
93
95
|
NLnetLabs/unbound#1204
|
|
94
96
|
numpy/numpy#27931
|
|
95
97
|
numpy/numpy.org#797
|
|
98
|
+
onnx/onnx#6661
|
|
99
|
+
onnx/onnx#6662
|
|
96
100
|
Ouranosinc/xclim#2023
|
|
97
101
|
Orange-OpenSource/hurl#3574
|
|
98
102
|
oxc-project/oxc#7844
|
|
@@ -105,6 +109,7 @@ pypa/packaging.python.org#1765
|
|
|
105
109
|
pypa/pip-audit#851
|
|
106
110
|
pypi/stdlib-list#138
|
|
107
111
|
pypi/warehouse#16996
|
|
112
|
+
pymc-devs/pymc#7624
|
|
108
113
|
pymc-devs/pytensor#1136
|
|
109
114
|
pytest-dev/pytest#13062
|
|
110
115
|
python/bedevere#652
|
|
@@ -134,6 +139,7 @@ Saghen/blink.cmp#991
|
|
|
134
139
|
sigstore/cosign#3959
|
|
135
140
|
sigstore/fulcio#1910
|
|
136
141
|
sigstore/gitsign#602
|
|
142
|
+
sigstore/sigstore-rs#424
|
|
137
143
|
simpeg/simpeg#1592
|
|
138
144
|
termcolor/termcolor#89
|
|
139
145
|
termux/termux-packages#22519
|
|
@@ -2,7 +2,7 @@ use github_actions_models::common::{expr::ExplicitExpr, If};
|
|
|
2
2
|
|
|
3
3
|
use super::{audit_meta, Audit};
|
|
4
4
|
use crate::{
|
|
5
|
-
expr::{self, Expr},
|
|
5
|
+
expr::{self, Context, Expr},
|
|
6
6
|
finding::{Confidence, Severity},
|
|
7
7
|
models::JobExt,
|
|
8
8
|
};
|
|
@@ -73,10 +73,10 @@ impl BotConditions {
|
|
|
73
73
|
func: _,
|
|
74
74
|
args: exprs,
|
|
75
75
|
}
|
|
76
|
-
| Expr::Context {
|
|
76
|
+
| Expr::Context(Context {
|
|
77
77
|
raw: _,
|
|
78
78
|
components: exprs,
|
|
79
|
-
} => exprs
|
|
79
|
+
}) => exprs
|
|
80
80
|
.iter()
|
|
81
81
|
.map(|arg| Self::walk_tree_for_bot_condition(arg, false))
|
|
82
82
|
.reduce(|(bc, _), (bc_next, _)| (bc || bc_next, false))
|
|
@@ -92,9 +92,9 @@ impl BotConditions {
|
|
|
92
92
|
}
|
|
93
93
|
// == is trivially dominating.
|
|
94
94
|
expr::BinOp::Eq => match (lhs.as_ref(), rhs.as_ref()) {
|
|
95
|
-
(Expr::Context
|
|
96
|
-
| (Expr::String(s), Expr::Context
|
|
97
|
-
if
|
|
95
|
+
(Expr::Context(ctx), Expr::String(s))
|
|
96
|
+
| (Expr::String(s), Expr::Context(ctx)) => {
|
|
97
|
+
if ctx == "github.actor" && s.ends_with("[bot]") {
|
|
98
98
|
(true, true)
|
|
99
99
|
} else {
|
|
100
100
|
(false, true)
|
|
@@ -132,10 +132,13 @@ impl BotConditions {
|
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
fn bot_condition(expr: &str) -> Option<Confidence> {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
135
|
+
// TODO: Remove clones here.
|
|
136
|
+
let bare = match ExplicitExpr::from_curly(expr) {
|
|
137
|
+
Some(raw_expr) => raw_expr.as_bare().to_string(),
|
|
138
|
+
None => expr.to_string(),
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
let Ok(expr) = Expr::parse(&bare) else {
|
|
139
142
|
tracing::warn!("couldn't parse expression: {expr}");
|
|
140
143
|
return None;
|
|
141
144
|
};
|
|
@@ -166,6 +169,8 @@ mod tests {
|
|
|
166
169
|
// Trivial dominating cases.
|
|
167
170
|
("github.actor == 'dependabot[bot]'", Confidence::High),
|
|
168
171
|
("'dependabot[bot]' == github.actor", Confidence::High),
|
|
172
|
+
("'dependabot[bot]' == GitHub.actor", Confidence::High),
|
|
173
|
+
("'dependabot[bot]' == GitHub.ACTOR", Confidence::High),
|
|
169
174
|
// Dominating cases with OR.
|
|
170
175
|
(
|
|
171
176
|
"'dependabot[bot]' == github.actor || true",
|