cloud-audit 1.2.2__tar.gz → 2.0.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.
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.github/workflows/release.yml +5 -5
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/CHANGELOG.md +69 -1
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/PKG-INFO +62 -156
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/README.md +60 -154
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/ROADMAP.md +11 -9
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/mkdocs.yml +4 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/pyproject.toml +2 -2
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/cli.py +359 -4
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/compliance/__init__.py +6 -1
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/compliance/engine.py +4 -0
- cloud_audit-2.0.0/src/cloud_audit/compliance/frameworks/bsi_c5_2020.json +1703 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/compliance/frameworks/cis_aws_v3.json +278 -101
- cloud_audit-2.0.0/src/cloud_audit/compliance/frameworks/hipaa_security.json +802 -0
- cloud_audit-2.0.0/src/cloud_audit/compliance/frameworks/iso27001_2022.json +1297 -0
- cloud_audit-2.0.0/src/cloud_audit/compliance/frameworks/nis2_directive.json +782 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/compliance/frameworks/soc2_type2.json +329 -57
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/correlate.py +447 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/cost_model.py +23 -0
- cloud_audit-2.0.0/src/cloud_audit/history.py +173 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/models.py +42 -0
- cloud_audit-2.0.0/src/cloud_audit/providers/aws/checks/backup.py +154 -0
- cloud_audit-2.0.0/src/cloud_audit/providers/aws/checks/bedrock.py +159 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/cloudtrail.py +166 -2
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/cloudwatch.py +85 -2
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/config_.py +12 -2
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/ecs.py +22 -14
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/iam.py +137 -2
- cloud_audit-2.0.0/src/cloud_audit/providers/aws/checks/inspector.py +156 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/kms.py +2 -1
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/s3.py +33 -4
- cloud_audit-2.0.0/src/cloud_audit/providers/aws/checks/sagemaker.py +233 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/secrets.py +2 -1
- cloud_audit-2.0.0/src/cloud_audit/providers/aws/checks/ssm.py +304 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/vpc.py +127 -1
- cloud_audit-2.0.0/src/cloud_audit/providers/aws/checks/waf.py +126 -0
- cloud_audit-2.0.0/src/cloud_audit/providers/aws/iam_analyzer.py +452 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/provider.py +17 -2
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/reports/compliance_html.py +1 -1
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/reports/html.py +1 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/reports/templates/report.html.j2 +44 -0
- cloud_audit-2.0.0/src/cloud_audit/root_cause.py +223 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/scanner.py +10 -0
- cloud_audit-2.0.0/src/cloud_audit/simulate.py +190 -0
- cloud_audit-2.0.0/tests/aws/test_bedrock.py +48 -0
- cloud_audit-2.0.0/tests/aws/test_iam_analyzer.py +349 -0
- cloud_audit-2.0.0/tests/aws/test_sagemaker.py +91 -0
- cloud_audit-2.0.0/tests/test_compliance_frameworks.py +508 -0
- cloud_audit-2.0.0/tests/test_history.py +176 -0
- cloud_audit-2.0.0/tests/test_root_cause.py +245 -0
- cloud_audit-2.0.0/tests/test_simulate.py +168 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_soc2_framework.py +1 -1
- cloud_audit-1.2.2/src/cloud_audit/providers/aws/checks/ssm.py +0 -144
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.cloud-audit.example.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.github/FUNDING.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.github/dependabot.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.github/workflows/ci.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.github/workflows/docs.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.github/workflows/example-scan.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.gitignore +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.mcp.json +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/.pre-commit-hooks.yaml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/CODEOWNERS +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/CODE_OF_CONDUCT.md +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/CONTRIBUTING.md +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/Dockerfile +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/LICENSE +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/Makefile +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/SECURITY.md +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/action.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/assets/demo.gif +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/assets/logo-nobg.png +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/assets/logo.png +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/assets/report-preview.png +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/assets/social-preview.png +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/examples/daily-scan-with-diff.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/examples/github-actions.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/examples/post-deploy-scan.yml +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/scripts/generate_demo_gif.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/scripts/generate_report_screenshot.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/__init__.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/__main__.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/config.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/diff.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/mcp_server.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/__init__.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/__init__.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/__init__.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/account.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/ec2.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/efs.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/eip.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/guardduty.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/lambda_.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/rds.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/aws/checks/securityhub.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/providers/base.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/py.typed +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/reports/__init__.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/reports/compliance_markdown.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/reports/diff_markdown.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/reports/markdown.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/src/cloud_audit/reports/sarif.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/__init__.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/__init__.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_cis_checks.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_cloudtrail.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_cloudwatch.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_config.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_ec2.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_ecs.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_eip.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_guardduty.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_iam.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_kms.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_lambda.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_rds.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_s3.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_secrets.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_ssm.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/aws/test_vpc.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/conftest.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_cli.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_cli_scan.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_config.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_correlate.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_cost_model.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_diff.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_html.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_markdown.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_mcp_server.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_models.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_provider.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_sarif.py +0 -0
- {cloud_audit-1.2.2 → cloud_audit-2.0.0}/tests/test_scanner.py +0 -0
|
@@ -32,7 +32,7 @@ jobs:
|
|
|
32
32
|
fi
|
|
33
33
|
- run: pip install build
|
|
34
34
|
- run: python -m build
|
|
35
|
-
- uses: actions/upload-artifact@
|
|
35
|
+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
36
36
|
with:
|
|
37
37
|
name: dist
|
|
38
38
|
path: dist/
|
|
@@ -51,7 +51,7 @@ jobs:
|
|
|
51
51
|
with:
|
|
52
52
|
name: dist
|
|
53
53
|
path: dist/
|
|
54
|
-
- uses: pypa/gh-action-pypi-publish@
|
|
54
|
+
- uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # release/v1
|
|
55
55
|
|
|
56
56
|
docker:
|
|
57
57
|
name: Publish Docker image
|
|
@@ -62,12 +62,12 @@ jobs:
|
|
|
62
62
|
packages: write
|
|
63
63
|
steps:
|
|
64
64
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
65
|
-
- uses: docker/login-action@
|
|
65
|
+
- uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
|
|
66
66
|
with:
|
|
67
67
|
registry: ghcr.io
|
|
68
68
|
username: ${{ github.actor }}
|
|
69
69
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
70
|
-
- uses: docker/login-action@
|
|
70
|
+
- uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
|
|
71
71
|
with:
|
|
72
72
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
73
73
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
@@ -81,7 +81,7 @@ jobs:
|
|
|
81
81
|
type=semver,pattern={{version}}
|
|
82
82
|
type=semver,pattern={{major}}.{{minor}}
|
|
83
83
|
type=raw,value=latest
|
|
84
|
-
- uses: docker/build-push-action@
|
|
84
|
+
- uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
|
|
85
85
|
with:
|
|
86
86
|
context: .
|
|
87
87
|
push: true
|
|
@@ -7,6 +7,73 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.0.0] - 2026-04-14
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **IAM Privilege Escalation Detection** - 25 escalation methods across 6 categories (IAM self-mutation, credential access, PassRole+service, Lambda code modification, trust policy abuse, permission boundary bypass). Replaces dead PMapper as the only maintained open-source IAM escalation scanner
|
|
15
|
+
- **What-If Remediation Simulator** - `cloud-audit simulate --fix aws-vpc-002` shows before/after impact on score, chains, and risk without changing anything in AWS
|
|
16
|
+
- **Security Posture Trend** - `cloud-audit trend` tracks health score, attack chains, and risk over time with sparkline visualization. Scan history auto-saved to `~/.cloud-audit/history/`
|
|
17
|
+
- **AI-SPM (Bedrock + SageMaker)** - 5 new checks: model invocation logging (aws-bedrock-001), guardrails (aws-bedrock-002), notebook root access (aws-sagemaker-001), notebook internet access (aws-sagemaker-002), endpoint encryption (aws-sagemaker-003)
|
|
18
|
+
- **Root Cause Grouping** - "fix 4 things, break 22 chains" prioritization. Groups findings by root cause and ranks by chain-breaking impact
|
|
19
|
+
- **Quick Wins** - CLI section showing LOW-effort fixes that break CRITICAL chains, with copy-paste commands
|
|
20
|
+
- **6 new attack chain rules** - AC-34 (PassRole escalation), AC-35 (IAM self-escalation), AC-36 (OIDC + escalation), AC-37 (AI model theft), AC-38 (LLMjacking), AC-39 (AI data poisoning)
|
|
21
|
+
- Compliance Beta labels for BSI C5, ISO 27001, HIPAA, NIS2 (CIS and SOC 2 remain Stable)
|
|
22
|
+
- `list-frameworks` shows Status column (Stable/Beta)
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- Remediation CLI commands now inject real AWS account ID (via `provider.get_account_id()`) instead of `ACCOUNT_ID` placeholders
|
|
27
|
+
- Terraform remediation snippets completed with missing dependent resources (IAM roles, S3 buckets, KMS keys, CloudWatch log groups)
|
|
28
|
+
- VPC flow logs Terraform scoped IAM policy to specific log group ARN (was `Resource: *`)
|
|
29
|
+
- `get_account_id()` cached in AWSProvider (1 STS call instead of 10+ per scan)
|
|
30
|
+
- Root cause computation moved after cost estimation (fixes risk aggregation)
|
|
31
|
+
- `get_account_id()` calls moved inside try/except in kms, iam, s3 checks
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- Unicode characters (arrows, em-dashes, block characters) replaced with ASCII for Windows cp1250 compatibility
|
|
36
|
+
|
|
37
|
+
## [1.3.0] - 2026-04-03
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- **BSI C5:2020 compliance framework** - 134 Cloud Computing Compliance Criteria mapped (20 automated, 37 partial, 77 manual), covering all 17 BSI domains (OIS, SP, HR, AM, PS, OPS, IDM, CRY, COM, PI, DEV, SIM, BCM, COS, INQ, PSS, LOG)
|
|
42
|
+
- **ISO/IEC 27001:2022 compliance framework** - 93 Annex A controls mapped (16 automated, 31 partial, 46 manual), covering Organizational (A.5), People (A.6), Physical (A.7), and Technological (A.8) controls
|
|
43
|
+
- **HIPAA Security Rule compliance framework** - 47 implementation specifications mapped (15 automated, 14 partial, 18 manual) across Administrative (§164.308), Physical (§164.310), and Technical (§164.312) safeguards
|
|
44
|
+
- **NIS2 Directive compliance framework** - 43 technical measures mapped (11 automated, 22 partial, 10 manual) covering Article 21(2)(a)-(j) minimum measures, Article 23 incident reporting, and Article 20 governance
|
|
45
|
+
- `--compliance bsi_c5_2020` CLI flag - BSI C5:2020 readiness assessment
|
|
46
|
+
- `--compliance iso27001_2022` CLI flag - ISO 27001:2022 Annex A readiness assessment
|
|
47
|
+
- `--compliance hipaa_security` CLI flag - HIPAA Security Rule readiness assessment
|
|
48
|
+
- `--compliance nis2_directive` CLI flag - NIS2 Directive readiness assessment
|
|
49
|
+
- All 20 attack chain rules mapped to controls in each new framework
|
|
50
|
+
- **8 new security checks** (80 -> 88 total):
|
|
51
|
+
- `aws-backup-001` - AWS Backup vault with backup plan (Backup)
|
|
52
|
+
- `aws-inspector-001` - Amazon Inspector v2 enabled (Inspector)
|
|
53
|
+
- `aws-waf-001` - WAFv2 WebACL exists (WAF)
|
|
54
|
+
- `aws-cw-016` - CloudWatch log group KMS encryption (CloudWatch)
|
|
55
|
+
- `aws-ssm-003` - EC2 patch compliance via SSM (SSM)
|
|
56
|
+
- `aws-vpc-006` - VPC subnet isolation (VPC)
|
|
57
|
+
- `aws-iam-017` - IAM role max session duration (IAM)
|
|
58
|
+
- `aws-ct-008` - CloudTrail delivers to CloudWatch Logs (CloudTrail)
|
|
59
|
+
- **5 new attack chain rules** (20 -> 25 total):
|
|
60
|
+
- AC-29: Unpatched Instance Exposed to Internet (CRITICAL)
|
|
61
|
+
- AC-30: Unpatched Instances Without Vulnerability Scanning (HIGH)
|
|
62
|
+
- AC-31: Internet-Exposed Without WAF or Flow Logs (HIGH)
|
|
63
|
+
- AC-32: CloudTrail Blind Spot — Alarms Non-Functional (HIGH)
|
|
64
|
+
- AC-33: All-Public VPC Without Network Segmentation (HIGH)
|
|
65
|
+
- 3 new service modules: AWS Backup, Amazon Inspector, AWS WAF
|
|
66
|
+
- 67 new tests for framework validation (412 total)
|
|
67
|
+
|
|
68
|
+
### Changed
|
|
69
|
+
|
|
70
|
+
- Check count: 80 -> 88 across 21 AWS services (was 18)
|
|
71
|
+
- Attack chain count: 20 -> 25 rules
|
|
72
|
+
- `list-frameworks` now shows 6 frameworks (was 2)
|
|
73
|
+
- CLI help text updated with all 6 framework IDs
|
|
74
|
+
- pyproject.toml description updated to reflect 6 compliance frameworks
|
|
75
|
+
- 21 CIS controls corrected from Manual to Partial (had automated checks but wrong assessment type)
|
|
76
|
+
|
|
10
77
|
## [1.2.2] - 2026-04-01
|
|
11
78
|
|
|
12
79
|
### Added
|
|
@@ -401,7 +468,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
401
468
|
- Docker image support
|
|
402
469
|
- Rich terminal UI with progress bar and color-coded findings
|
|
403
470
|
|
|
404
|
-
[Unreleased]: https://github.com/gebalamariusz/cloud-audit/compare/v1.
|
|
471
|
+
[Unreleased]: https://github.com/gebalamariusz/cloud-audit/compare/v1.3.0...HEAD
|
|
472
|
+
[1.3.0]: https://github.com/gebalamariusz/cloud-audit/compare/v1.2.2...v1.3.0
|
|
405
473
|
[1.2.2]: https://github.com/gebalamariusz/cloud-audit/compare/v1.2.1...v1.2.2
|
|
406
474
|
[1.2.1]: https://github.com/gebalamariusz/cloud-audit/compare/v1.2.0...v1.2.1
|
|
407
475
|
[1.2.0]: https://github.com/gebalamariusz/cloud-audit/compare/v1.1.0...v1.2.0
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cloud-audit
|
|
3
|
-
Version:
|
|
4
|
-
Summary: Open-source AWS security scanner with
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: Open-source AWS security scanner with IAM escalation detection, What-If simulator, security trends, AI-SPM (Bedrock/SageMaker), 6 compliance frameworks, 31 attack chain rules, breach cost estimation, and MCP server. 94 checks across 23 services. Every finding includes CLI + Terraform remediation.
|
|
5
5
|
Project-URL: Homepage, https://github.com/gebalamariusz/cloud-audit
|
|
6
6
|
Project-URL: Documentation, https://haitmg.pl/cloud-audit/
|
|
7
7
|
Project-URL: Repository, https://github.com/gebalamariusz/cloud-audit
|
|
@@ -56,8 +56,8 @@ Description-Content-Type: text/markdown
|
|
|
56
56
|
</p>
|
|
57
57
|
|
|
58
58
|
<p align="center">
|
|
59
|
-
Open-source CLI
|
|
60
|
-
|
|
59
|
+
Open-source CLI that correlates findings into exploitable paths,<br>
|
|
60
|
+
generates copy-paste remediation, and simulates fixes before you apply them.
|
|
61
61
|
</p>
|
|
62
62
|
|
|
63
63
|
<p align="center">
|
|
@@ -72,14 +72,20 @@ Description-Content-Type: text/markdown
|
|
|
72
72
|
<a href="https://pypi.org/project/cloud-audit/"><img src="https://img.shields.io/pypi/dm/cloud-audit?style=flat" alt="PyPI downloads"></a>
|
|
73
73
|
<a href="https://ghcr.io/gebalamariusz/cloud-audit"><img src="https://img.shields.io/badge/Docker-GHCR-blue?style=flat&logo=docker" alt="Docker"></a>
|
|
74
74
|
<a href="https://www.helpnetsecurity.com/2026/03/11/cloud-audit-open-source-aws-security-scanner/"><img src="https://img.shields.io/badge/Featured_in-HelpNet_Security-blue?style=flat" alt="Featured in HelpNet Security"></a>
|
|
75
|
+
<a href="https://glama.ai/mcp/servers/gebalamariusz/cloud-audit"><img src="https://glama.ai/mcp/servers/gebalamariusz/cloud-audit/badges/score.svg" alt="MCP Server Score"></a>
|
|
75
76
|
<a href="https://haitmg.pl/cloud-audit/"><img src="https://img.shields.io/badge/Docs-haitmg.pl-blue?style=flat" alt="Documentation"></a>
|
|
76
77
|
</p>
|
|
77
78
|
|
|
78
79
|
<p align="center">
|
|
79
80
|
<a href="https://haitmg.pl/cloud-audit/">Documentation</a> -
|
|
80
81
|
<a href="https://haitmg.pl/cloud-audit/getting-started/quick-start/">Quick Start</a> -
|
|
81
|
-
<a href="https://haitmg.pl/cloud-audit/compliance/
|
|
82
|
+
<a href="https://haitmg.pl/cloud-audit/compliance/overview/">Compliance</a> -
|
|
83
|
+
<a href="https://haitmg.pl/cloud-audit/compliance/cis-aws-v3/">CIS</a> -
|
|
82
84
|
<a href="https://haitmg.pl/cloud-audit/compliance/soc2-type2/">SOC 2</a> -
|
|
85
|
+
<a href="https://haitmg.pl/cloud-audit/compliance/bsi-c5-2020/">BSI C5</a> -
|
|
86
|
+
<a href="https://haitmg.pl/cloud-audit/compliance/iso27001-2022/">ISO 27001</a> -
|
|
87
|
+
<a href="https://haitmg.pl/cloud-audit/compliance/hipaa-security/">HIPAA</a> -
|
|
88
|
+
<a href="https://haitmg.pl/cloud-audit/compliance/nis2-directive/">NIS2</a> -
|
|
83
89
|
<a href="https://haitmg.pl/cloud-audit/features/attack-chains/">Attack Chains</a> -
|
|
84
90
|
<a href="https://haitmg.pl/cloud-audit/features/mcp-server/">MCP Server</a>
|
|
85
91
|
</p>
|
|
@@ -103,23 +109,32 @@ cloud-audit demo
|
|
|
103
109
|
|
|
104
110
|
```
|
|
105
111
|
+------- Health Score -------+
|
|
106
|
-
|
|
|
112
|
+
| 34 / 100 | Risk exposure: $1.2M - $9.5M
|
|
107
113
|
+----------------------------+
|
|
108
114
|
|
|
109
|
-
+---- Attack Chains (
|
|
115
|
+
+---- Attack Chains (5 detected) -----------------------------------+
|
|
110
116
|
| CRITICAL Internet-Exposed Admin Instance |
|
|
111
117
|
| i-0abc123 - public SG + admin IAM role + IMDSv1 |
|
|
112
|
-
|
|
|
118
|
+
| |
|
|
119
|
+
| CRITICAL IAM Privilege Escalation via iam:PassRole |
|
|
120
|
+
| ci-deploy-role - 3-step path to admin |
|
|
113
121
|
| |
|
|
114
122
|
| CRITICAL CI/CD to Admin Takeover |
|
|
115
123
|
| github-deploy - OIDC no sub + admin policy |
|
|
116
|
-
| Fix: Add sub condition (effort: LOW) |
|
|
117
124
|
+--------------------------------------------------------------------+
|
|
118
125
|
|
|
119
|
-
|
|
126
|
+
+---- Remediation Plan -------------------------------------------+
|
|
127
|
+
| Fix 4 root causes, break 22 attack chains |
|
|
128
|
+
| |
|
|
129
|
+
| Quick Wins (effort: LOW, chains broken: 14): |
|
|
130
|
+
| 1. Restrict SG ingress on sg-0abc123 -> breaks 8 chains |
|
|
131
|
+
| 2. Add OIDC sub condition -> breaks 6 chains |
|
|
132
|
+
+--------------------------------------------------------------------+
|
|
133
|
+
|
|
134
|
+
Findings by severity: CRITICAL: 5 HIGH: 9 MEDIUM: 14 LOW: 6
|
|
120
135
|
```
|
|
121
136
|
|
|
122
|
-
|
|
137
|
+
94 checks across 23 AWS services. Every finding includes AWS CLI + Terraform remediation code. Root-cause grouping tells you which fixes break the most chains so you fix what matters first.
|
|
123
138
|
|
|
124
139
|
<p align="center">
|
|
125
140
|
<a href="https://www.youtube.com/watch?v=5uHoqggmTB8">
|
|
@@ -144,17 +159,19 @@ Other scanners give you a flat list of findings. cloud-audit correlates them int
|
|
|
144
159
|
aws-vpc-002 aws-ec2-004 Detected: AC-01, AC-02
|
|
145
160
|
```
|
|
146
161
|
|
|
147
|
-
Examples from the
|
|
162
|
+
Examples from the 31 built-in rules:
|
|
148
163
|
|
|
149
164
|
| Chain | What it catches |
|
|
150
165
|
|---|---|
|
|
166
|
+
| IAM Privilege Escalation | iam:PassRole + lambda:Create + iam:Attach = 3-step path to admin |
|
|
151
167
|
| Internet-Exposed Admin Instance | Public SG + admin IAM role + IMDSv1 = account takeover |
|
|
152
168
|
| CI/CD to Admin Takeover | OIDC without sub condition + admin policy = pipeline hijack |
|
|
153
169
|
| SSRF to Credential Theft | Public instance + IMDSv1 + no VPC flow logs = invisible exfiltration |
|
|
170
|
+
| AI Model Data Exfiltration | Bedrock model with public endpoint + no logging = silent data leak |
|
|
154
171
|
|
|
155
|
-
Based on [MITRE ATT&CK Cloud](https://attack.mitre.org/matrices/enterprise/cloud/) and [Datadog pathfinding.cloud](https://github.com/DataDog/pathfinding.cloud). [See all
|
|
172
|
+
Based on [MITRE ATT&CK Cloud](https://attack.mitre.org/matrices/enterprise/cloud/) and [Datadog pathfinding.cloud](https://github.com/DataDog/pathfinding.cloud). [See all 31 rules in the docs](https://haitmg.pl/cloud-audit/features/attack-chains/).
|
|
156
173
|
|
|
157
|
-
### Copy-Paste Remediation
|
|
174
|
+
### Copy-Paste Remediation + What-If Simulator
|
|
158
175
|
|
|
159
176
|
Every finding includes AWS CLI commands, Terraform HCL, and documentation links. Export all fixes as a runnable script:
|
|
160
177
|
|
|
@@ -162,24 +179,34 @@ Every finding includes AWS CLI commands, Terraform HCL, and documentation links.
|
|
|
162
179
|
cloud-audit scan --export-fixes fixes.sh
|
|
163
180
|
```
|
|
164
181
|
|
|
165
|
-
|
|
182
|
+
Simulate a fix before applying it to see which chains it breaks and how your score changes:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
cloud-audit simulate --fix aws-vpc-002
|
|
186
|
+
# Score: 34 -> 58 (+24) | Chains broken: 8 of 22 | Findings resolved: 11
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Scan Diff and Trend Tracking
|
|
166
190
|
|
|
167
191
|
Compare scans to track drift. Catches ClickOps changes, manual console edits, and regressions that IaC scanning misses.
|
|
168
192
|
|
|
169
193
|
```bash
|
|
170
194
|
cloud-audit diff yesterday.json today.json
|
|
195
|
+
cloud-audit trend # Time-series posture history
|
|
171
196
|
```
|
|
172
197
|
|
|
173
198
|
Exit code 0 = no new findings, 1 = regression. See [daily-scan-with-diff.yml](examples/daily-scan-with-diff.yml) for a CI/CD workflow.
|
|
174
199
|
|
|
175
|
-
###
|
|
200
|
+
### 6 Compliance Frameworks
|
|
176
201
|
|
|
177
202
|
Built-in compliance engine with per-control evidence, readiness scoring, and auditor-ready reports.
|
|
178
203
|
|
|
179
204
|
- **CIS AWS v3.0** - 62 controls, 55 automated (89%)
|
|
180
205
|
- **SOC 2 Type II** - 43 criteria, 24 automated (56%)
|
|
181
|
-
|
|
182
|
-
|
|
206
|
+
- **BSI C5:2020** `Beta` - 134 criteria, 57 automated/partial
|
|
207
|
+
- **ISO 27001:2022** `Beta` - 93 Annex A controls, 47 automated/partial
|
|
208
|
+
- **HIPAA Security Rule** `Beta` - 47 specs, 29 automated/partial
|
|
209
|
+
- **NIS2 Directive** `Beta` - 43 measures, 33 automated/partial
|
|
183
210
|
|
|
184
211
|
### Breach Cost Estimation
|
|
185
212
|
|
|
@@ -201,17 +228,19 @@ claude mcp add cloud-audit -- uvx --from cloud-audit cloud-audit-mcp
|
|
|
201
228
|
|
|
202
229
|
| Feature | Prowler | Trivy | Checkov | cloud-audit |
|
|
203
230
|
|---------|---------|-------|---------|-------------|
|
|
204
|
-
| Checks | 576 | 517 | 2500+ | **
|
|
205
|
-
| Attack chain detection | No | No | No | **
|
|
231
|
+
| Checks | 576 | 517 | 2500+ | **94** |
|
|
232
|
+
| Attack chain detection | No | No | No | **31 rules + root-cause grouping** |
|
|
233
|
+
| What-If remediation simulator | No | No | No | **Yes** |
|
|
234
|
+
| IAM privilege escalation paths | No | No | No | **25 methods** |
|
|
206
235
|
| Remediation per finding | CIS only | No | Links | **100% (CLI + Terraform)** |
|
|
207
236
|
| Breach cost estimation | No | No | No | **Per finding + chain** |
|
|
208
|
-
|
|
|
209
|
-
|
|
|
237
|
+
| AI-SPM (Bedrock/SageMaker) | No | No | No | **Yes** |
|
|
238
|
+
| Compliance frameworks | CIS only | — | — | **6 (CIS, SOC 2 + 4 Beta)** |
|
|
210
239
|
| MCP server (AI agents) | Paid ($99/mo) | No | No | **Free, standalone** |
|
|
211
240
|
|
|
212
|
-
cloud-audit has fewer checks than Prowler but deeper
|
|
241
|
+
cloud-audit has fewer checks than Prowler but goes deeper per finding: remediation code, attack chain correlation, cost estimates, and a What-If simulator that shows the impact of each fix before you apply it. If you need exhaustive compliance coverage across multiple clouds, Prowler is the better choice. If you need a focused scan that shows how findings chain into real attack paths and prioritizes what to fix first, cloud-audit is built for that.
|
|
213
242
|
|
|
214
|
-
<sub>Feature snapshot as of
|
|
243
|
+
<sub>Feature snapshot as of v2.0.0 (April 2026). Verify against upstream docs for the latest details.</sub>
|
|
215
244
|
|
|
216
245
|
---
|
|
217
246
|
|
|
@@ -316,142 +345,19 @@ Ready-to-use workflows: [basic scan](examples/github-actions.yml), [daily diff](
|
|
|
316
345
|
|
|
317
346
|
## AWS Permissions
|
|
318
347
|
|
|
319
|
-
cloud-audit requires **read-only** access. Attach `SecurityAudit
|
|
348
|
+
cloud-audit requires **read-only** access. Attach `SecurityAudit` (covers all checks including IAM escalation analysis):
|
|
320
349
|
|
|
321
350
|
```bash
|
|
322
351
|
aws iam attach-role-policy --role-name auditor --policy-arn arn:aws:iam::aws:policy/SecurityAudit
|
|
323
352
|
```
|
|
324
353
|
|
|
325
|
-
cloud-audit never modifies your infrastructure.
|
|
354
|
+
cloud-audit never modifies your infrastructure. The `simulate` command runs locally against scan data -- it does not call AWS APIs.
|
|
326
355
|
|
|
327
356
|
## What It Checks
|
|
328
357
|
|
|
329
|
-
|
|
358
|
+
94 checks across IAM, S3, EC2, VPC, RDS, EIP, EFS, CloudTrail, GuardDuty, KMS, CloudWatch, Lambda, ECS, SSM, Secrets Manager, AWS Config, Security Hub, Account, AWS Backup, Amazon Inspector, AWS WAF, Amazon Bedrock, and Amazon SageMaker.
|
|
330
359
|
|
|
331
|
-
|
|
332
|
-
<summary>Full check list (80 checks)</summary>
|
|
333
|
-
|
|
334
|
-
### IAM (16 checks)
|
|
335
|
-
|
|
336
|
-
| ID | Severity | Description |
|
|
337
|
-
|----|----------|-------------|
|
|
338
|
-
| `aws-iam-001` | Critical | Root account without MFA |
|
|
339
|
-
| `aws-iam-002` | High | IAM user with console access but no MFA |
|
|
340
|
-
| `aws-iam-003` | Medium | Access key older than 90 days |
|
|
341
|
-
| `aws-iam-004` | Medium | Access key unused for 45+ days |
|
|
342
|
-
| `aws-iam-005` | Critical | IAM policy with Action:\* and Resource:\* |
|
|
343
|
-
| `aws-iam-006` | Medium | Password policy below CIS requirements |
|
|
344
|
-
| `aws-iam-007` | Critical | OIDC trust policy without sub condition |
|
|
345
|
-
| `aws-iam-008` | Critical | Root account has active access keys |
|
|
346
|
-
| `aws-iam-009` | Medium | Multiple active access keys per user |
|
|
347
|
-
| `aws-iam-010` | Medium | Direct policy attachment on user (not via group) |
|
|
348
|
-
| `aws-iam-011` | Medium | No AWSSupportAccess role |
|
|
349
|
-
| `aws-iam-012` | Medium | IAM Access Analyzer not enabled |
|
|
350
|
-
| `aws-iam-013` | Medium | Expired SSL/TLS certificate in IAM |
|
|
351
|
-
| `aws-iam-014` | Medium | AWSCloudShellFullAccess attached |
|
|
352
|
-
| `aws-iam-015` | Medium | Root uses virtual MFA (not hardware) |
|
|
353
|
-
| `aws-iam-016` | Medium | EC2 instance without IAM role |
|
|
354
|
-
|
|
355
|
-
### S3 (7 checks)
|
|
356
|
-
|
|
357
|
-
| ID | Severity | Description |
|
|
358
|
-
|----|----------|-------------|
|
|
359
|
-
| `aws-s3-001` | High | S3 bucket without public access block |
|
|
360
|
-
| `aws-s3-002` | Low | S3 bucket using SSE-S3 instead of SSE-KMS |
|
|
361
|
-
| `aws-s3-003` | Low | S3 bucket without versioning |
|
|
362
|
-
| `aws-s3-004` | Low | S3 bucket without lifecycle rules |
|
|
363
|
-
| `aws-s3-005` | Medium | S3 bucket without access logging |
|
|
364
|
-
| `aws-s3-006` | Medium | S3 bucket policy does not deny HTTP |
|
|
365
|
-
| `aws-s3-007` | Low | S3 bucket without MFA Delete |
|
|
366
|
-
|
|
367
|
-
### EC2 (6 checks)
|
|
368
|
-
|
|
369
|
-
| ID | Severity | Description |
|
|
370
|
-
|----|----------|-------------|
|
|
371
|
-
| `aws-ec2-001` | High | Publicly shared AMI |
|
|
372
|
-
| `aws-ec2-002` | Medium | Unencrypted EBS volume |
|
|
373
|
-
| `aws-ec2-003` | Low | Stopped EC2 instance (EBS charges continue) |
|
|
374
|
-
| `aws-ec2-004` | High | EC2 instance with IMDSv1 (SSRF risk) |
|
|
375
|
-
| `aws-ec2-005` | Low | EC2 instance without termination protection |
|
|
376
|
-
| `aws-ec2-006` | Medium | EBS default encryption disabled |
|
|
377
|
-
|
|
378
|
-
### VPC (5 checks)
|
|
379
|
-
|
|
380
|
-
| ID | Severity | Description |
|
|
381
|
-
|----|----------|-------------|
|
|
382
|
-
| `aws-vpc-001` | Medium | Default VPC in use |
|
|
383
|
-
| `aws-vpc-002` | Critical | Security group open to 0.0.0.0/0 or ::/0 on sensitive ports |
|
|
384
|
-
| `aws-vpc-003` | Medium | VPC without flow logs |
|
|
385
|
-
| `aws-vpc-004` | Medium | NACL allows internet access to admin ports |
|
|
386
|
-
| `aws-vpc-005` | Medium | Default security group has active rules |
|
|
387
|
-
|
|
388
|
-
### RDS (4 checks)
|
|
389
|
-
|
|
390
|
-
| ID | Severity | Description |
|
|
391
|
-
|----|----------|-------------|
|
|
392
|
-
| `aws-rds-001` | Critical | Publicly accessible RDS instance |
|
|
393
|
-
| `aws-rds-002` | High | Unencrypted RDS instance |
|
|
394
|
-
| `aws-rds-003` | Medium | Single-AZ RDS instance |
|
|
395
|
-
| `aws-rds-004` | Low | RDS auto minor version upgrade disabled |
|
|
396
|
-
|
|
397
|
-
### CloudTrail (7 checks)
|
|
398
|
-
|
|
399
|
-
| ID | Severity | Description |
|
|
400
|
-
|----|----------|-------------|
|
|
401
|
-
| `aws-ct-001` | Critical | No multi-region CloudTrail trail |
|
|
402
|
-
| `aws-ct-002` | High | CloudTrail log file validation disabled |
|
|
403
|
-
| `aws-ct-003` | Critical | CloudTrail S3 bucket is publicly accessible |
|
|
404
|
-
| `aws-ct-004` | High | CloudTrail S3 bucket has no access logging |
|
|
405
|
-
| `aws-ct-005` | Medium | CloudTrail not encrypted with KMS |
|
|
406
|
-
| `aws-ct-006` | Medium | S3 object-level write events not logged |
|
|
407
|
-
| `aws-ct-007` | Medium | S3 object-level read events not logged |
|
|
408
|
-
|
|
409
|
-
### CloudWatch (15 checks)
|
|
410
|
-
|
|
411
|
-
| ID | Severity | Description |
|
|
412
|
-
|----|----------|-------------|
|
|
413
|
-
| `aws-cw-001` | High | No alarm for root account usage |
|
|
414
|
-
| `aws-cw-002` | Medium | No alarm for unauthorized API calls |
|
|
415
|
-
| `aws-cw-003` | Medium | No alarm for console sign-in without MFA |
|
|
416
|
-
| `aws-cw-004` | Medium | No alarm for IAM policy changes |
|
|
417
|
-
| `aws-cw-005` | Medium | No alarm for CloudTrail config changes |
|
|
418
|
-
| `aws-cw-006` | Medium | No alarm for console auth failures |
|
|
419
|
-
| `aws-cw-007` | Medium | No alarm for CMK disable/deletion |
|
|
420
|
-
| `aws-cw-008` | Medium | No alarm for S3 bucket policy changes |
|
|
421
|
-
| `aws-cw-009` | Medium | No alarm for Config changes |
|
|
422
|
-
| `aws-cw-010` | Medium | No alarm for security group changes |
|
|
423
|
-
| `aws-cw-011` | Medium | No alarm for NACL changes |
|
|
424
|
-
| `aws-cw-012` | Medium | No alarm for network gateway changes |
|
|
425
|
-
| `aws-cw-013` | Medium | No alarm for route table changes |
|
|
426
|
-
| `aws-cw-014` | Medium | No alarm for VPC changes |
|
|
427
|
-
| `aws-cw-015` | Medium | No alarm for Organizations changes |
|
|
428
|
-
|
|
429
|
-
### Other Services (20 checks)
|
|
430
|
-
|
|
431
|
-
| ID | Severity | Description |
|
|
432
|
-
|----|----------|-------------|
|
|
433
|
-
| `aws-gd-001` | High | GuardDuty not enabled |
|
|
434
|
-
| `aws-gd-002` | Medium | GuardDuty findings unresolved for 30+ days |
|
|
435
|
-
| `aws-cfg-001` | Medium | AWS Config not enabled |
|
|
436
|
-
| `aws-cfg-002` | High | AWS Config recorder stopped |
|
|
437
|
-
| `aws-kms-001` | Medium | KMS key without automatic rotation |
|
|
438
|
-
| `aws-kms-002` | High | KMS key policy with Principal:\* |
|
|
439
|
-
| `aws-lambda-001` | High | Lambda function URL with no authentication |
|
|
440
|
-
| `aws-lambda-002` | Medium | Lambda running on a deprecated runtime |
|
|
441
|
-
| `aws-lambda-003` | High | Potential secrets in Lambda env vars |
|
|
442
|
-
| `aws-ecs-001` | Critical | ECS task running in privileged mode |
|
|
443
|
-
| `aws-ecs-002` | High | ECS task without log configuration |
|
|
444
|
-
| `aws-ecs-003` | Medium | ECS service with Execute Command enabled |
|
|
445
|
-
| `aws-ssm-001` | Medium | EC2 instance not managed by SSM |
|
|
446
|
-
| `aws-ssm-002` | High | SSM parameter stored as plain String |
|
|
447
|
-
| `aws-sm-001` | Medium | Secret without rotation |
|
|
448
|
-
| `aws-sm-002` | Low | Secret unused for 90+ days |
|
|
449
|
-
| `aws-eip-001` | Low | Unattached Elastic IP |
|
|
450
|
-
| `aws-efs-001` | Medium | EFS file system not encrypted |
|
|
451
|
-
| `aws-sh-001` | Medium | Security Hub not enabled |
|
|
452
|
-
| `aws-account-001` | Medium | No security alternate contact |
|
|
453
|
-
|
|
454
|
-
</details>
|
|
360
|
+
[See all 94 checks by service](https://haitmg.pl/cloud-audit/checks/) or run `cloud-audit list-checks` locally.
|
|
455
361
|
|
|
456
362
|
## Alternatives
|
|
457
363
|
|
|
@@ -465,21 +371,21 @@ cloud-audit never modifies your infrastructure.
|
|
|
465
371
|
cloud-audit has grown beyond what a single README can cover. The full documentation is at **[haitmg.pl/cloud-audit](https://haitmg.pl/cloud-audit/)** and includes:
|
|
466
372
|
|
|
467
373
|
- **[Getting Started](https://haitmg.pl/cloud-audit/getting-started/installation/)** - installation, quick start, demo mode
|
|
468
|
-
- **[Compliance](https://haitmg.pl/cloud-audit/compliance/overview/)** - CIS AWS v3.0
|
|
469
|
-
- **[Attack Chains](https://haitmg.pl/cloud-audit/features/attack-chains/)** - all
|
|
374
|
+
- **[Compliance](https://haitmg.pl/cloud-audit/compliance/overview/)** - 6 frameworks: CIS AWS v3.0, SOC 2, BSI C5, ISO 27001, HIPAA, NIS2
|
|
375
|
+
- **[Attack Chains](https://haitmg.pl/cloud-audit/features/attack-chains/)** - all 31 rules with MITRE ATT&CK references
|
|
470
376
|
- **[MCP Server](https://haitmg.pl/cloud-audit/features/mcp-server/)** - full setup guide for Claude Code, Cursor, VS Code
|
|
471
377
|
- **[Configuration](https://haitmg.pl/cloud-audit/configuration/config-file/)** - config file, env vars, suppressions
|
|
472
378
|
- **[CI/CD](https://haitmg.pl/cloud-audit/ci-cd/github-actions/)** - GitHub Actions, SARIF, pre-commit hooks
|
|
473
379
|
- **[Reports](https://haitmg.pl/cloud-audit/reports/html/)** - HTML, JSON, SARIF, Markdown output formats
|
|
474
|
-
- **[All
|
|
380
|
+
- **[All 94 Checks](https://haitmg.pl/cloud-audit/checks/)** - full check reference by service
|
|
475
381
|
|
|
476
382
|
This README covers the essentials. For compliance framework details, advanced configuration, and per-check documentation, see the full docs.
|
|
477
383
|
|
|
478
384
|
## What's Next
|
|
479
385
|
|
|
480
|
-
-
|
|
386
|
+
- Multi-account scanning (AWS Organizations)
|
|
481
387
|
- Terraform drift detection
|
|
482
|
-
-
|
|
388
|
+
- Data perimeter checks (S3, KMS, STS boundary policies)
|
|
483
389
|
|
|
484
390
|
Past releases: [CHANGELOG.md](CHANGELOG.md)
|
|
485
391
|
|