Software Securityhome
Fix a findingSearch
Tools

GitHub Actions workflow analyzer

Paste a GitHub Actions workflow and find the patterns behind real CI compromises: privileged triggers that run pull request code, script injection, actions pinned to a movable tag, broad token permissions, inherited secrets, persisted credentials, self-hosted runners and cache poisoning.

LOCAL UTILITY / 09

Analyze a workflow

Paste a workflow from .github/workflows/, or a composite action’saction.yml. It is parsed and checked in this browser; nothing is fetched or sent.

Loading the local analyzer… If this remains visible, refresh the page.

What is checked

  • dangerous-triggers: pull_request_target, workflow_run and issue_comment, and jobs under them that check out or fetch pull request code or download the triggering run’s artifacts
  • template-injection: ${{ }} expressions in run: steps and actions/github-script whose values an outsider controls (titles, bodies, branch names, commit messages) or that carry text from inputs and outputs
  • unpinned-uses: actions, reusable workflows and docker:// images not pinned to a full commit SHA or digest, with the incidents where tags were moved
  • excessive-permissions: default token permissions, write-all and read-all, and write scopes granted to every job
  • secrets-inherit, artipacked (checkout without persist-credentials: false), self-hosted-runner and github-env
  • cache-poisoning: release and publishing jobs that restore a cache, and cache-mode: write under untrusted triggers

Source specifications

Guides and practice

All tools

Find your next answer

Type to search. Search runs in your browser.

Searches run in your browser, but the host can infer them from the index files they load. The address shows your search so you can bookmark or share it.