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.
Files changed (163) hide show
  1. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/workflows/docs.yml +1 -0
  2. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.gitignore +1 -0
  3. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/CHANGELOG.md +106 -0
  4. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/PKG-INFO +40 -15
  5. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/README.md +38 -13
  6. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/mkdocs.yml +2 -0
  7. cloud_audit-2.2.0/overrides/main.html +139 -0
  8. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/pyproject.toml +9 -2
  9. cloud_audit-2.2.0/server.json +34 -0
  10. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/cli.py +139 -0
  11. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/models.py +12 -0
  12. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/iam.py +57 -0
  13. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/iam_analyzer.py +255 -1
  14. cloud_audit-2.2.0/src/cloud_audit/providers/aws/iam_trust_graph.py +524 -0
  15. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/provider.py +2 -0
  16. cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/__init__.py +105 -0
  17. cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/cloudtrail_tampering.py +195 -0
  18. cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/cryptomining_role.py +193 -0
  19. cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/datazone_overgrant.py +173 -0
  20. cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/lambda_function_url.py +238 -0
  21. cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/mmdsv1_in_use.py +258 -0
  22. cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/quarantine_policy.py +191 -0
  23. cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/roles_anywhere_abuse.py +166 -0
  24. cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/ses_phishing.py +225 -0
  25. cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/trufflehog_ua.py +202 -0
  26. cloud_audit-2.2.0/src/cloud_audit/providers/aws/threat_feed/whoami_confusion.py +230 -0
  27. cloud_audit-2.2.0/tests/aws/test_iam_analyzer.py +955 -0
  28. cloud_audit-2.2.0/tests/aws/test_iam_trust_graph.py +881 -0
  29. cloud_audit-2.2.0/tests/aws/threat_feed/__init__.py +0 -0
  30. cloud_audit-2.2.0/tests/aws/threat_feed/test_cloudtrail_tampering.py +159 -0
  31. cloud_audit-2.2.0/tests/aws/threat_feed/test_cryptomining_role.py +169 -0
  32. cloud_audit-2.2.0/tests/aws/threat_feed/test_datazone_overgrant.py +178 -0
  33. cloud_audit-2.2.0/tests/aws/threat_feed/test_lambda_function_url.py +275 -0
  34. cloud_audit-2.2.0/tests/aws/threat_feed/test_mmdsv1_in_use.py +199 -0
  35. cloud_audit-2.2.0/tests/aws/threat_feed/test_quarantine_policy.py +287 -0
  36. cloud_audit-2.2.0/tests/aws/threat_feed/test_roles_anywhere_abuse.py +140 -0
  37. cloud_audit-2.2.0/tests/aws/threat_feed/test_ses_phishing.py +187 -0
  38. cloud_audit-2.2.0/tests/aws/threat_feed/test_trufflehog_ua.py +138 -0
  39. cloud_audit-2.2.0/tests/aws/threat_feed/test_whoami_confusion.py +181 -0
  40. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_html.py +28 -0
  41. cloud_audit-2.0.1/tests/aws/test_iam_analyzer.py +0 -349
  42. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.cloud-audit.example.yml +0 -0
  43. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/FUNDING.yml +0 -0
  44. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  45. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  46. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  47. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/dependabot.yml +0 -0
  48. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/workflows/ci.yml +0 -0
  49. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/workflows/example-scan.yml +0 -0
  50. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.github/workflows/release.yml +0 -0
  51. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.mcp.json +0 -0
  52. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/.pre-commit-hooks.yaml +0 -0
  53. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/CODEOWNERS +0 -0
  54. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/CODE_OF_CONDUCT.md +0 -0
  55. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/CONTRIBUTING.md +0 -0
  56. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/Dockerfile +0 -0
  57. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/LICENSE +0 -0
  58. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/Makefile +0 -0
  59. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/ROADMAP.md +0 -0
  60. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/SECURITY.md +0 -0
  61. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/action.yml +0 -0
  62. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/assets/demo.gif +0 -0
  63. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/assets/logo-nobg.png +0 -0
  64. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/assets/logo.png +0 -0
  65. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/assets/report-preview.png +0 -0
  66. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/assets/social-preview.png +0 -0
  67. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/examples/daily-scan-with-diff.yml +0 -0
  68. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/examples/github-actions.yml +0 -0
  69. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/examples/post-deploy-scan.yml +0 -0
  70. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/scripts/generate_demo_gif.py +0 -0
  71. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/scripts/generate_report_screenshot.py +0 -0
  72. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/__init__.py +0 -0
  73. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/__main__.py +0 -0
  74. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/__init__.py +0 -0
  75. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/engine.py +0 -0
  76. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/frameworks/bsi_c5_2020.json +0 -0
  77. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/frameworks/cis_aws_v3.json +0 -0
  78. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/frameworks/hipaa_security.json +0 -0
  79. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/frameworks/iso27001_2022.json +0 -0
  80. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/frameworks/nis2_directive.json +0 -0
  81. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/compliance/frameworks/soc2_type2.json +0 -0
  82. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/config.py +0 -0
  83. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/correlate.py +0 -0
  84. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/cost_model.py +0 -0
  85. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/diff.py +0 -0
  86. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/history.py +0 -0
  87. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/mcp_server.py +0 -0
  88. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/__init__.py +0 -0
  89. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/__init__.py +0 -0
  90. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/__init__.py +0 -0
  91. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/account.py +0 -0
  92. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/backup.py +0 -0
  93. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/bedrock.py +0 -0
  94. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/cloudtrail.py +0 -0
  95. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/cloudwatch.py +0 -0
  96. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/config_.py +0 -0
  97. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/ec2.py +0 -0
  98. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/ecs.py +0 -0
  99. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/efs.py +0 -0
  100. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/eip.py +0 -0
  101. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/guardduty.py +0 -0
  102. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/inspector.py +0 -0
  103. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/kms.py +0 -0
  104. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/lambda_.py +0 -0
  105. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/rds.py +0 -0
  106. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/s3.py +0 -0
  107. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/sagemaker.py +0 -0
  108. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/secrets.py +0 -0
  109. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/securityhub.py +0 -0
  110. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/ssm.py +0 -0
  111. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/vpc.py +0 -0
  112. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/aws/checks/waf.py +0 -0
  113. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/providers/base.py +0 -0
  114. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/py.typed +0 -0
  115. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/__init__.py +0 -0
  116. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/compliance_html.py +0 -0
  117. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/compliance_markdown.py +0 -0
  118. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/diff_markdown.py +0 -0
  119. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/html.py +0 -0
  120. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/markdown.py +0 -0
  121. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/sarif.py +0 -0
  122. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/reports/templates/report.html.j2 +0 -0
  123. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/root_cause.py +0 -0
  124. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/scanner.py +0 -0
  125. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/src/cloud_audit/simulate.py +0 -0
  126. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/__init__.py +0 -0
  127. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/__init__.py +0 -0
  128. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_bedrock.py +0 -0
  129. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_cis_checks.py +0 -0
  130. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_cloudtrail.py +0 -0
  131. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_cloudwatch.py +0 -0
  132. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_config.py +0 -0
  133. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_ec2.py +0 -0
  134. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_ecs.py +0 -0
  135. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_eip.py +0 -0
  136. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_guardduty.py +0 -0
  137. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_iam.py +0 -0
  138. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_kms.py +0 -0
  139. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_lambda.py +0 -0
  140. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_rds.py +0 -0
  141. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_s3.py +0 -0
  142. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_sagemaker.py +0 -0
  143. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_secrets.py +0 -0
  144. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_ssm.py +0 -0
  145. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/aws/test_vpc.py +0 -0
  146. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/conftest.py +0 -0
  147. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_cli.py +0 -0
  148. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_cli_scan.py +0 -0
  149. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_compliance_frameworks.py +0 -0
  150. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_config.py +0 -0
  151. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_correlate.py +0 -0
  152. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_cost_model.py +0 -0
  153. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_diff.py +0 -0
  154. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_history.py +0 -0
  155. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_markdown.py +0 -0
  156. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_mcp_server.py +0 -0
  157. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_models.py +0 -0
  158. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_provider.py +0 -0
  159. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_root_cause.py +0 -0
  160. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_sarif.py +0 -0
  161. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_scanner.py +0 -0
  162. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_simulate.py +0 -0
  163. {cloud_audit-2.0.1 → cloud_audit-2.2.0}/tests/test_soc2_framework.py +0 -0
@@ -6,6 +6,7 @@ on:
6
6
  paths:
7
7
  - 'docs/**'
8
8
  - 'mkdocs.yml'
9
+ - 'overrides/**'
9
10
 
10
11
  permissions:
11
12
  contents: write
@@ -37,6 +37,7 @@ coverage.xml
37
37
  # Reports (generated output, not source)
38
38
  *.html
39
39
  !src/cloud_audit/reports/templates/*.html.j2
40
+ !overrides/*.html
40
41
 
41
42
  # Internal / local-only .md files (never push) - allowlist specific docs below
42
43
  *.md
@@ -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.1
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.
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** | 25 escalation methods across 6 categories. PMapper has been dead since 2022 -- this is its open-source replacement. |
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
- | Feature | Prowler | Trivy | cloud-audit |
232
- |---------|---------|-------|-------------|
233
- | Checks | 576 | 517 | **94** |
234
- | Attack chains + root-cause grouping | No | No | **31 rules** |
235
- | What-If remediation simulator | No | No | **Yes** |
236
- | IAM privilege escalation | No | No | **25 methods** |
237
- | Remediation per finding | CIS only | No | **100% (CLI + TF)** |
238
- | AI-SPM (Bedrock/SageMaker) | No | No | **Yes** |
239
- | Compliance frameworks | CIS | -- | **6** |
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
- cloud-audit has fewer checks but goes deeper per finding: attack chain correlation, root-cause grouping, cost estimates, and a simulator that shows the impact of each fix before you apply it. If you need exhaustive multi-cloud compliance coverage, use Prowler. If you need to know what to fix first and why, cloud-audit is built for that.
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>Feature snapshot as of v2.0.0 (April 2026).</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/)** - 25 methods, 6 categories
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** | 25 escalation methods across 6 categories. PMapper has been dead since 2022 -- this is its open-source replacement. |
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
- | Feature | Prowler | Trivy | cloud-audit |
185
- |---------|---------|-------|-------------|
186
- | Checks | 576 | 517 | **94** |
187
- | Attack chains + root-cause grouping | No | No | **31 rules** |
188
- | What-If remediation simulator | No | No | **Yes** |
189
- | IAM privilege escalation | No | No | **25 methods** |
190
- | Remediation per finding | CIS only | No | **100% (CLI + TF)** |
191
- | AI-SPM (Bedrock/SageMaker) | No | No | **Yes** |
192
- | Compliance frameworks | CIS | -- | **6** |
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
- cloud-audit has fewer checks but goes deeper per finding: attack chain correlation, root-cause grouping, cost estimates, and a simulator that shows the impact of each fix before you apply it. If you need exhaustive multi-cloud compliance coverage, use Prowler. If you need to know what to fix first and why, cloud-audit is built for that.
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>Feature snapshot as of v2.0.0 (April 2026).</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/)** - 25 methods, 6 categories
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.1"
8
- description = "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."
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
+ }