asa
asa (actions-security-analzyer) is a tool to analyze the security posture of your GitHub Actions.
Installation
Make sure you have
$HOME/.local/binin your PATH
pip install actions-security-analzyer
Usage
asa --file action.yml
asa -d directory-with-actions/ --verbose
asa --file action.yml --ignore-warnings
asa --list-checks
Use asa in Your GitHub Workflows
Example
name: 'RunActionsSecurityAnalzyer'
on:
push:
branches:
- main
- dev
paths:
- '.github/workflows/**'
jobs:
RunAsa:
runs-on: ubuntu-latest
steps:
- name: "Checkout repo"
uses: actions/checkout@96f53100ba2a5449eb71d2e6604bbcd94b9449b5 # v3.5.3
- name: "Run asa scanner"
uses: "bin3xish477/asa@ee733379e314d44f1a960a70339ee5e5d19e404d"
with:
dir: "./actions/"
verbose: true
no-summary: true
ignore-checks: 'check_for_inline_script check_for_cache_action_usage'
Checks Performed by asa
-
Name:
check_for_3p_actions_without_hash, Level:FAIL- This check identifies any third-party GitHub Actions in use that have been referenced via a version number such as
v1.1instead of commit SHA haah. Using a hash can help mitigate supply chain threats in a scenario where a threat actor has compromised the source repository where the 3P action lives.
- This check identifies any third-party GitHub Actions in use that have been referenced via a version number such as
-
Name:
check_for_allow_unsecure_commands, Level:FAIL- This check looks for the usage of environment variable called
ACTIONS_ALLOW_UNSECURE_COMMANDSwhich allows for an Action to get access to dangerous commands (get-env,add-path) which can lead to code injection and credential thefts opportunities.
- This check looks for the usage of environment variable called
-
Name:
check_for_cache_action_usage, Level:WARN- This check finds any usage of GitHub's caching Action (
actions/cache) which may result in sensitive information disclosure or cache poisoning.
- This check finds any usage of GitHub's caching Action (
-
Name:
check_for_dangerous_write_permissions, Level:FAIL- This check looks for write permissions granted to potentially dangerous scopes such as the
contentsscope which may allow an adversary write code into the target repository if they're able to compromise the workflow. It's also looks for usage of thewrite-allwhich gives the action complete write access to all scopes.
- This check looks for write permissions granted to potentially dangerous scopes such as the
-
Name:
check_for_inline_script, Level:WARN- This check simply warns that you're using an inline script instead of GitHub Action. Inline scripts are susceptible to script injection attacks (another check covered by
asa). It is recommended to write an action and pass any required context values as inputs to that action which removes script injection vector because action input are properly treated as arguments and are not evaluated as part of a script.
- This check simply warns that you're using an inline script instead of GitHub Action. Inline scripts are susceptible to script injection attacks (another check covered by
-
Name:
check_for_pull_request_target, Level:FAIL- This check looks for the usage of the dangerous event trigger
pull_request_targetwhich allows workflow executions to run in the context of the repository that defines the workflow, not the repository that the pull request originated from, potentially allowing a threat actor to gain access to a repositories sensitive secrets!
- This check looks for the usage of the dangerous event trigger
-
Name:
check_for_script_injection, Level:FAIL- This check looks for the most commonly known security risk to GitHub Action - script injection. Script injection occurs when an action directly includes (using the
${{ ... }}syntax) a GitHub Context variable(s) in an inline script that can be controlled by an untrusted actor, resulting in command execution in the interpreted shell. These user-controllable parameters should be passed into an inline script as environment variables.
- This check looks for the most commonly known security risk to GitHub Action - script injection. Script injection occurs when an action directly includes (using the
-
Name:
check_for_self_hosted_runners, Level:WARN- This checks attempts to identify the usage of self-hosted runners. Self-hosted runners are dangerous because if the Action is compromised it may allow a threat actor to gain access to on premise environment or establish persistence mechanisms on a server you own/rent.
-
Name:
check_for_aws_configure_credentials_non_oidc, Level:WARN- This checks looks for the usage of AWS's
aws-actions/configure-aws-credentialsaction and attempts to identify non-OIDC authentication parameters. Non-OIDC authentication types are less secure than OIDC because they require the creation of long-term credentials which can be compromised, however, OIDC tokens are short-lived and are usually scoped to only the permissions that are essential to a workflow and thus help reduce the attack surface.
- This checks looks for the usage of AWS's
-
Name:
check_for_pull_request_create_or_approve, Level:WARN- This check looks for Action that have logic related to creating or improving pull requests. Creating or approving pull requests via automation poses a security risk if sufficient controls aren't in place to protect against malicious code being merged into a repository.
-
Name:
check_for_remote_script, Level:WARN- This check looks for a URL in an inline script of a GitHub Action which usually signals the inclusion of a remote script which can be dangerous.
References
Metadata
Release files for actions-security-analyzer 1.4.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| actions_security_analyzer-1.4.5.tar.gz | 2.4 MB | Without provenance | Details for actions_security_analyzer-1.4.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| actions_security_analyzer-1.4.5-py3-none-any.whl | Python 3 | none | any | Details for actions_security_analyzer-1.4.5-py3-none-any.whl |
Total release size: 2.4 MB
Release files / actions_security_analyzer-1.4.5.tar.gz
| Download URL | actions_security_analyzer-1.4.5.tar.gz |
|---|---|
| Size | 2.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
635b6fe7840e2ad500d342b69842eff8f3172fc8dbb004e276ae4cdeaf8615ce
|
|
BLAKE2b-256 checksum How to use checksums |
f904a9b15c862b435f186df3f619a6c69905af55be25ad25e2928fca78786b64
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-httpx/0.24.1
|
Release files / actions_security_analyzer-1.4.5-py3-none-any.whl
| Download URL | actions_security_analyzer-1.4.5-py3-none-any.whl |
|---|---|
| Size | 10.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d9ef7e70c6f9d3109c3506cbad9490d388e1f035fff69f42d2b3ebe2412c58ca
|
|
BLAKE2b-256 checksum How to use checksums |
a14be21bbc8ae1007be001bf5da10faa9f88984bbbb447b8610ad27e8d790c83
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-httpx/0.24.1
|
Security for actions-security-analyzer 1.4.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.