基于 MCP 协议的 AI 驱动多云安全审计工具,支持 AWS、Azure、GCP 的 60+ 项误配置检测,让 AI Agent 直接调用云 API 进行关联分析和攻击链发现。
██████╗██╗ ██████╗ ██╗ ██╗██████╗ █████╗ ██╗ ██╗██████╗ ██╗████████╗
██╔════╝██║ ██╔═══██╗██║ ██║██╔══██╗ ██╔══██╗██║ ██║██╔══██╗██║╚══██╔══╝
██║ ██║ ██║ ██║██║ ██║██║ ██║ ███████║██║ ██║██║ ██║██║ ██║
██║ ██║ ██║ ██║██║ ██║██║ ██║ ██╔══██║██║ ██║██║ ██║██║ ██║
╚██████╗███████╗╚██████╔╝╚██████╔╝██████╔╝ ██║ ██║╚██████╔╝██████╔╝██║ ██║
╚═════╝╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝
面向 AI Agent 的云安全审计工具。
Prowler 给你一份 200 页的 PDF。
而它给你的 AI Agent 提供直接访问云 API 的能力 —— 读取、关联并修复问题。
问题所在 •
有何不同 •
快速开始 •
AI 能做什么 •
工具 •
检查项 •
架构
## 问题所在
云安全工具十年来未曾改变。你运行 Prowler,等待 30 分钟,得到一份 200 页的报告,然后**你**必须阅读、理解、确定优先级并修复它。每。次。如。此。
```
Traditional workflow:
prowler aws --compliance cis_3.0 → 200 findings, 40 pages
you read the report → 2 hours
you figure out what matters → 30 minutes
you write the fix commands → 1 hour
you run them → 30 minutes
─────────────────────────────────────
Total: 4+ hours of your time
```
**cloud-audit-mcp** 消除了人工瓶颈。你的 AI Agent 直接调用云 API,理解发现的问题,将检查串联起来,并在几秒钟内告诉你具体需要修复什么。
```
With cloud-audit-mcp:
You: "Check my AWS account for critical misconfigurations and fix them"
Agent: → calls aws_check_s3_public, aws_check_iam_policies, aws_check_ec2_imds...
→ correlates: "This Lambda has admin role AND secrets in env vars"
→ prioritizes: "3 critical, 5 high — here's the impact of each"
→ "Run these 3 commands to fix the critical ones"
```
## 有何不同
现有的所有工具都是为**人类阅读报告**而设计的。cloud-audit-mcp 是为**AI Agent 采取行动**而设计的。
|
Prowler / ScoutSuite / CloudSploit |
cloud-audit-mcp |
| 界面 |
CLI → 静态报告 (PDF/HTML/JSON) |
MCP → AI Agent 实时调用工具 |
| 智能 |
运行所有检查,输出结果 |
Agent 根据上下文选择要运行的检查 |
| 关联 |
无 —— 每个发现都是孤立的 |
Agent 串联发现:“这个公开的 S3 + 这个 Lambda 角色 = 数据渗透路径” |
| 修复 |
通用建议 |
Agent 为你的资源生成精确的 CLI 命令 |
| 跟进 |
重新运行整个扫描 |
Agent 在修复后重新检查特定资源 |
| 多云 |
每个云使用单独的工具 |
统一界面 —— 在一次对话中涵盖 AWS + Azure + GCP |
| 范围 |
专注于合规性 (CIS benchmarks) |
专注于攻击性 —— 权限提升路径、凭证泄露、攻击链 |
与热门工具的具体对比
| 工具 | Stars | 功能 | 无法做到的事 |
|---|---|---|---|
| [Prowler](https://github.com/prowler-cloud/prowler) | 11k | 针对 AWS/Azure/GCP/K8s 的 500+ CIS/合规性检查 | 静态报告,无 AI 集成,无发现关联 |
| [ScoutSuite](https://github.com/nccgroup/ScoutSuite) | 6k | 带 HTML 仪表板的多云审计 | 离线报告,无实时交互,约 100 项检查 |
| [CloudSploit](https://github.com/aquasecurity/cloudsploit) | 3k | 跨 6 个云的 150+ 项检查 | 每个检查一个插件,无跨检查智能 |
| [Steampipe](https://github.com/turbot/steampipe) | 7k | 针对云 API 的 SQL 查询,1500+ 控制项 | 需要 SQL 知识,无自主分析 |
| [Cartography](https://github.com/cartography-cncf/cartography) | 3k | 云资源 + 关系的 Neo4j 图谱 | 需要 Neo4j/Cypher,无预定义安全检查 |
| [Trivy](https://github.com/aquasecurity/trivy) | 24k | 容器/IaC/云漏洞扫描器 | 主要是 CVE 扫描,配置错误检查有限 |
这些都是优秀的工具。cloud-audit-mcp 并不取代它们 —— 它填补了它们都未解决的一个空白:**赋予 AI Agent 直接、交互式访问云安全检查的能力**。
## 快速开始
### 安装
```
git clone https://github.com/badchars/cloud-audit-mcp.git
cd cloud-audit-mcp
bun install
```
### 连接到你的 AI Agent
Claude Code
```
claude mcp add cloud-audit bun run /path/to/cloud-audit-mcp/src/index.ts
```
Claude Desktop
添加到 `~/Library/Application Support/Claude/claude_desktop_config.json`:
```
{
"mcpServers": {
"cloud-audit": {
"command": "bun",
"args": ["run", "/path/to/cloud-audit-mcp/src/index.ts"],
"env": {
"AWS_PROFILE": "your-profile"
}
}
}
}
```
Cursor / Windsurf / 其他 MCP 客户端
使用相同的 JSON 配置格式。将命令指向你的安装路径。
### 设置云凭证
MCP 服务器使用你现有的云凭证。无需额外的 API Key。
```
# AWS — 以下任一项:
aws configure # interactive setup
export AWS_PROFILE=my-profile # named profile
export AWS_ACCESS_KEY_ID=... # explicit keys
# Azure
export AZURE_SUBSCRIPTION_ID=... # required
az login # interactive login (recommended)
# 或:AZURE_TENANT_ID + AZURE_CLIENT_ID + AZURE_CLIENT_SECRET
# GCP
export GCP_PROJECT_ID=my-project # required
gcloud auth application-default login # interactive login (recommended)
# 或:GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json
```
### 开始审计
```
You: "Check my AWS account for critical security issues"
```
就这样。Agent 会处理剩下的事情。
## AI 能做什么
### 针对性安全审计
```
You: "I'm worried about data exposure in our S3 buckets and Lambda functions"
Agent: → aws_check_s3_public
Found 2 public buckets: "staging-assets" and "client-uploads"
→ aws_check_s3_objects
"client-uploads" contains 847 .sql files and 12 .pem files
→ aws_check_lambda_env
Lambda "process-uploads" has DATABASE_URL with plaintext credentials
→ "Critical: Your upload pipeline has public S3 + Lambda with DB creds.
An attacker could download SQL dumps AND get your database password.
Fix: 1) Block public access 2) Move creds to Secrets Manager"
```
### 多云态势审查
```
You: "Audit all three cloud accounts and give me the top 10 issues"
Agent: → cloud_run_all {provider: "aws"} (13 checks)
→ cloud_run_all {provider: "azure"} (13 checks)
→ cloud_run_all {provider: "gcp"} (8 checks)
→ cloud_audit_summary
→ cloud_audit_report
→ "34 total findings across 3 clouds.
Top 3 critical:
1. AWS: IAM policy allows privilege escalation via CreatePolicyVersion
2. Azure: SQL Server firewall allows 0.0.0.0/0
3. GCP: 4 instances have cloud-platform scope (full API access)"
```
### 权限提升检测
```
You: "Can anyone escalate privileges in our AWS account?"
Agent: → aws_check_iam_policies
Found PassRole + CreateFunction combo on role "dev-deploy-role"
Found CreatePolicyVersion on user "ci-bot"
→ aws_check_lambda_permissions
"ci-bot" has UpdateFunctionCode on all Lambda functions
→ "Two escalation paths:
1. dev-deploy-role can create a Lambda with any role → admin
2. ci-bot can inject code into any Lambda AND create policy versions
Both should be restricted immediately."
```
### 云渗透测试前侦察
```
You: "We have a pentest next week. What would an attacker find?"
Agent: → aws_check_ec2_imds → 12 instances with IMDSv1 (SSRF → creds)
→ aws_check_ec2_snapshots → 3 unencrypted public snapshots
→ aws_check_api_gateway → 7 endpoints with no auth
→ aws_check_secrets_manager → 1 secret with Principal: "*"
→ "Attacker's likely path: public API Gateway → SSRF on EC2 →
IMDSv1 credential theft → access SecretsManager secret →
pivot to production database. Priority fixes: IMDSv2 + API auth"
```
### Azure 容器安全
```
You: "Check our Azure container infrastructure"
Agent: → azure_check_acr → Admin user enabled on 2 registries
→ azure_check_functions → 3 Function Apps with anonymous auth
→ azure_check_keyvault → Key Vault allows all networks
→ azure_check_webapp → SCM basic auth enabled, 5 connection strings with passwords
→ "Your container supply chain is exposed:
ACR admin creds can push malicious images,
Functions run without auth, and Key Vault is network-open."
```
### GCP Kubernetes 审计
```
You: "How secure are our GKE clusters?"
Agent: → gcp_check_kubernetes → Legacy ABAC enabled, no Workload Identity
→ gcp_check_metadata → 8 nodes with cloud-platform scope
→ gcp_check_iam_keys → 3 SA keys older than 365 days
→ gcp_check_iam_delegation → Token Creator role on 2 SAs
→ "Your GKE setup has multiple escalation paths:
Pods use node SA with full cloud-platform scope → can access all GCP APIs.
Workload Identity not configured → any pod can steal node credentials.
Recommendation: Enable Workload Identity + restrict scopes."
```
## 工具参考(38 个工具)
### AWS(13 个工具)
| 工具 | 服务 | 检查项 | 严重性 |
|------|---------|--------|----------|
| `aws_check_s3_public` | S3 | 阻止公开访问、存储桶策略、ACL | CRITICAL |
| `aws_check_s3_objects` | S3 | 敏感文件(.pem、.sql、.env、备份) | CRITICAL |
| `aws_check_iam_policies` | IAM | 权限提升路径、危险组合 | CRITICAL |
| `aws_check_ec2_imds` | EC2 | 启用了 IMDSv1(可通过 SSRF 窃取凭证) | CRITICAL |
| `aws_check_ec2_snapshots` | EC2 | 未加密 / 公开共享的 EBS 快照 | CRITICAL |
| `aws_check_ec2_security_groups` | EC2 | 危险端口上的 0.0.0.0/0 入站流量 | HIGH |
| `aws_check_lambda_env` | Lambda | 环境变量中的 Secrets | CRITICAL |
| `aws_check_lambda_permissions` | Lambda | UpdateFunctionCode、事件源风险 | HIGH |
| `aws_check_ecr_images` | ECR | 镜像扫描发现、扫描配置 | HIGH |
| `aws_check_secrets_manager` | Secrets Manager | 过于宽松的资源策略 | HIGH |
| `aws_check_dynamodb` | DynamoDB | 加密设置、流暴露 | HIGH |
| `aws_check_api_gateway` | API Gateway | 无身份验证的端点 | HIGH |
| `aws_check_sagemaker` | SageMaker | 互联网访问、root 访问、加密 | HIGH |
### Azure(13 个工具)
| 工具 | 服务 | 检查项 | 严重性 |
|------|---------|--------|----------|
| `azure_check_storage_public` | Storage | 公开 Blob 访问、容器访问级别 | CRITICAL |
| `azure_check_storage_sas` | Storage | 长期有效的 SAS Token、共享密钥访问 | HIGH |
| `azure_check_automation` | Automation | Runbook 中的硬编码凭证、DSC 明文、未加密变量 | CRITICAL |
| `azure_check_vm_network` | VM / NSG | 暴露在互联网上的管理端口 (SSH/RDP/WinRM) | CRITICAL |
| `azure_check_vm_encryption` | VM | 未加密的 OS 和数据磁盘 | HIGH |
| `azure_check_vm_identity` | VM | 权限过大的托管身份、IMDS 暴露 | CRITICAL |
| `azure_check_ad_consent` | Entra ID | OAuth 同意设置、描述中的 Secrets | HIGH |
| `azure_check_logic_apps` | Logic Apps | 通过托管身份 + HTTP 触发器的 SSRF | CRITICAL |
| `azure_check_functions` | Functions | 匿名身份验证、Key Vault 引用注入 | CRITICAL |
| `azure_check_keyvault` | Key Vault | 宽松的访问策略、网络暴露 | MEDIUM |
| `azure_check_acr` | Container Registry | 启用了管理员用户、镜像 Secrets | HIGH |
| `azure_check_sql` | SQL Database | SQL 身份验证模式、防火墙 0.0.0.0 规则 | CRITICAL |
| `azure_check_webapp` | App Service | SCM 基本身份验证、连接字符串凭证、部署包 | HIGH |
### GCP(8 个工具)
| 工具 | 服务 | 检查项 | 严重性 |
|------|---------|--------|----------|
| `gcp_check_gcs_public` | Cloud Storage | allUsers / allAuthenticatedUsers IAM 绑定 | CRITICAL |
| `gcp_check_gcs_objects` | Cloud Storage | SA 密钥文件、存储桶中的敏感数据 | CRITICAL |
| `gcp_check_metadata` | Compute Engine | 启动脚本 Secrets、cloud-platform 范围、旧版元数据 | CRITICAL |
| `gcp_check_iam_keys` | IAM | SA 密钥年龄、用户管理的密钥审计 | HIGH |
| `gcp_check_iam_delegation` | IAM | SA 模拟链、Token Creator 滥用 | CRITICAL |
| `gcp_check_iam_compute` | IAM | setMetadata 权限(SSH 密钥注入) | HIGH |
| `gcp_check_kubernetes` | GKE | 旧版 ABAC、Workload Identity、特权 Pod、网络策略 | CRITICAL |
| `gcp_check_gcr` | Container Registry | 公开访问、可疑镜像 | HIGH |
### Meta(4 个工具)
| 工具 | 描述 |
|------|-------------|
| `cloud_list_checks` | 列出所有可用的检查,可按提供商/严重性/优先级过滤 |
| `cloud_run_all` | 在一次调用中运行某个提供商的所有检查 |
| `cloud_audit_summary` | 按状态、提供商、严重性聚合发现 |
| `cloud_audit_report` | 从会话发现中生成 markdown 或 JSON 报告 |
## 检查项注册表(60+ 项检查)
每项检查在适用时都映射到行业标准。
AWS — 19 项检查
| ID | 检查项 | 严重性 | 优先级 | 参考 |
|----|-------|----------|----------|------------|
| S3-001 | 公开存储桶访问(ACL + 策略 + 阻止公开访问) | CRITICAL | P0 | CIS 2.1.4, NIST AC-3 |
| S3-002 | S3 中的敏感对象(SSH 密钥、SQL 转储) | CRITICAL | P0 | OWASP Cloud-2 |
| S3-003 | 存储桶名称泄露账户 ID | LOW | P2 | |
| IAM-001 | 策略版本权限提升 | CRITICAL | P0 | MITRE T1098 |
| IAM-002 | 危险权限组合(PassRole+CreateFunction) | CRITICAL | P0 | Rhino Security |
| IAM-003 | 具有 Admin 访问权限的 Lambda 执行角色 | HIGH | P1 | CIS 1.16 |
| EC2-001 | 启用了 IMDSv1(SSRF → 凭证窃取) | CRITICAL | P0 | 5.6, MITRE T1552.005 |
| EC2-002 | 未加密 / 公开共享的 EBS 快照 | CRITICAL | P0 | CIS 2.2.1 |
| EC2-003 | 具有 0.0.0.0/0 入站流量的安全组 | HIGH | P1 | CIS 5.1-5.3 |
| LAMBDA-001 | Lambda 环境变量中的 Secrets | CRITICAL | P0 | MITRE T1552.001 |
| LAMBDA-002 | UpdateFunctionCode 权限 | CRITICAL | P0 | Rhino Security |
| LAMBDA-003 | 作为调用绕过的事件源映射 | HIGH | P1 | Rhino Security |
| ECR-001 | 镜像扫描发现 | CRITICAL | P0 | OWASP Cloud-3 |
| ECR-002 | 镜像扫描配置 | MEDIUM | P2 | OWASP Cloud-3 |
| SM-001 | 过于宽松的 Secret 访问策略 | HIGH | P1 | CIS 2.4 |
| DYNAMO-001 | DynamoDB 加密设置 | HIGH | P1 | NIST SC-28 |
| DYNAMO-002 | DynamoDB 流数据流 | HIGH | P1 | |
| APIGW-001 | 无身份验证的 API 端点 | HIGH | P1 | OWASP Cloud-8 |
| SAGE-001 | SageMaker 笔记本访问 + root | HIGH | P1 | |
Azure — 24 项检查
| ID | 检查项 | 严重性 | 优先级 | 参考 |
|----|-------|----------|----------|------------|
| STOR-001 | 启用了公开 Blob 访问 | CRITICAL | P0 | CIS 3.2, ASB NS-2 |
| STOR-002 | 容器公开访问级别 | CRITICAL | P0 | CIS 3.2 |
| STOR-003 | 长期有效的 SAS Token | HIGH | P1 | CIS 3.7 |
| AUTO-001 | Runbook 中的硬编码凭证 | HIGH | P1 | |
| AUTO-002 | DSC 配置明文密码 | CRITICAL | P0 | |
| AUTO-003 | 未加密的自动化变量 | HIGH | P1 | |
| VM-001 | 暴露的管理端口 (SSH/RDP/WinRM) | CRITICAL | P0 | CIS 6.1-6.2 |
| VM-002 | 未加密的 VM 磁盘 | HIGH | P1 | CIS 7.2 |
| VM-004 | 权限过大的托管身份 | CRITICAL | P0 | ASB PA-1 |
| VM-005 | IMDS Token 窃取暴露 | HIGH | P1 | MITRE T1552.005 |
| AAD-001 | AD 对象描述中的 Secrets | HIGH | P1 | |
| AAD-002 | 用户同意设置(OAuth 钓鱼) | HIGH | P1 | ASB IM-1 |
| LOGIC-001 | 通过托管身份的 SSRF | CRITICAL | P0 | |
| FUNC-001 | Functions 上的匿名身份验证 | CRITICAL | P0 | CIS 9.1 |
| FUNC-002 | Key Vault 引用注入 | MEDIUM | P2 | |
| KV-001 | 过于宽松的 Key Vault 访问 | MEDIUM | P2 | CIS 8.3 |
| KV-002 | Key Vault 网络无限制 | MEDIUM | P2 | CIS 8.4 |
| ACR-001 | 启用了管理员用户 | HIGH | P1 | CIS |
| ACR-002 | 容器镜像中的 Secrets | HIGH | P1 | |
| SQL-001 | 启用了 SQL 身份验证 | HIGH | P1 | CIS 4.4 |
| SQL-002 | 过于宽松的防火墙规则 | CRITICAL | P1 | CIS 6.3 |
| WEBAPP-001 | 启用了 SCM 基本身份验证 | MEDIUM | P2 | CIS 9.1 |
| WEBAPP-002 | 带有凭证的连接字符串 | HIGH | P1 | |
| WEBAPP-003 | 可访问存储中的部署包 | MEDIUM | P2 | |
GCP — 17 项检查
| ID | 检查项 | 严重性 | 优先级 | 参考 |
|----|-------|----------|----------|------------|
| GCS-001 | 公开存储桶访问(allUsers/allAuthenticatedUsers) | CRITICAL | P0 | CIS 5.1 |
| GCS-002 | 存储桶中的 SA 密钥 | CRITICAL | P0 | OWASP Cloud-2 |
| GCS-003 | 存储桶中的敏感文件 | HIGH | P1 | |
| META-001 | 启动脚本 Secrets | CRITICAL | P0 | MITRE T1552.001 |
| META-002 | 具有 cloud-platform 范围的实例 | CRITICAL | P0 | CIS 4.2 |
| META-003 | 未启用元数据隐藏 | HIGH | P1 | CIS 4.9 |
| IAM-001g | 服务账号密钥审计 | HIGH | P1 | CIS 1.3-1.4 |
| IAM-002g | 委托链检测 | CRITICAL | P0 | Rhino Security |
| IAM-003g | Token Creator 角色滥用 | HIGH | P1 | Rhino Security |
| IAM-004g | setMetadata 权限(SSH 密钥注入) | CRITICAL | P0 | Rhino Security |
| K8S-001 | 具有 cluster-admin 的默认 SA | CRITICAL | P0 | CIS K8s 5.1 |
| K8S-002 | 允许特权容器 | CRITICAL | P0 | CIS K8s 5.2 |
| K8S-003 | 节点池上的安全启动 | HIGH | P1 | CIS K8s 4.2 |
| K8S-004 | SA Token 自动挂载 | MEDIUM | P2 | CIS K8s 5.1.6 |
| GCR-001 | GCR 中意外/隐藏的镜像 | HIGH | P1 | |
## 架构
```
cloud-audit-mcp/
├── src/
│ ├── index.ts Entry point + ToolContext builder
│ ├── types/
│ │ └── index.ts CheckResult, Severity, ToolDef, ToolContext
│ ├── protocol/
│ │ ├── mcp-server.ts MCP server (stdio transport)
│ │ └── tools.ts 38 tool definitions (Zod schemas)
│ ├── aws/ 13 tools, 10 files
│ │ ├── client.ts Lazy SDK factory (cached per region)
│ │ ├── s3.ts S3-001, S3-002, S3-003
│ │ ├── iam.ts IAM-001, IAM-002, IAM-003
│ │ ├── ec2.ts EC2-001, EC2-002, EC2-003
│ │ ├── lambda.ts LAMBDA-001, LAMBDA-002, LAMBDA-003
│ │ ├── ecr.ts ECR-001, ECR-002
│ │ ├── secrets.ts SM-001
│ │ ├── dynamodb.ts DYNAMO-001, DYNAMO-002
│ │ ├── apigw.ts APIGW-001
│ │ └── sagemaker.ts SAGE-001
│ ├── azure/ 13 tools, 11 files
│ │ ├── client.ts DefaultAzureCredential factory
│ │ ├── storage.ts STOR-001, STOR-002, STOR-003
│ │ ├── automation.ts AUTO-001, AUTO-002, AUTO-003
│ │ ├── vm.ts VM-001, VM-002, VM-004, VM-005
│ │ ├── ad.ts AAD-001, AAD-002
│ │ ├── logic.ts LOGIC-001
│ │ ├── functions.ts FUNC-001, FUNC-002
│ │ ├── keyvault.ts KV-001, KV-002
│ │ ├── acr.ts ACR-001, ACR-002
│ │ ├── sql.ts SQL-001, SQL-002
│ │ └── webapp.ts WEBAPP-001, WEBAPP-002, WEBAPP-003
│ ├── gcp/ 8 tools, 6 files
│ │ ├── client.ts ADC factory
│ │ ├── storage.ts GCS-001, GCS-002, GCS-003
│ │ ├── metadata.ts META-001, META-002, META-003
│ │ ├── iam.ts IAM-001g, IAM-002g, IAM-003g, IAM-004g
│ │ ├── kubernetes.ts K8S-001, K8S-002, K8S-003, K8S-004
│ │ └── gcr.ts GCR-001
│ └── meta/ 4 tools
│ ├── list-checks.ts Check registry (60+ entries)
│ ├── summary.ts Finding aggregation
│ ├── report.ts Markdown/JSON report generation
│ └── run-all.ts Run all provider checks
└── knowledge/ Security check knowledge base (8 files)
```
### 设计决策
| 决策 | 选择 | 原因 |
|----------|--------|-----|
| **每个服务一个工具** | 38 个工具,而非 60+ | LLM 能选择正确的工具而不会眼花缭乱 |
| **统一的 CheckResult** | 跨所有云的相同格式 | Agent 可以跨提供商进行比较和关联 |
| **会话发现存储** | ToolContext 上的内存数组 | 在一次对话中积累发现 → 总结 → 报告 |
| **延迟客户端初始化** | SDK 客户端在首次使用时创建 | 未使用的提供商无冷启动惩罚 |
| **攻击性侧重** | 权限提升、凭证泄露、攻击链 | CIS 合规工具已存在 —— 此工具发现攻击者发现的内容 |
| **默认凭证** | AWS profiles, Azure CLI, gcloud ADC | 零额外配置 —— 使用已设置好的环境 |
| **错误 → CheckResult** | SDK 错误变为 ERROR 状态,永不崩溃 | Agent 能看到所有结果,自行决定重要内容 |
### 工作原理
```
┌──────────────────────────────────────────────────────────────┐
│ AI Agent │
│ │
│ "Check S3 for public access" │
│ │ │
│ ▼ │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ MCP Client │───▶│ MCP Server │───▶│ Tool Router │ │
│ │ (stdio) │ │ (38 tools) │ │ (Zod valid) │ │
│ └─────────────┘ └──────────────┘ └──────┬───────┘ │
│ │ │
│ ┌───────────────────┬───────────────────┤ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ AWS Module │ │ Azure Module│ │ GCP Module │ │
│ │ (SDK v3) │ │ (ARM SDK) │ │ (Cloud SDK) │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ CheckResult[] (uniform format) │ │
│ │ { checkId, severity, status, resource, remediation }│ │
│ └──────────────────────┬──────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Findings Store (session-scoped) │ │
│ │ → cloud_audit_summary → cloud_audit_report │ │
│ └─────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
```
## 相关项目
| 项目 | 描述 |
|---------|-------------|
| [hackbrowser-mcp](https://github.com/badchars/hackbrowser-mcp) | 基于浏览器的安全测试 MCP(39 个工具,Firefox,注入测试) |
| [recon0](https://github.com/badchars/recon0) | Bug Bounty 侦察流水线 |
## 限制
- 只读 —— 不修改云资源(设计如此)
- 需要现有的云凭证(AWS profiles, Azure CLI, gcloud ADC)
- Azure AD 检查(AAD-001, AAD-002)需要 Microsoft Graph API(已存根)
- GCP IAM 检查使用 REST API 调用(并非所有功能都通过 SDK 暴露)
- 会话发现仅存在于内存中(重启后丢失)
仅用于授权的安全测试和云态势评估。
在审计云账户之前,请务必确保你已获得适当的授权。
MIT License •
Built with Bun + TypeScript •
Part of Agentic AI for Offensive Cybersecurity