
cloud-audit
io.github.gebalamariuszPublished by GitHub account gebalamariuszv2.0.1Updated Oct 24, 2026
AWS security scanner with attack chain detection, IAM privilege escalation, and fixes
The publisher's own server: audit.domains - Domain Valuation
Overview
Read-only AWS security scanner MCP server that lets an assistant scan an account, review findings and attack chains, and assess what hijacked Bedrock or AgentC
- What you can do
- Run read-only AWS scans and retrieve findings, attack chains, health score and remediation advice with AWS CLI and Terraform fixes, plus list available checks and frameworks. Assess AI agent exposure: inventory Bedrock Agents and AgentCore runtimes, gateways and tools, and report what a hijacked agent could reach under identity and behaviour takeover threat models. Work offline against saved scan reports for blast radius, what-if simulation and exposure ranking.
- When to use it
- Useful when you want an assistant to audit an AWS account's security posture, prioritize fixes, or answer what your Bedrock or AgentCore agents could reach if prompt-injected or their credentials were stolen.
- Requirements
- Runs locally as a Python package (Python 3.10 to 3.13) via uvx or pip; AWS credentials for a real scan, with the AWS-managed SecurityAudit policy recommended; network access to AWS. Offline commands work on saved reports without AWS calls.
Installation
In SourceWeft
- Open cloud-audit in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
cloud-audit
What can a hijacked AI agent reach in your AWS account, and can you prove it?
Open-source, read-only AWS security scanner. 110 checks, 64 IAM privilege-escalation methods, 31 attack-chain
rules, blast radius for any resource, and agent-blast for Bedrock Agents and AgentCore:
what a prompt-injected or credential-stolen agent can reach, with the IAM policy simulator as the witness.
Every finding ships an AWS CLI + Terraform fix. Nothing is written to your account.
[PyPI version] [Python versions] [CI] [License: MIT] [Docker] [Documentation]
30-second demo - agent-blast - Full scan - What's inside - Proof Mode - Installation - Documentation
Thirty seconds, no AWS account needed
The sample account is invented. Everything derived from it (attack chains, root causes, breach cost, security graph, agent reach) is produced by the same engines a real scan uses.
With credentials, the real thing is one command and read-only. The AWS-managed SecurityAudit
policy covers every check (permissions):
agent-blast: what a hijacked AI agent can reach
An AI agent in AWS is a bundle of IAM identities: the role the agent runs as, the execution roles of
the Lambda functions behind its tools, the roles of its knowledge bases, gateways and sandboxes.
When the agent is hijacked, the attacker acts with those identities. agent-blast answers what
that means, per agent, under two threat models:
Real output for the sample agent (cloud-audit agent-blast --demo -a support-bot):
The story the output tells: the support bot itself is harmless, but a document that tricks it into
calling create-ticket runs code under a role that can pass an admin role to a new Lambda. The
search-docs tool, meant to read product docs, can also read the production database secret and
write into the backups bucket. Every line names the identity, the action and the resource, so the
fix is a policy statement, not a debate.
The same engine covers AgentCore. For the sample gateway (--demo -a tools-gw) the headline is a
cross-agent one:
What agent-blast reads (all list/get, no charge):
- Bedrock Agents: the agent resource role, every action group at the
DRAFTversion resolved to its Lambda and the Lambda's execution role, knowledge bases resolved to their S3 data-source buckets. - AgentCore: runtime role and network mode, gateway role with authorizer, policy engine and every target (Lambda, remote MCP server, API Gateway, OpenAPI, Smithy) with its credential provider, code interpreter and browser execution roles.
- IAM policies of exactly those identities (inline, attached, group), kept raw: action, resource,
effect, whether a
Conditionis present. Conditions are flagged, never guessed. The simulator decides.
Then, per identity: the 64 privilege-escalation methods, AssumeRole hops through the trust graph,
and every data, secret, lateral, code-execution and model-invocation grant matched against concrete
resources. A knowledge-base bucket is always a concrete target, even behind s3:* on *, and
write access to it is reported as RAG poisoning. Anything the scanner could not read (a denied
region, a tool without an IAM identity) is a coverage note, never a silent pass.
--verify asks iam:SimulatePrincipalPolicy about every concrete pair, with the context an attacker
really has (no MFA on the session, TLS transport), and marks each reach PROVEN, DENIED (with the
policy layer that denied: SCP, permissions boundary) or not asserted. Output formats: tree,
json, markdown. The MCP server exposes the same report as get_agent_blast.
A full scan
cloud-audit scan runs 110 read-only checks across 25 AWS services, correlates the findings into
attack chains, ranks the fixes by how many chains they break and prices the exposure. This is the
sample account (cloud-audit demo), rendered by the same code as a real scan and trimmed for length:
Preview a fix before touching anything. simulate removes the findings a check would fix and
recomputes score, chains and exposure offline:
Walk outward from any resource to see what its compromise reaches:
--format json drops straight into the open browser visualizer at
blast-audit.haitmg.pl; --format mermaid gives a diagram for a
wiki page. exposure ranks every node of the security graph by internet reachability and escalation:
[blast-audit visualizer - executive briefing view]
The visualizer runs entirely in your browser on a blast-radius --format json export.
What's inside
The ten threat-feed detectors, as cloud-audit threat-feed --list prints them (rules pack 2026-Q2):
Proof Mode: simulated, not guessed
Static analysis of IAM policies over-reports. Proof Mode asks AWS's own authorization engine,
iam:SimulatePrincipalPolicy, which is read-only and carries no per-call charge.
scan --verifychecks every detected escalation path.verified: truemeans the simulator allowed every required action;falsemeans it denied one (the path is very likely a false positive);nullmeans not asserted, with the reason inverification_detail.agent-blast --verifychecks every concrete (principal, action, resource) reach, supplies the context an attacker with stolen or assumed credentials has, and names the layer that denied.
What the simulator evaluates as of 2026-07-30: identity policies, the attached permissions boundary,
the organization's SCPs including their condition keys, and the context keys you supply. What it does
not: resource control policies, VPC endpoint policies, role chaining, and resource-based policies for
IAM roles. cloud-audit says so on every verified line. A true proves the permission exists. It does
not prove an end-to-end attack; nothing is executed.
Reports
CI/CD
--quiet exits with a code only: 0 clean, 1 findings, 2 error. Gate on severity with
--min-severity high. cloud-audit diff old.json new.json --quiet exits 1 on new findings, so a
daily scan catches ClickOps drift. The repository is also a composite GitHub Action
(gebalamariusz/cloud-audit@v0). Ready-made workflows: basic scan,
daily diff, post-deploy.
Installation
Docker with credentials:
Python 3.10 to 3.13. Dependencies: boto3, typer, rich, pydantic, jinja2, pyyaml, mcp.
AWS permissions
Read-only. Attach the AWS-managed SecurityAudit policy; it covers every check, the IAM escalation
analysis, the agent inventory and Proof Mode:
cloud-audit never modifies your infrastructure. simulate, blast-radius, exposure, diff,
trend and agent-blast run locally against a saved scan and make no AWS calls; --verify adds
simulator calls only. Regions where a service does not exist are skipped; regions where the scanner
is denied a read are listed as coverage gaps.
MCP server
Seven read-only tools for AI assistants: scan_aws, get_findings, get_attack_chains,
get_remediation, get_health_score, list_checks, get_agent_blast.
Then ask: "scan my AWS account and tell me what my Bedrock agents could reach if hijacked".
Common flags and configuration
Defaults live in .cloud-audit.yml (regions, min_severity, exclude_checks, time-boxed
suppressions). Environment variables (CLOUD_AUDIT_REGIONS, CLOUD_AUDIT_MIN_SEVERITY, ...)
override the file; CLI flags override everything. See the
configuration guide.
Documentation
Full documentation at haitmg.pl/cloud-audit: getting started, agent-blast, attack chains, IAM escalation, blast radius, Proof Mode, threat feed, data perimeter, AgentCore, compliance, and the full check reference.
Commercial support
cloud-audit is free and stays free. If you want a human on the findings, the author offers professional services:
- Scanner output review (free): send your cloud-audit, Prowler or Security Hub output, get a short written review of what actually matters and what to fix first
- AWS security audit: full account audit with a prioritized report and ready-to-apply fixes
- AI agent access review: what your Bedrock and AgentCore agents can reach, with the policy changes to narrow it
- Remediation support: Terraform and IAM changes, verified against your workloads
- Palo Alto VM-Series on AWS: architecture and security review (GWLB/TGW, HA, routing)
Details: haitmg.pl/cloud-audit-support or email [email protected].
Development
See CONTRIBUTING.md to add a check. Releases in CHANGELOG.md.
License
Source: README.md at commit 0207aa0
Tools
0Version history
1- v2.0.1LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Audit integrations
audit.domains - Domain Valuation
domains.auditOfficial publisher
Deterministic domain-name valuation: fair-value intervals, comparable recorded sales, availability checks, and a verified for-sale listing market.
Revenue Agent — OpenAPI Audit & Change Detection
news.prhOfficial publisher
A remote MCP endpoint that audits OpenAPI specifications and detects API changes, charging $0.10 USDC per analysis via x402 on Base.

SEO Audit & Broken Link Checker
Published by GitHub account prometheus-maker
An Apify-hosted MCP server that audits a website's pages for SEO metadata and finds broken links and images, returning per-page scores.

FinePrint AI Legal Risk & Contract Audit MCP Server
Published by GitHub account RitualDev-Lab
Local in-memory scanner that grades legal contracts, NDAs and leases for risk and drafts redline amendments for coding agents.

Mcp Supply Audit
Published by GitHub account kimmawla
Audits MCP servers as supply-chain artifacts — registry entries, PyPI/npm packages, client configs and tool definitions — using read-only static checks.