Open-source, read-only AWS security scanner. 110 checks across 25 services, 31 attack-chain rules, 64 IAM escalation methods (incl. lateral AssumeRole graph), Proof Mode exploitability verification, data perimeter and Bedrock AgentCore checks, Blast Radius CLI, Threat Feed, What-If simulator, AI-SPM, 6 compliance frameworks, breach-cost estimation, MCP server. CLI + Terraform remediation on every finding.
Project description
cloud-audit
Find AWS attack paths, IAM escalation routes, and the fixes that matter most.
Open-source, read-only AWS security scanner. It correlates findings into attack chains, ranks fixes by how many chains they break, and ships an AWS CLI + Terraform fix with every finding. No agent, no infrastructure, nothing written to your account.
Quick Start - What You Get - Installation - What's Checked - Documentation
Quick Start
pip install cloud-audit
cloud-audit scan # uses your default AWS credentials and region
No AWS account handy? Run a full sample report offline:
cloud-audit demo
cloud-audit is read-only. It never modifies your infrastructure; SecurityAudit is enough (permissions).
Example Output
+---- Attack Chains (5 detected) -----------------------------------+
| CRITICAL Internet-Exposed Admin Instance |
| i-0abc123 - public SG + admin IAM role + IMDSv1 |
| CRITICAL IAM Privilege Escalation via iam:PassRole |
| ci-deploy-role - 3-step path to admin |
| CRITICAL CI/CD to Admin Takeover |
| github-deploy - OIDC without sub + admin policy |
+-------------------------------------------------------------------+
+---- Remediation Plan ---------------------------------------------+
| Fix 4 root causes, break 22 attack chains |
| Quick wins (effort LOW, 14 chains): |
| 1. Restrict SG ingress on sg-0abc123 -> breaks 8 chains |
| 2. Add OIDC sub condition -> breaks 6 chains |
+-------------------------------------------------------------------+
Preview a fix before you touch anything:
cloud-audit simulate --fix aws-vpc-002
# Score 34 -> 58 (+24) | Chains broken 8 of 22 | Findings resolved 11
What You Get
- Attack chains // 31 rules correlate individual findings into exploitable paths (MITRE ATT&CK + pathfinding.cloud). docs
- Root-cause fixes // groups findings by shared cause and ranks them: "fix 4 things, break 22 chains," with a what-if
simulateto preview impact. docs - IAM privilege escalation // 64 methods across 9 categories, including lateral movement through the AssumeRole graph. docs
- Blast radius // walk outward from any resource to see what an attacker reaches; export JSON to the live visualizer. docs
- Proof Mode //
scan --verifychecks each escalation path against the IAM policy simulator (read-only) and flags the ones the principal can actually perform. docs - Data perimeter // resource-policy checks for confused-deputy and cross-org exposure, evaluating condition values (not just their presence). docs
- AgentCore security // checks for Amazon Bedrock AgentCore AI agents: network mode, MMDSv2, memory encryption, gateway authorizer. docs
- Threat Feed // 10 detectors for active-abuse patterns from 2025-2026 incidents, each with a primary-source citation. docs
- Remediation on every finding // copy-paste AWS CLI + reviewable Terraform you apply yourself; security findings also carry a USD breach-cost estimate with sources.
- Trend & drift //
cloud-audit diffcatches ClickOps drift between scans;cloud-audit trendtracks posture over time.
Drop a cloud-audit blast-radius --format json export into the open visualizer at
blast-audit.haitmg.pl - everything runs in your browser.
Reports
cloud-audit scan --format html -o report.html # client-ready
cloud-audit scan --format sarif -o results.sarif # GitHub Code Scanning
cloud-audit scan --format json -o report.json # machine-readable
cloud-audit scan --format markdown -o report.md # PR comments
CI/CD
- run: pip install cloud-audit
- run: cloud-audit scan --format sarif --output results.sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
--quiet exits with a code only: 0 clean, 1 findings, 2 error. Gate on severity with --min-severity high. Ready-made workflows: basic scan, daily diff, post-deploy.
Installation
pip install cloud-audit # pip (recommended)
pipx install cloud-audit # isolated
docker run ghcr.io/gebalamariusz/cloud-audit scan # Docker
Docker with credentials:
docker run -v ~/.aws:/home/cloudaudit/.aws:ro ghcr.io/gebalamariusz/cloud-audit scan
AWS Permissions
Read-only. Attach the AWS-managed SecurityAudit policy (covers every check, including IAM escalation analysis):
aws iam attach-role-policy --role-name auditor \
--policy-arn arn:aws:iam::aws:policy/SecurityAudit
cloud-audit never modifies your infrastructure. simulate runs locally against scan data and makes no AWS calls.
What's Checked
110 checks across 25 AWS services - IAM, S3, EC2, VPC, RDS, KMS, CloudTrail, GuardDuty, Lambda, Secrets Manager, Bedrock, SageMaker, Bedrock AgentCore, DynamoDB, and more. Run cloud-audit list-checks, or see the full check reference.
6 compliance frameworks via scan --compliance <id>: CIS AWS v3.0 and SOC 2 Type II (stable), plus ISO 27001:2022, HIPAA, NIS2, and BSI C5:2020 (beta). docs
MCP server for AI agents - 6 read-only tools (scan_aws, get_findings, get_attack_chains, get_remediation, get_health_score, list_checks):
claude mcp add cloud-audit -- uvx --from cloud-audit cloud-audit-mcp
Common flags and configuration
cloud-audit scan -R # show remediation inline
cloud-audit scan --profile prod --regions eu-central-1 # profile / region
cloud-audit scan --regions all # all enabled regions
cloud-audit scan --role-arn arn:aws:iam::...:role/audit # cross-account
cloud-audit scan --export-fixes fixes.sh # export all fixes
Configure defaults in .cloud-audit.yml (regions, min_severity, exclude_checks, time-boxed suppressions). Environment variables (CLOUD_AUDIT_REGIONS, CLOUD_AUDIT_MIN_SEVERITY, ...) override the file; CLI flags override everything. See the configuration guide.
Documentation
Full documentation at haitmg.pl/cloud-audit: getting started, attack chains, IAM escalation, blast radius, Proof Mode, data perimeter, AgentCore, compliance, and the full check reference.
Development
git clone https://github.com/gebalamariusz/cloud-audit.git
cd cloud-audit
pip install -e ".[dev]"
pytest -q && ruff check src/ tests/ && mypy src/
See CONTRIBUTING.md to add a check. Past releases in CHANGELOG.md.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cloud_audit-2.4.0.tar.gz.
File metadata
- Download URL: cloud_audit-2.4.0.tar.gz
- Upload date:
- Size: 7.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d47b2c5ff7e15b50a31636de4e6258080662ea48bbe9b14b38fd05e6e06d99bb
|
|
| MD5 |
1b1df2bcfc68dfe725c10c73c555b0fa
|
|
| BLAKE2b-256 |
205db14d292b7109e941f4b7321bb94dd4c818dcf2928e9a5520de9101785e7f
|
Provenance
The following attestation bundles were made for cloud_audit-2.4.0.tar.gz:
Publisher:
release.yml on gebalamariusz/cloud-audit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cloud_audit-2.4.0.tar.gz -
Subject digest:
d47b2c5ff7e15b50a31636de4e6258080662ea48bbe9b14b38fd05e6e06d99bb - Sigstore transparency entry: 2025197914
- Sigstore integration time:
-
Permalink:
gebalamariusz/cloud-audit@c6e5e21ed4555eab808a69cc2849a0f78e262c00 -
Branch / Tag:
refs/tags/v2.4.0 - Owner: https://github.com/gebalamariusz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c6e5e21ed4555eab808a69cc2849a0f78e262c00 -
Trigger Event:
push
-
Statement type:
File details
Details for the file cloud_audit-2.4.0-py3-none-any.whl.
File metadata
- Download URL: cloud_audit-2.4.0-py3-none-any.whl
- Upload date:
- Size: 331.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b73271f44f1cc74d43770292e983388b1f81e935e6dcfcd9ee05b0d29e1c921
|
|
| MD5 |
a4ef5e1b06204ced9141e9068d433c84
|
|
| BLAKE2b-256 |
aafb4bda26fe60018b0801daf4c500c8e1c7ee9cb56b03bc8b6781b5b43b6bf9
|
Provenance
The following attestation bundles were made for cloud_audit-2.4.0-py3-none-any.whl:
Publisher:
release.yml on gebalamariusz/cloud-audit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cloud_audit-2.4.0-py3-none-any.whl -
Subject digest:
6b73271f44f1cc74d43770292e983388b1f81e935e6dcfcd9ee05b0d29e1c921 - Sigstore transparency entry: 2025197994
- Sigstore integration time:
-
Permalink:
gebalamariusz/cloud-audit@c6e5e21ed4555eab808a69cc2849a0f78e262c00 -
Branch / Tag:
refs/tags/v2.4.0 - Owner: https://github.com/gebalamariusz
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c6e5e21ed4555eab808a69cc2849a0f78e262c00 -
Trigger Event:
push
-
Statement type: