cloud-audit 2.0.1__tar.gz → 2.2.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-2.0.1 → cloud_audit-2.2.0}/.github/workflows/docs.yml +1 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.gitignore +1 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/CHANGELOG.md +106 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/PKG-INFO +40 -15
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/README.md +38 -13
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/mkdocs.yml +2 -0
- cloud_audit-2.2.0/overrides/main.html +139 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/pyproject.toml +9 -2
- cloud_audit-2.2.0/server.json +34 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/cli.py +139 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/models.py +12 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/iam.py +57 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/iam_analyzer.py +255 -1
- cloud_audit-2.2.0/src/cloud_audit/providers/aws/iam_trust_graph.py +524 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/provider.py +2 -0
- cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/__init__.py +105 -0
- cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/cloudtrail_tampering.py +195 -0
- cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/cryptomining_role.py +193 -0
- cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/datazone_overgrant.py +173 -0
- cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/lambda_function_url.py +238 -0
- cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/mmdsv1_in_use.py +258 -0
- cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/quarantine_policy.py +191 -0
- cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/roles_anywhere_abuse.py +166 -0
- cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/ses_phishing.py +225 -0
- cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/trufflehog_ua.py +202 -0
- cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/whoami_confusion.py +230 -0
- cloud_audit-2.2.0/tests/aws/test_iam_analyzer.py +955 -0
- cloud_audit-2.2.0/tests/aws/test_iam_trust_graph.py +881 -0
- cloud_audit-2.2.0/tests/aws/threat_feed/__init__.py +0 -0
- cloud_audit-2.2.0/tests/aws/threat_feed/test_cloudtrail_tampering.py +159 -0
- cloud_audit-2.2.0/tests/aws/threat_feed/test_cryptomining_role.py +169 -0
- cloud_audit-2.2.0/tests/aws/threat_feed/test_datazone_overgrant.py +178 -0
- cloud_audit-2.2.0/tests/aws/threat_feed/test_lambda_function_url.py +275 -0
- cloud_audit-2.2.0/tests/aws/threat_feed/test_mmdsv1_in_use.py +199 -0
- cloud_audit-2.2.0/tests/aws/threat_feed/test_quarantine_policy.py +287 -0
- cloud_audit-2.2.0/tests/aws/threat_feed/test_roles_anywhere_abuse.py +140 -0
- cloud_audit-2.2.0/tests/aws/threat_feed/test_ses_phishing.py +187 -0
- cloud_audit-2.2.0/tests/aws/threat_feed/test_trufflehog_ua.py +138 -0
- cloud_audit-2.2.0/tests/aws/threat_feed/test_whoami_confusion.py +181 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_html.py +28 -0
- cloud_audit-2.0.1/tests/aws/test_iam_analyzer.py +0 -349
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.cloud-audit.example.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/FUNDING.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/dependabot.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/workflows/ci.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/workflows/example-scan.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/workflows/release.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.mcp.json +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.pre-commit-hooks.yaml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/CODEOWNERS +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/CODE_OF_CONDUCT.md +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/CONTRIBUTING.md +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/Dockerfile +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/LICENSE +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/Makefile +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/ROADMAP.md +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/SECURITY.md +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/action.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/assets/demo.gif +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/assets/logo-nobg.png +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/assets/logo.png +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/assets/report-preview.png +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/assets/social-preview.png +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/examples/daily-scan-with-diff.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/examples/github-actions.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/examples/post-deploy-scan.yml +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/scripts/generate_demo_gif.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/scripts/generate_report_screenshot.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/__init__.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/__main__.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/__init__.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/engine.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/frameworks/bsi_c5_2020.json +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/frameworks/cis_aws_v3.json +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/frameworks/hipaa_security.json +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/frameworks/iso27001_2022.json +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/frameworks/nis2_directive.json +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/frameworks/soc2_type2.json +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/config.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/correlate.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/cost_model.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/diff.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/history.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/mcp_server.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/__init__.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/__init__.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/__init__.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/account.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/backup.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/bedrock.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/cloudtrail.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/cloudwatch.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/config_.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/ec2.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/ecs.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/efs.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/eip.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/guardduty.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/inspector.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/kms.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/lambda_.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/rds.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/s3.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/sagemaker.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/secrets.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/securityhub.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/ssm.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/vpc.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/waf.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/base.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/py.typed +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/__init__.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/compliance_html.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/compliance_markdown.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/diff_markdown.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/html.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/markdown.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/sarif.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/templates/report.html.j2 +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/root_cause.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/scanner.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/simulate.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/__init__.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/__init__.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_bedrock.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_cis_checks.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_cloudtrail.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_cloudwatch.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_config.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_ec2.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_ecs.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_eip.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_guardduty.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_iam.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_kms.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_lambda.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_rds.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_s3.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_sagemaker.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_secrets.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_ssm.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_vpc.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/conftest.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_cli.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_cli_scan.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_compliance_frameworks.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_config.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_correlate.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_cost_model.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_diff.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_history.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_markdown.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_mcp_server.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_models.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_provider.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_root_cause.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_sarif.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_scanner.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_simulate.py +0 -0
- {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_soc2_framework.py +0 -0
|
@@ -7,6 +7,112 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.2.0] - 2026-05-12
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Threat Feed v1** — new `cloud-audit threat-feed` command and a dedicated
|
|
15
|
+
detector pipeline (`providers/aws/threat_feed/`) that flags ACTIVE abuse
|
|
16
|
+
indicators rather than misconfiguration. Each pattern has a versioned
|
|
17
|
+
`TF-XXX` ID, maps to the new `Category.THREAT`, and carries external
|
|
18
|
+
references (research reports, CVE links) on every Finding for credibility.
|
|
19
|
+
Rules pack version: **2026-Q2**.
|
|
20
|
+
|
|
21
|
+
Ten patterns shipped:
|
|
22
|
+
|
|
23
|
+
- `TF-001-ses-phishing-setup` (MEDIUM/HIGH) — SES email/domain identities
|
|
24
|
+
verified within the last 14 days, with severity escalating when an
|
|
25
|
+
out-of-sandbox account hosts a typosquat-style email identity that has
|
|
26
|
+
no matching domain identity. Tracks the Wiz May 2025 + BleepingComputer
|
|
27
|
+
May 2026 SES abuse campaigns.
|
|
28
|
+
- `TF-002-lambda-function-url-persistence` (HIGH/CRITICAL) — Lambda
|
|
29
|
+
functions exposed via `AuthType=NONE` Function URLs, escalating to
|
|
30
|
+
CRITICAL when the execution role grants admin-class permissions
|
|
31
|
+
(matching the role profile of the Nov-Dec 2025 cryptomining campaign).
|
|
32
|
+
- `TF-003-quarantine-policy` (CRITICAL) — IAM principals with
|
|
33
|
+
`AWSCompromisedKeyQuarantineV1/V2/V3` attached. AWS auto-attaches these
|
|
34
|
+
after detecting credential exposure (typically a public GitHub commit).
|
|
35
|
+
- `TF-004-trufflehog-ua-cloudtrail` (CRITICAL) — `sts:GetCallerIdentity`
|
|
36
|
+
calls in the last 24h whose user-agent matches known leaked-credentials
|
|
37
|
+
discovery scanners (TruffleHog, gitleaks, CloudGrappler, DetentionDodger,
|
|
38
|
+
NoseyParker). Confirmed credential validation by an external scanner.
|
|
39
|
+
- `TF-005-cryptomining-role` (HIGH/CRITICAL) — IAM roles created within
|
|
40
|
+
the last 48 hours that carry broad compute managed policies (EC2 Full,
|
|
41
|
+
PowerUser, Admin, ECS Full, Lambda Full). Escalates to CRITICAL when
|
|
42
|
+
the same role also has SES sending permissions (mining + email-spam
|
|
43
|
+
combo from the documented late-2025 campaign cluster).
|
|
44
|
+
- `TF-006-mmdsv1-in-use` (HIGH/CRITICAL) — EC2 instances where
|
|
45
|
+
`HttpTokens != required` (IMDSv1 still callable) and Bedrock AgentCore
|
|
46
|
+
agents on `metadataVersion=v1` (CRITICAL — addresses Unit 42 'Cracks in
|
|
47
|
+
the Bedrock' research and the Feb 2026 MMDSv2 default).
|
|
48
|
+
- `TF-007-whoami-confusion` (MEDIUM) — IAM roles trusted by CI/CD
|
|
49
|
+
identities (codebuild service principals, GitHub OIDC, GitLab OIDC,
|
|
50
|
+
Buildkite federation) that have a broad EC2 managed policy attached —
|
|
51
|
+
the precondition for the Datadog Feb 2025 whoAMI confusion attack.
|
|
52
|
+
- `TF-008-cloudtrail-tampering` (HIGH/CRITICAL) — CloudTrail trails with
|
|
53
|
+
`IsLogging=False` (CRITICAL — canonical post-credential-theft attacker
|
|
54
|
+
behaviour, AiTM phishing follow-on per Datadog March 2026) or with a
|
|
55
|
+
populated `LatestDeliveryError` (HIGH — S3 destination broken).
|
|
56
|
+
- `TF-009-roles-anywhere-abuse` (HIGH/MEDIUM) — IAM Roles Anywhere trust
|
|
57
|
+
anchors with `sourceType=CERTIFICATE_BUNDLE` instead of the recommended
|
|
58
|
+
AWS_ACM_PCA. Anyone able to issue a chain-valid cert can mint AWS
|
|
59
|
+
credentials (fwd:cloudsec 2025 'Let's Encrypt for AWS Console').
|
|
60
|
+
- `TF-010-datazone-overgrant` (HIGH) — `AmazonDataZoneFullAccess` attached
|
|
61
|
+
to non-admin principals (the "easy" onboarding policy that bridges
|
|
62
|
+
identity, Glue catalog, and S3 storage in a single grant).
|
|
63
|
+
|
|
64
|
+
CLI: `cloud-audit threat-feed [--list] [--pattern <id>] [--regions ...]
|
|
65
|
+
[--profile ...] [--threat-feed-version 2026-Q2]`. Exits 1 when CRITICAL
|
|
66
|
+
or HIGH detected (CI gate friendly). Patterns also surface in standard
|
|
67
|
+
`cloud-audit scan --categories threat` output (JSON, SARIF, HTML).
|
|
68
|
+
|
|
69
|
+
### Changed
|
|
70
|
+
|
|
71
|
+
- `Category` enum gains `THREAT` value for active-abuse findings (separate
|
|
72
|
+
from `SECURITY` misconfiguration).
|
|
73
|
+
- `Finding` model gains `threat_pattern_id: str | None` and
|
|
74
|
+
`references: list[str]` for backing research links.
|
|
75
|
+
- 23rd registered AWS check module (`threat_feed`) loaded by `AWSProvider`.
|
|
76
|
+
|
|
77
|
+
### Tests
|
|
78
|
+
|
|
79
|
+
- 638 -> 742 (+104). Each pattern ships 9-12 unit tests covering positive
|
|
80
|
+
detection, negative cases, false-positive guards, severity escalation,
|
|
81
|
+
multi-resource aggregation, AccessDenied resilience, and metadata
|
|
82
|
+
exposure.
|
|
83
|
+
|
|
84
|
+
## [2.1.0] - 2026-04-28
|
|
85
|
+
|
|
86
|
+
### Added
|
|
87
|
+
|
|
88
|
+
- **IAM Privilege Escalation - Tier 1 + Tier 2 + Tier 3**: 39 new detection methods, total 64 across 9 categories (was 25/6). Coverage of all known IAM privilege escalation paths in pathfinding.cloud.
|
|
89
|
+
|
|
90
|
+
Tier 1 (20 methods - PassRole variants + resource policy abuse + deny removal):
|
|
91
|
+
- PassRole + Glue variants: `glue:CreateJob`, `glue:UpdateJob`, `glue:CreateSession`
|
|
92
|
+
- PassRole + ECS variants: `ecs:UpdateService`, `ecs:RegisterTaskDefinition` (auto-deploy)
|
|
93
|
+
- PassRole + CloudFormation: `cloudformation:UpdateStack`
|
|
94
|
+
- PassRole + EC2 instance profile hijack: `ec2:AssociateIamInstanceProfile`, `ec2:ReplaceIamInstanceProfileAssociation`
|
|
95
|
+
- PassRole + Lambda event source mapping
|
|
96
|
+
- Instance profile role swap (no PassRole): `iam:RemoveRoleFromInstanceProfile` + `iam:AddRoleToInstanceProfile`
|
|
97
|
+
- **NEW Resource Policy Abuse category**: `lambda:AddPermission`, `lambda:AddLayerVersionPermission`
|
|
98
|
+
- IAM deny-removal patterns: `iam:DeleteRolePolicy`, `iam:DeleteUserPolicy`, `iam:DetachRolePolicy`, `iam:DetachUserPolicy`, `iam:CreateServiceLinkedRole`
|
|
99
|
+
- Credential access extensions: `iam:UpdateAccessKey`, `iam:DeactivateMFADevice`, `iam:DeleteVirtualMFADevice` (MFA bypass paths)
|
|
100
|
+
|
|
101
|
+
Tier 2 (12 methods - new compute primitives + SSM):
|
|
102
|
+
- PassRole + new services: `codebuild:CreateProject`, `apprunner:CreateService`, `sagemaker:CreateNotebookInstance`, `sagemaker:CreateProcessingJob`, `bedrock:CreateAgent`, `states:CreateStateMachine`
|
|
103
|
+
- **NEW Compute Hijack category**: `ssm:SendCommand`, `ssm:StartSession` (managed EC2 abuse), `ec2-instance-connect:SendSSHPublicKey` (60s SSH key push), `codebuild:UpdateProject` (hijack existing CI build), `apprunner:UpdateService` (replace running container)
|
|
104
|
+
- Credential access extension: `ssm:GetParameter` (read secrets from Parameter Store)
|
|
105
|
+
|
|
106
|
+
Tier 3 (4 methods - lateral movement via AssumeRole graph - NEW pipeline):
|
|
107
|
+
- **NEW Lateral AssumeRole category** with new module `iam_trust_graph.py` parsing `AssumeRolePolicyDocument` and building a directed graph
|
|
108
|
+
- `AssumeRole:Direct` - 1-hop assume from a principal to a role with admin permissions
|
|
109
|
+
- `AssumeRole:Chain` - multi-hop assume chain (up to 4 hops) ending at admin
|
|
110
|
+
- `AssumeRole:WildcardTrust` - any role with `Principal: "*"` trust policy
|
|
111
|
+
- `AssumeRole:CrossAccountRoot` - any role trusting external account `:root`
|
|
112
|
+
- Same-account root expansion: roles trusting `arn:aws:iam::SAME:root` are reachable by any principal in account with `sts:AssumeRole`
|
|
113
|
+
- Bare 12-digit account IDs are normalized to `:root` ARNs
|
|
114
|
+
- Trust conditions (MFA / ExternalId / SourceArn) are flagged but not semantically evaluated
|
|
115
|
+
|
|
10
116
|
## [2.0.1] - 2026-04-17
|
|
11
117
|
|
|
12
118
|
### Changed
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cloud-audit
|
|
3
|
-
Version: 2.0
|
|
4
|
-
Summary: Open-source AWS security scanner
|
|
3
|
+
Version: 2.2.0
|
|
4
|
+
Summary: Open-source AWS security scanner. Threat Feed v1 (10 active-abuse patterns from 2025-2026 incidents), 64 IAM escalation methods, What-If simulator, security trends, AI-SPM (Bedrock/SageMaker), 6 compliance frameworks, 31 attack chain rules, breach cost estimation, and MCP server. Every finding includes CLI + Terraform remediation.
|
|
5
5
|
Project-URL: Homepage, https://haitmg.pl/cloud-audit/
|
|
6
6
|
Project-URL: Documentation, https://haitmg.pl/cloud-audit/
|
|
7
7
|
Project-URL: Source, https://github.com/gebalamariusz/cloud-audit
|
|
@@ -83,6 +83,7 @@ Description-Content-Type: text/markdown
|
|
|
83
83
|
<a href="https://haitmg.pl/cloud-audit/compliance/overview/">Compliance</a> -
|
|
84
84
|
<a href="https://haitmg.pl/cloud-audit/features/attack-chains/">Attack Chains</a> -
|
|
85
85
|
<a href="https://haitmg.pl/cloud-audit/features/iam-escalation/">IAM Escalation</a> -
|
|
86
|
+
<a href="https://haitmg.pl/cloud-audit/features/threat-feed/">Threat Feed</a> -
|
|
86
87
|
<a href="https://haitmg.pl/cloud-audit/features/simulate/">Simulator</a> -
|
|
87
88
|
<a href="https://haitmg.pl/cloud-audit/features/mcp-server/">MCP Server</a>
|
|
88
89
|
</p>
|
|
@@ -100,6 +101,21 @@ Uses your default AWS credentials and region. Try without an AWS account:
|
|
|
100
101
|
cloud-audit demo
|
|
101
102
|
```
|
|
102
103
|
|
|
104
|
+
### NEW in v2.2: Threat Feed
|
|
105
|
+
|
|
106
|
+
Detect ACTIVE abuse patterns from 2025-2026 incidents (cryptomining campaigns,
|
|
107
|
+
SES phishing setup, leaked-credential scanner activity, AgentCore CVEs):
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
cloud-audit threat-feed # scan all 10 patterns
|
|
111
|
+
cloud-audit threat-feed --list # show registered patterns
|
|
112
|
+
cloud-audit threat-feed --pattern aws-tf-003 # one pattern only
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Each pattern carries external research references (Wiz, Datadog Security Labs,
|
|
116
|
+
Unit 42, Permiso) on every finding. Exit code 1 when CRITICAL/HIGH detected
|
|
117
|
+
(CI gate friendly). See [Threat Feed docs](https://haitmg.pl/cloud-audit/features/threat-feed/).
|
|
118
|
+
|
|
103
119
|
---
|
|
104
120
|
|
|
105
121
|
## Why It's Different
|
|
@@ -150,7 +166,7 @@ cloud-audit simulate --fix aws-vpc-002
|
|
|
150
166
|
|
|
151
167
|
| Feature | What it does |
|
|
152
168
|
|---|---|
|
|
153
|
-
| **IAM Privilege Escalation** |
|
|
169
|
+
| **IAM Privilege Escalation** | 61 escalation methods across 9 categories, including lateral movement detection via AssumeRole graph traversal. PMapper has been dead since 2022 -- this is its open-source replacement, and it covers paths PMapper never did. |
|
|
154
170
|
| **What-If Simulator** | `cloud-audit simulate --fix aws-vpc-002` shows score change, chains broken, and risk reduction before you apply anything. |
|
|
155
171
|
| **Root Cause Grouping** | "Fix 4 things, break 22 chains." Groups findings by shared root cause and ranks by impact. |
|
|
156
172
|
| **Security Posture Trend** | `cloud-audit trend` tracks health score, chains, and risk over time with sparkline visualization. |
|
|
@@ -228,19 +244,28 @@ claude mcp add cloud-audit -- uvx --from cloud-audit cloud-audit-mcp
|
|
|
228
244
|
|
|
229
245
|
## How It Compares
|
|
230
246
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
|
236
|
-
|
|
237
|
-
|
|
|
238
|
-
|
|
|
239
|
-
|
|
|
247
|
+
[Prowler](https://github.com/prowler-cloud/prowler) is the AWS security standard: 572 checks across 83 services, 41 compliance frameworks (CIS, PCI-DSS, HIPAA, SOC2, NIST 800, ISO 27001, GDPR, FedRAMP, NIS2, MITRE ATT&CK and more), 55 auto-remediation fixers, and graph-based attack path analysis in the Prowler App (Cartography + Neo4j). It also covers Azure, GCP, Kubernetes, M365, and 10+ other providers.
|
|
248
|
+
|
|
249
|
+
cloud-audit is AWS-only and intentionally narrower (94 curated checks). It goes deep where Prowler goes wide: attack chain correlation and IAM escalation detection run in the free CLI with zero infrastructure, every finding ships with reviewable Terraform + AWS CLI remediation, and scan diff / drift tracking is built into the CLI.
|
|
250
|
+
|
|
251
|
+
| Feature | Prowler | cloud-audit |
|
|
252
|
+
|---------|---------|-------------|
|
|
253
|
+
| AWS checks | 572 across 83 services | 94 across 23 services |
|
|
254
|
+
| Compliance frameworks (AWS) | 41 (CIS, PCI-DSS, HIPAA, SOC2, NIST, ISO 27001, GDPR, FedRAMP, NIS2, ...) | 6 (CIS v3.0, SOC 2, BSI C5, ISO 27001, HIPAA, NIS2) |
|
|
255
|
+
| Auto-remediation | 55 fixers across 17 AWS services (direct API calls) | 94/94 findings with CLI + Terraform output (reviewable, you apply) |
|
|
256
|
+
| Attack path / graph analysis | Prowler App (Cartography + graph queries) | CLI-native (31 rules, no infra) |
|
|
257
|
+
| IAM privilege escalation graph | Prowler App | CLI-native (61 methods + AssumeRole graph) |
|
|
258
|
+
| What-If remediation simulator | No | Yes |
|
|
259
|
+
| AI/ML security checks (Bedrock + SageMaker) | ~20 checks | 5 checks + 3 attack chain rules |
|
|
260
|
+
| Scan diff / drift tracking | Prowler App | Built-in CLI (`cloud-audit diff`) |
|
|
261
|
+
| Breach cost estimates (USD) | No | Per-finding + per-chain |
|
|
262
|
+
| MCP Server | Free | Free |
|
|
263
|
+
| Multi-cloud | AWS + 13 others | AWS only |
|
|
264
|
+
| License | Apache 2.0 | MIT |
|
|
240
265
|
|
|
241
|
-
|
|
266
|
+
Use Prowler for compliance breadth, multi-cloud coverage, and graph-based attack path analysis. Use cloud-audit for fast CLI-native attack chain detection, reviewable Terraform remediation, and CI/CD drift tracking. They are complementary, not competitors - a common setup is Prowler for quarterly compliance evidence plus cloud-audit daily in CI/CD.
|
|
242
267
|
|
|
243
|
-
<sub>
|
|
268
|
+
<sub>Prowler stats verified from github.com/prowler-cloud/prowler (April 2026). cloud-audit snapshot as of v2.0.1.</sub>
|
|
244
269
|
|
|
245
270
|
---
|
|
246
271
|
|
|
@@ -361,7 +386,7 @@ Full docs at **[haitmg.pl/cloud-audit](https://haitmg.pl/cloud-audit/)**:
|
|
|
361
386
|
|
|
362
387
|
- **[Getting Started](https://haitmg.pl/cloud-audit/getting-started/installation/)** - installation, quick start, demo mode
|
|
363
388
|
- **[Attack Chains](https://haitmg.pl/cloud-audit/features/attack-chains/)** - all 31 rules with MITRE ATT&CK references
|
|
364
|
-
- **[IAM Escalation](https://haitmg.pl/cloud-audit/features/iam-escalation/)** -
|
|
389
|
+
- **[IAM Escalation](https://haitmg.pl/cloud-audit/features/iam-escalation/)** - 61 methods, 9 categories (action-based + lateral AssumeRole graph)
|
|
365
390
|
- **[What-If Simulator](https://haitmg.pl/cloud-audit/features/simulate/)** - simulate remediation impact
|
|
366
391
|
- **[Compliance](https://haitmg.pl/cloud-audit/compliance/overview/)** - 6 frameworks: CIS, SOC 2, BSI C5, ISO 27001, HIPAA, NIS2
|
|
367
392
|
- **[All 94 Checks](https://haitmg.pl/cloud-audit/checks/)** - full check reference by service
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
<a href="https://haitmg.pl/cloud-audit/compliance/overview/">Compliance</a> -
|
|
37
37
|
<a href="https://haitmg.pl/cloud-audit/features/attack-chains/">Attack Chains</a> -
|
|
38
38
|
<a href="https://haitmg.pl/cloud-audit/features/iam-escalation/">IAM Escalation</a> -
|
|
39
|
+
<a href="https://haitmg.pl/cloud-audit/features/threat-feed/">Threat Feed</a> -
|
|
39
40
|
<a href="https://haitmg.pl/cloud-audit/features/simulate/">Simulator</a> -
|
|
40
41
|
<a href="https://haitmg.pl/cloud-audit/features/mcp-server/">MCP Server</a>
|
|
41
42
|
</p>
|
|
@@ -53,6 +54,21 @@ Uses your default AWS credentials and region. Try without an AWS account:
|
|
|
53
54
|
cloud-audit demo
|
|
54
55
|
```
|
|
55
56
|
|
|
57
|
+
### NEW in v2.2: Threat Feed
|
|
58
|
+
|
|
59
|
+
Detect ACTIVE abuse patterns from 2025-2026 incidents (cryptomining campaigns,
|
|
60
|
+
SES phishing setup, leaked-credential scanner activity, AgentCore CVEs):
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
cloud-audit threat-feed # scan all 10 patterns
|
|
64
|
+
cloud-audit threat-feed --list # show registered patterns
|
|
65
|
+
cloud-audit threat-feed --pattern aws-tf-003 # one pattern only
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Each pattern carries external research references (Wiz, Datadog Security Labs,
|
|
69
|
+
Unit 42, Permiso) on every finding. Exit code 1 when CRITICAL/HIGH detected
|
|
70
|
+
(CI gate friendly). See [Threat Feed docs](https://haitmg.pl/cloud-audit/features/threat-feed/).
|
|
71
|
+
|
|
56
72
|
---
|
|
57
73
|
|
|
58
74
|
## Why It's Different
|
|
@@ -103,7 +119,7 @@ cloud-audit simulate --fix aws-vpc-002
|
|
|
103
119
|
|
|
104
120
|
| Feature | What it does |
|
|
105
121
|
|---|---|
|
|
106
|
-
| **IAM Privilege Escalation** |
|
|
122
|
+
| **IAM Privilege Escalation** | 61 escalation methods across 9 categories, including lateral movement detection via AssumeRole graph traversal. PMapper has been dead since 2022 -- this is its open-source replacement, and it covers paths PMapper never did. |
|
|
107
123
|
| **What-If Simulator** | `cloud-audit simulate --fix aws-vpc-002` shows score change, chains broken, and risk reduction before you apply anything. |
|
|
108
124
|
| **Root Cause Grouping** | "Fix 4 things, break 22 chains." Groups findings by shared root cause and ranks by impact. |
|
|
109
125
|
| **Security Posture Trend** | `cloud-audit trend` tracks health score, chains, and risk over time with sparkline visualization. |
|
|
@@ -181,19 +197,28 @@ claude mcp add cloud-audit -- uvx --from cloud-audit cloud-audit-mcp
|
|
|
181
197
|
|
|
182
198
|
## How It Compares
|
|
183
199
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
|
189
|
-
|
|
190
|
-
|
|
|
191
|
-
|
|
|
192
|
-
|
|
|
200
|
+
[Prowler](https://github.com/prowler-cloud/prowler) is the AWS security standard: 572 checks across 83 services, 41 compliance frameworks (CIS, PCI-DSS, HIPAA, SOC2, NIST 800, ISO 27001, GDPR, FedRAMP, NIS2, MITRE ATT&CK and more), 55 auto-remediation fixers, and graph-based attack path analysis in the Prowler App (Cartography + Neo4j). It also covers Azure, GCP, Kubernetes, M365, and 10+ other providers.
|
|
201
|
+
|
|
202
|
+
cloud-audit is AWS-only and intentionally narrower (94 curated checks). It goes deep where Prowler goes wide: attack chain correlation and IAM escalation detection run in the free CLI with zero infrastructure, every finding ships with reviewable Terraform + AWS CLI remediation, and scan diff / drift tracking is built into the CLI.
|
|
203
|
+
|
|
204
|
+
| Feature | Prowler | cloud-audit |
|
|
205
|
+
|---------|---------|-------------|
|
|
206
|
+
| AWS checks | 572 across 83 services | 94 across 23 services |
|
|
207
|
+
| Compliance frameworks (AWS) | 41 (CIS, PCI-DSS, HIPAA, SOC2, NIST, ISO 27001, GDPR, FedRAMP, NIS2, ...) | 6 (CIS v3.0, SOC 2, BSI C5, ISO 27001, HIPAA, NIS2) |
|
|
208
|
+
| Auto-remediation | 55 fixers across 17 AWS services (direct API calls) | 94/94 findings with CLI + Terraform output (reviewable, you apply) |
|
|
209
|
+
| Attack path / graph analysis | Prowler App (Cartography + graph queries) | CLI-native (31 rules, no infra) |
|
|
210
|
+
| IAM privilege escalation graph | Prowler App | CLI-native (61 methods + AssumeRole graph) |
|
|
211
|
+
| What-If remediation simulator | No | Yes |
|
|
212
|
+
| AI/ML security checks (Bedrock + SageMaker) | ~20 checks | 5 checks + 3 attack chain rules |
|
|
213
|
+
| Scan diff / drift tracking | Prowler App | Built-in CLI (`cloud-audit diff`) |
|
|
214
|
+
| Breach cost estimates (USD) | No | Per-finding + per-chain |
|
|
215
|
+
| MCP Server | Free | Free |
|
|
216
|
+
| Multi-cloud | AWS + 13 others | AWS only |
|
|
217
|
+
| License | Apache 2.0 | MIT |
|
|
193
218
|
|
|
194
|
-
|
|
219
|
+
Use Prowler for compliance breadth, multi-cloud coverage, and graph-based attack path analysis. Use cloud-audit for fast CLI-native attack chain detection, reviewable Terraform remediation, and CI/CD drift tracking. They are complementary, not competitors - a common setup is Prowler for quarterly compliance evidence plus cloud-audit daily in CI/CD.
|
|
195
220
|
|
|
196
|
-
<sub>
|
|
221
|
+
<sub>Prowler stats verified from github.com/prowler-cloud/prowler (April 2026). cloud-audit snapshot as of v2.0.1.</sub>
|
|
197
222
|
|
|
198
223
|
---
|
|
199
224
|
|
|
@@ -314,7 +339,7 @@ Full docs at **[haitmg.pl/cloud-audit](https://haitmg.pl/cloud-audit/)**:
|
|
|
314
339
|
|
|
315
340
|
- **[Getting Started](https://haitmg.pl/cloud-audit/getting-started/installation/)** - installation, quick start, demo mode
|
|
316
341
|
- **[Attack Chains](https://haitmg.pl/cloud-audit/features/attack-chains/)** - all 31 rules with MITRE ATT&CK references
|
|
317
|
-
- **[IAM Escalation](https://haitmg.pl/cloud-audit/features/iam-escalation/)** -
|
|
342
|
+
- **[IAM Escalation](https://haitmg.pl/cloud-audit/features/iam-escalation/)** - 61 methods, 9 categories (action-based + lateral AssumeRole graph)
|
|
318
343
|
- **[What-If Simulator](https://haitmg.pl/cloud-audit/features/simulate/)** - simulate remediation impact
|
|
319
344
|
- **[Compliance](https://haitmg.pl/cloud-audit/compliance/overview/)** - 6 frameworks: CIS, SOC 2, BSI C5, ISO 27001, HIPAA, NIS2
|
|
320
345
|
- **[All 94 Checks](https://haitmg.pl/cloud-audit/checks/)** - full check reference by service
|
|
@@ -6,6 +6,7 @@ repo_name: gebalamariusz/cloud-audit
|
|
|
6
6
|
|
|
7
7
|
theme:
|
|
8
8
|
name: material
|
|
9
|
+
custom_dir: overrides
|
|
9
10
|
palette:
|
|
10
11
|
- scheme: slate
|
|
11
12
|
primary: deep purple
|
|
@@ -59,6 +60,7 @@ nav:
|
|
|
59
60
|
- Features:
|
|
60
61
|
- Attack Chains: features/attack-chains.md
|
|
61
62
|
- IAM Privilege Escalation: features/iam-escalation.md
|
|
63
|
+
- Threat Feed: features/threat-feed.md
|
|
62
64
|
- What-If Simulator: features/simulate.md
|
|
63
65
|
- Security Posture Trend: features/trend.md
|
|
64
66
|
- AI-SPM (Bedrock/SageMaker): features/ai-spm.md
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
{% extends "base.html" %}
|
|
2
|
+
|
|
3
|
+
{#
|
|
4
|
+
JSON-LD structured data for the cloud-audit documentation site.
|
|
5
|
+
Rendered only on the site homepage (docs/index.md).
|
|
6
|
+
|
|
7
|
+
Updating: when cloud-audit version bumps, change the "softwareVersion"
|
|
8
|
+
value below. Keep featureList in sync with docs/index.md.
|
|
9
|
+
#}
|
|
10
|
+
|
|
11
|
+
{% block extrahead %}
|
|
12
|
+
{{ super() }}
|
|
13
|
+
{% if page.is_homepage %}
|
|
14
|
+
<script type="application/ld+json">
|
|
15
|
+
{
|
|
16
|
+
"@context": "https://schema.org",
|
|
17
|
+
"@graph": [
|
|
18
|
+
{
|
|
19
|
+
"@type": "SoftwareApplication",
|
|
20
|
+
"@id": "https://haitmg.pl/cloud-audit/#software",
|
|
21
|
+
"name": "cloud-audit",
|
|
22
|
+
"alternateName": "cloud-audit CLI",
|
|
23
|
+
"applicationCategory": "SecurityApplication",
|
|
24
|
+
"operatingSystem": "Linux, macOS, Windows",
|
|
25
|
+
"softwareVersion": "2.0.1",
|
|
26
|
+
"url": "https://haitmg.pl/cloud-audit/",
|
|
27
|
+
"downloadUrl": "https://pypi.org/project/cloud-audit/",
|
|
28
|
+
"softwareHelp": "https://haitmg.pl/cloud-audit/getting-started/installation/",
|
|
29
|
+
"license": "https://opensource.org/licenses/MIT",
|
|
30
|
+
"programmingLanguage": "Python",
|
|
31
|
+
"description": "Open-source AWS security scanner with attack chain detection, IAM privilege escalation analysis, and copy-paste CLI + Terraform remediation for every finding. 94 curated checks across 23 AWS services.",
|
|
32
|
+
"offers": {
|
|
33
|
+
"@type": "Offer",
|
|
34
|
+
"price": "0",
|
|
35
|
+
"priceCurrency": "USD",
|
|
36
|
+
"availability": "https://schema.org/InStock"
|
|
37
|
+
},
|
|
38
|
+
"author": { "@id": "https://haitmg.pl/#mariusz" },
|
|
39
|
+
"publisher": { "@id": "https://haitmg.pl/#org" },
|
|
40
|
+
"featureList": [
|
|
41
|
+
"94 curated AWS security checks across 23 services",
|
|
42
|
+
"31 attack chain rules correlating findings into exploit paths",
|
|
43
|
+
"25 IAM privilege escalation detection methods",
|
|
44
|
+
"What-If remediation simulator",
|
|
45
|
+
"Security posture trend tracking",
|
|
46
|
+
"AI-SPM support (Bedrock + SageMaker)",
|
|
47
|
+
"6 compliance frameworks: CIS AWS v3.0, SOC 2, BSI C5, ISO 27001, HIPAA, NIS2",
|
|
48
|
+
"Breach cost estimation based on published incident data",
|
|
49
|
+
"MCP Server for AI agents",
|
|
50
|
+
"Copy-paste AWS CLI and Terraform remediation for every finding",
|
|
51
|
+
"SARIF, HTML, Markdown, and JSON output formats",
|
|
52
|
+
"GitHub Actions and pre-commit hook integration"
|
|
53
|
+
],
|
|
54
|
+
"keywords": "AWS security scanner, attack chains, IAM privilege escalation, PMapper alternative, CIS AWS v3.0, cloud security, DevSecOps, Terraform remediation, SARIF, MCP server, breach cost estimation",
|
|
55
|
+
"subjectOf": {
|
|
56
|
+
"@type": "NewsArticle",
|
|
57
|
+
"headline": "Cloud-audit: Fast, open-source AWS security scanner",
|
|
58
|
+
"url": "https://www.helpnetsecurity.com/2026/03/11/cloud-audit-open-source-aws-security-scanner/",
|
|
59
|
+
"datePublished": "2026-03-11",
|
|
60
|
+
"publisher": {
|
|
61
|
+
"@type": "Organization",
|
|
62
|
+
"name": "Help Net Security",
|
|
63
|
+
"url": "https://www.helpnetsecurity.com/"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"sameAs": [
|
|
67
|
+
"https://github.com/gebalamariusz/cloud-audit",
|
|
68
|
+
"https://pypi.org/project/cloud-audit/",
|
|
69
|
+
"https://ghcr.io/gebalamariusz/cloud-audit",
|
|
70
|
+
"https://registry.modelcontextprotocol.io/v0/servers?search=cloud-audit",
|
|
71
|
+
"https://glama.ai/mcp/servers/gebalamariusz/cloud-audit"
|
|
72
|
+
],
|
|
73
|
+
"codeRepository": "https://github.com/gebalamariusz/cloud-audit",
|
|
74
|
+
"releaseNotes": "https://github.com/gebalamariusz/cloud-audit/blob/main/CHANGELOG.md"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"@type": "Organization",
|
|
78
|
+
"@id": "https://haitmg.pl/#org",
|
|
79
|
+
"name": "HAIT",
|
|
80
|
+
"legalName": "HAIT",
|
|
81
|
+
"url": "https://haitmg.pl",
|
|
82
|
+
"email": "kontakt@haitmg.pl",
|
|
83
|
+
"sameAs": [
|
|
84
|
+
"https://github.com/gebalamariusz",
|
|
85
|
+
"https://dev.to/haitmg"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"@type": "Person",
|
|
90
|
+
"@id": "https://haitmg.pl/#mariusz",
|
|
91
|
+
"name": "Mariusz Gebala",
|
|
92
|
+
"jobTitle": "Cloud and DevOps Engineer",
|
|
93
|
+
"url": "https://haitmg.pl/about/",
|
|
94
|
+
"sameAs": [
|
|
95
|
+
"https://github.com/gebalamariusz",
|
|
96
|
+
"https://dev.to/haitmg"
|
|
97
|
+
],
|
|
98
|
+
"worksFor": { "@id": "https://haitmg.pl/#org" },
|
|
99
|
+
"knowsAbout": [
|
|
100
|
+
"AWS",
|
|
101
|
+
"Palo Alto Networks",
|
|
102
|
+
"Terraform",
|
|
103
|
+
"Cloud Security",
|
|
104
|
+
"IAM Privilege Escalation",
|
|
105
|
+
"DevOps"
|
|
106
|
+
],
|
|
107
|
+
"hasCredential": [
|
|
108
|
+
{
|
|
109
|
+
"@type": "EducationalOccupationalCredential",
|
|
110
|
+
"name": "AWS Certified Solutions Architect - Associate",
|
|
111
|
+
"credentialCategory": "certification"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"@type": "EducationalOccupationalCredential",
|
|
115
|
+
"name": "Microsoft Certified: Azure Administrator Associate",
|
|
116
|
+
"credentialCategory": "certification"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"@type": "EducationalOccupationalCredential",
|
|
120
|
+
"name": "Palo Alto Networks PCNSA",
|
|
121
|
+
"credentialCategory": "certification"
|
|
122
|
+
}
|
|
123
|
+
]
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"@type": "WebSite",
|
|
127
|
+
"@id": "https://haitmg.pl/cloud-audit/#website",
|
|
128
|
+
"name": "cloud-audit documentation",
|
|
129
|
+
"url": "https://haitmg.pl/cloud-audit/",
|
|
130
|
+
"description": "Official documentation for the cloud-audit open-source AWS security scanner",
|
|
131
|
+
"publisher": { "@id": "https://haitmg.pl/#org" },
|
|
132
|
+
"about": { "@id": "https://haitmg.pl/cloud-audit/#software" },
|
|
133
|
+
"inLanguage": "en"
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
}
|
|
137
|
+
</script>
|
|
138
|
+
{% endif %}
|
|
139
|
+
{% endblock %}
|
|
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "cloud-audit"
|
|
7
|
-
version = "2.0
|
|
8
|
-
description = "Open-source AWS security scanner
|
|
7
|
+
version = "2.2.0"
|
|
8
|
+
description = "Open-source AWS security scanner. Threat Feed v1 (10 active-abuse patterns from 2025-2026 incidents), 64 IAM escalation methods, What-If simulator, security trends, AI-SPM (Bedrock/SageMaker), 6 compliance frameworks, 31 attack chain rules, breach cost estimation, and MCP server. Every finding includes CLI + Terraform remediation."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
11
11
|
requires-python = ">=3.10"
|
|
@@ -81,6 +81,13 @@ select = ["E", "F", "I", "N", "W", "UP", "S", "B", "A", "C4", "SIM", "TCH", "RUF
|
|
|
81
81
|
"src/cloud_audit/reports/compliance_markdown.py" = ["E501"]
|
|
82
82
|
"src/cloud_audit/cli.py" = ["TC003"]
|
|
83
83
|
"src/cloud_audit/mcp_server.py" = ["TC003"]
|
|
84
|
+
# Threat-feed modules and tests intentionally use boto3-style CamelCase
|
|
85
|
+
# kwargs (UserName, RoleName, FunctionName, EmailIdentity) to match the
|
|
86
|
+
# AWS API surface they wrap. N803 (lower_snake_case argument) is wrong here.
|
|
87
|
+
# Inner exception classes used to simulate boto3 errors don't need the
|
|
88
|
+
# Error suffix N818 mandates. Lambda/SES helpers also use Optional implicitly.
|
|
89
|
+
"src/cloud_audit/providers/aws/threat_feed/*.py" = ["N803", "N818", "RUF013", "E501", "S112"]
|
|
90
|
+
"tests/aws/threat_feed/*.py" = ["S101", "N803", "N806", "N818", "RUF013", "E501", "TC003", "E402"]
|
|
84
91
|
"tests/**" = ["S101", "TC003", "E402"]
|
|
85
92
|
|
|
86
93
|
[tool.mypy]
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
+
"name": "io.github.gebalamariusz/cloud-audit",
|
|
4
|
+
"title": "cloud-audit",
|
|
5
|
+
"description": "AWS security scanner with attack chain detection, IAM privilege escalation, and fixes",
|
|
6
|
+
"websiteUrl": "https://haitmg.pl/cloud-audit/",
|
|
7
|
+
"repository": {
|
|
8
|
+
"url": "https://github.com/gebalamariusz/cloud-audit",
|
|
9
|
+
"source": "github"
|
|
10
|
+
},
|
|
11
|
+
"version": "2.0.1",
|
|
12
|
+
"packages": [
|
|
13
|
+
{
|
|
14
|
+
"registryType": "pypi",
|
|
15
|
+
"identifier": "cloud-audit",
|
|
16
|
+
"version": "2.0.1",
|
|
17
|
+
"transport": {
|
|
18
|
+
"type": "stdio"
|
|
19
|
+
},
|
|
20
|
+
"runtimeHint": "uvx",
|
|
21
|
+
"runtimeArguments": [
|
|
22
|
+
{
|
|
23
|
+
"type": "named",
|
|
24
|
+
"name": "--from",
|
|
25
|
+
"value": "cloud-audit"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"type": "positional",
|
|
29
|
+
"value": "cloud-audit-mcp"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
]
|
|
34
|
+
}
|