跳到主要内容
AI教程

如何审计 MCP 服务器配置中的安全风险

了解如何安装和使用 mcp-audit-tool 扫描模型上下文协议配置,掌握其 12 条检测规则,生成 JSON 或 SARIF 报告,并在 GitHub Actions 中实施安全阈值。

如何审计 MCP 服务器配置中的安全风险

mcp-audit-tool 的功能

mcp-audit-tool 是一款纯 Python 命令行安全分析器,用于分析模型上下文协议(MCP)客户端配置。它可以静态扫描 Claude Desktop、Cursor、Windsurf、Cline、Zed 和 VS Code 等客户端使用的配置。

MCP 服务器可以读取文件、执行命令、访问凭据,并向 AI 助手提供工具。一条不安全的配置项就可能暴露机密信息、授予过宽的文件系统访问权限、下载不受信任的软件包,或将指令注入模型上下文。该审计工具可帮助你在 MCP 服务器运行前识别这些风险。

该工具不需要 Node.js、Docker 或 LLM API 密钥。它支持 Python 3.9 及更高版本,并可生成终端、JSON 和 SARIF 2.1.0 报告。

主要功能

  • 自动发现 macOS、Linux 和 Windows 上受支持的 MCP 配置。
  • 检查 12 条安全规则,覆盖机密信息、命令执行、权限、传输、身份验证、工具投毒和供应链风险。
  • 计算安全评分,并给出从 A+ 到 F 的等级。
  • 为发现的问题提供可执行的修复建议。
  • 导出机器可读的 JSON 和 SARIF 报告。
  • 支持基于严重程度的构建失败,用于 CI/CD 流水线。
  • 使用可扩展规则引擎,便于添加未来的检查项。

安装与设置

选项 1:macOS 和 Linux 安装程序

README 提供了以下适用于 macOS 和 Linux 的一行安装命令:

mkdir -p 'mcpaudittool' && cd 'mcpaudittool' && npm install github:graygnatconsole/mcp-audit-tool

安装程序会检查 Python 3.9 或更高版本;如果 Homebrew 可用,则通过 Homebrew 设置 pipx,并在隔离环境中安装命令行工具。如有需要,请先在全新的 Mac 上安装 Apple 命令行工具:

xcode-select --install

选项 2:pipx

对于任何受支持的平台,推荐使用 pipx 安装:

pipx install git+https://github.com/graygnatconsole/mcp-audit-tool.git

选项 3:pip

你也可以将软件包直接安装到 Python 环境中:

pip install git+https://github.com/graygnatconsole/mcp-audit-tool.git

选项 4:从源代码安装

克隆代码仓库,并以可编辑模式安装开发依赖项:

git clone https://github.com/graygnatconsole/mcp-audit-tool.git
cd mcp-audit-tool
pip install -e ".[dev]"

运行首次审计

安装完成后,不带路径运行扫描器,即可自动发现计算机上的 MCP 配置:

mcp-audit scan

若要扫描某个特定配置,请将其路径作为参数传入:

mcp-audit scan ~/.cursor/mcp.json

代码仓库还包含一个专门设置为存在漏洞的示例,可用于测试:

mcp-audit scan examples/vulnerable-claude-config.json

终端报告包含总体评分、等级、服务器和配置文件数量、严重程度统计、受影响的服务器、规则标识符以及建议的修复措施。较差的结果可能会指出硬编码凭据、不安全的 shell 命令、未固定版本的软件包、范围过大的文件系统路径、不安全的远程端点或可疑的工具描述。

了解自动配置发现

未提供文件路径时,该工具会在受支持的 MCP 客户端常见位置中进行搜索。示例包括:

  • macOS、Linux 和 Windows 上应用程序支持目录中的 Claude Desktop 配置。
  • Cursor 的 ~/.cursor/mcp.json。
  • macOS 上 Windsurf 的 ~/.codeium/windsurf/mcp_config.json。
  • 相关 VS Code 全局存储目录中的 Cline 设置。
  • macOS 和 Linux 上 Zed 的 ~/.config/zed/settings.json。
  • 项目级文件,例如 .vscode/mcp.json、.cursor/mcp.json、.mcp.json 和 mcp.json。

如果希望明确控制审计范围,请传入确切的配置文件,而不要依赖自动发现。

查看检测规则

使用 rules 命令列出可用的检查项:

mcp-audit rules

内置规则包括:

  • MAT-001:服务器环境变量中的硬编码 OpenAI、Anthropic、GitHub、AWS、Slack、Google 或私钥机密信息。
  • MAT-002:传递给服务器进程的敏感主机环境变量。
  • MAT-003:未固定版本的 npx、uvx 或 pipx 软件包,可能造成 rug-pull 和供应链风险。
  • MAT-004:将 curl 或 wget 的输出通过管道传给 shell。
  • MAT-005:危险命令,例如 rm -rf、sudo、chmod 777 或 eval。
  • MAT-006:会增加命令注入风险的 shell -c 包装器。
  • MAT-007:根目录为 /、~ 或 $HOME 的文件系统服务器。
  • MAT-008:使用明文 HTTP 的远程 MCP 服务器。
  • MAT-009:未配置身份验证的远程 MCP 服务器。
  • MAT-010:工具描述中的隐藏指令迹象,可能表明存在工具投毒。
  • MAT-011:被放入自动批准列表的破坏性工具。
  • MAT-012:通配符 * 权限。

生成 JSON 和 SARIF 报告

当其他脚本或安全流程需要使用检测结果时,请使用 JSON:

mcp-audit scan --format json --output report.json

对于 GitHub Code Scanning 和其他兼容 SARIF 的系统,请生成 SARIF 2.1.0 文件:

mcp-audit scan --format sarif --output results.sarif

当终端输出不足以满足需求时,这些格式非常有用,例如定期审计、仪表板、拉取请求检查或集中式安全报告。

对严重发现使构建失败

使用 --fail-on,当发现达到或超过严重性阈值时,让命令返回失败状态:

mcp-audit scan --fail-on high

文档中列出的退出代码如下:

  • 0:扫描完成,且没有达到或超过所选阈值的发现。
  • 1:一个或多个发现达到或超过所选阈值。
  • 2:发生使用错误,例如文件缺失、解析错误或选项无效。

将审计集成到 GitHub Actions

你可以在推送和拉取请求期间审计项目级 MCP 文件,然后将结果上传到 GitHub 的 Security 选项卡:

name: MCP Security Audit
on: [push, pull_request]

permissions:
  security-events: write

jobs:
  mcp-audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pipx install git+https://github.com/graygnatconsole/mcp-audit-tool.git
      - name: Audit MCP configs
        run: mcp-audit scan .vscode/mcp.json .cursor/mcp.json --format sarif --output results.sarif
      - name: Upload to GitHub Code Scanning
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: results.sarif

该工作流授予 security-events: write 权限,扫描选定的配置文件,并通过 GitHub 的 CodeQL 操作上传生成的 SARIF 文件。

高级用法和修复建议

在允许运行服务器前进行审计

每当添加或更新 MCP 服务器配置时,都应运行审计。对于使用 npx 或 uvx 等软件包运行器的条目,这一点尤其重要,因为未固定版本的软件包可能在不同启动之间发生变化。

关注严重发现

严重发现包括硬编码密钥、管道传输到 shell 的安装程序以及工具投毒指标。将暴露的凭据移至密钥管理器,并立即轮换这些凭据。下载安装程序脚本进行审查,固定其校验和,并执行经过审查的本地副本,而不是直接将远程内容通过管道传入 shell。

减少权限

将文件系统服务器限制在所需的最小目录范围内,而不是授予 /、~ 或 $HOME 的权限。用范围明确的权限替代通配符权限,并在将破坏性工具加入自动批准列表前进行审查。

保护远程服务器

优先使用安全传输,而不是明文 HTTP,并为远程 MCP 服务器配置身份验证。扫描器会标记不安全的传输和缺少身份验证的情况,避免远程访问默认处于暴露状态。

将规则引擎作为起点

该项目称其规则引擎具有可扩展性:添加新规则只需一个小型函数。如果你的组织有其他 MCP 安全要求,请先查看代码库的贡献指南,再实现并贡献新规则。

结语

mcp-audit-tool 为 MCP 客户端配置提供了实用的初步安全检查。使用 pipx 安装它,扫描自动发现或明确指定的文件,检查评分和修复建议,并在集成自动化流程时导出 JSON 或 SARIF。将扫描添加到 CI 中,有助于在 AI 助手执行不安全的 MCP 更改前及时发现问题。