Skip to main content

Map the AWS blast radius of GitHub Actions workflows

Project description

ActionScope

Map the AWS blast radius of your GitHub Actions workflows.

PyPI GitHub Marketplace License: MIT CI codecov

ActionScope reads your .github/workflows/ files, Terraform IAM resources, and inline JSON IAM policies, then tells you โ€” in plain English โ€” what your CI/CD pipelines can actually do to your AWS environment.

It answers the question no other tool answers: "If this workflow is compromised, what can an attacker do in AWS?"

Install

pip install actionscope

Quick Start

actionscope scan .

Example Output

ActionScope โ€” Blast Radius Report
Path: /my-repo  |  Workflows: 2  |  Overall Risk: ๐Ÿ”ด CRITICAL

deploy.yml โ†’ deploy โ†’ Configure AWS credentials
  AWS Role: arn:aws:iam::123456789012:role/github-deploy-role
  Auth: OIDC โœ“

  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ Action                      โ”‚ Access Level       โ”‚ Risk     โ”‚
  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
  โ”‚ iam:PassRole                โ”‚ Permissions mgmt   โ”‚ ๐Ÿ”ด CRIT  โ”‚
  โ”‚ ec2:TerminateInstances      โ”‚ Write              โ”‚ ๐ŸŸ  HIGH  โ”‚
  โ”‚ s3:GetObject                โ”‚ Read               โ”‚ ๐ŸŸข LOW   โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

  โš ๏ธ  iam:PassRole on * โ€” privilege escalation path exists

Use as a GitHub Action

- uses: r12habh/ActionScope@v0
  with:
    fail-on: high
    comment-pr: true

What ActionScope Adds Beyond Existing Tools

Capability actionlint zizmor Scorecard ActionScope
Workflow syntax validation โœ… Partial โŒ Partial
Security pattern detection โŒ โœ… โœ… โœ…
GITHUB_TOKEN review โŒ โœ… โœ… โœ…
Unpinned actions detection โŒ โœ… โœ… โœ…
AWS credential source detection โŒ โŒ โŒ โœ…
Workflow โ†’ IAM role correlation โŒ โŒ โŒ โœ…
Blast-radius plain-English report โŒ โŒ โŒ โœ…
SARIF / GitHub Security tab โŒ โœ… โœ… โœ…

How It Works

ActionScope performs static analysis by default โ€” it never sends your code to any external service unless you explicitly enable live AWS verification.

  1. Finds all .github/workflows/*.yml files
  2. Extracts AWS role ARNs and GITHUB_TOKEN permission declarations
  3. Finds matching IAM policies in Terraform or JSON files in your repo
  4. Classifies each IAM action by risk using the policy-sentry database
  5. Outputs a plain-English blast radius report

What If My Policies Aren't in the Repo?

โ„น๏ธ  Policy not found in repo for role: arn:aws:iam::123456:role/ci-deploy
๐Ÿ’ก  Run with --aws-verify to fetch live policies from AWS

--aws-verify uses read-only IAM API calls to fetch the real attached policies for any role ARN found in your workflows. See docs/aws-verify-permissions.md for the exact AWS permissions required.

Release and Marketplace publishing steps are documented in docs/release-runbook.md.

Research

ActionScope is backed by a public measurement study of 493 GitHub repositories and 3,981 workflow files that use AWS via GitHub Actions.

Key findings from May 2026:

  • 95.5% use at least one unpinned action (the supply-chain attack surface)
  • 58.2% use static AWS access keys instead of OIDC
  • 44.0% expose role ARNs directly in workflow files
  • 8.1% use pull_request_target with write-capable permissions

โ†’ Full research findings | Scanner and data

Built By

Rishabh Singh. GitHub

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

actionscope-0.2.0.tar.gz (68.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

actionscope-0.2.0-py3-none-any.whl (64.9 kB view details)

Uploaded Python 3

File details

Details for the file actionscope-0.2.0.tar.gz.

File metadata

  • Download URL: actionscope-0.2.0.tar.gz
  • Upload date:
  • Size: 68.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for actionscope-0.2.0.tar.gz
Algorithm Hash digest
SHA256 392bae7b4f6e41427c7cd6d0f4f452517eee258c10c7a7a43e3b0344df5780a9
MD5 812603ede15773b3050e83d82b03e41b
BLAKE2b-256 7f146f1bf5559ad9c2182059c549c0a8f691d424a45bdc717ae8822938584ac9

See more details on using hashes here.

Provenance

The following attestation bundles were made for actionscope-0.2.0.tar.gz:

Publisher: release.yml on r12habh/ActionScope

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file actionscope-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: actionscope-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 64.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for actionscope-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 99f556b1a9fe1eb2ac9a83caa6cd44cbae09a5407a5889d9d21bda7c511f9272
MD5 cfb9adbcb290db0647c26e37188620d3
BLAKE2b-256 e7ef66c7229b9b05a578911ee16e484d8ff3691487d93614d00c411fcf80095c

See more details on using hashes here.

Provenance

The following attestation bundles were made for actionscope-0.2.0-py3-none-any.whl:

Publisher: release.yml on r12habh/ActionScope

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page