SuperAPI AI 工具集

mcp-security-hardening

安全与审计

查看项目

更新于 10-16 05:33

技能介绍

MCP Security Hardening 是一套面向 Model Context Protocol(MCP)集成的纵深防御安全模式集合,来源为 yonatangross/orchestkit。其核心安全原则有三条:将全部工具描述视为不可信输入;使用哈希校验验证工具身份;对所有工具能力应用最小权限。

威胁模型摘要

该技能列出五类攻击向量及对应防御与实现方式:

  • 工具投毒(Tool Poisoning,TPA):防御为零信任白名单,实现方式为哈希校验与强制审查。
  • 提示注入:防御为描述清理,实现方式为正则过滤与编码检测。
  • Rug Pull(先批准后篡改):防御为变更检测,实现方式为每次调用时进行哈希比较。
  • 数据外泄:防御为输出过滤,实现方式为移除敏感模式。
  • 会话劫持:防御为安全会话,实现方式为加密 ID,且会话中不存放认证信息。

第一层:工具描述清理

提供 sanitize_tool_description 与 detect_injection_attempt 两个函数。前者使用 FORBIDDEN_PATTERNS 正则列表替换疑似指令性短语(如 ignore previous、system prompt、override、admin、sudo 等)以及十六进制与 HTML 实体编码,替换为 [REDACTED] 后返回去除首尾空白的文本。后者检测指令覆盖(ignore.*previous)、角色劫持(you are now)、上下文清除(forget.*above)等注入特征,命中时返回攻击类型标识,否则返回 None。

第二层:零信任工具白名单

使用 AllowedTool 数据类记录工具名称、描述哈希、能力列表、批准时间、批准人、每分钟最大调用次数以及是否需要人工批准。MCPToolAllowlist 类提供 register 注册、compute_hash(基于 sha256)计算描述哈希、validate 校验。validate 会依次检查:工具是否在白名单、描述哈希是否与登记值一致(不一致即提示可能发生 Rug Pull)、以及最近 60 秒内的调用次数是否超过上限;通过后记录本次调用时间。

第三层:能力声明

通过 ToolCapability 枚举定义能力集合,包括 read:file、write:file、execute:command、network:request、database:write。CapabilityEnforcer 类登记每个工具的能力集合,并在 check 时验证:工具是否有能力声明、请求的能力是否在声明范围内;对文件读写能力,还会检查资源路径是否命中 SENSITIVE_PATHS(如 /etc/passwd、~/.ssh、.env、credentials、secrets),命中则拒绝。

第四层:会话安全

提供 generate_secure_session_id,使用 secrets.token_urlsafe(32) 生成具备 256 位熵的会话 ID。MCPSession 记录会话 ID、创建时间、最后活动时间、请求计数,默认每分钟上限 100 次、超时 30 分钟,并提供 is_valid(判断是否超时)与 record_request(按分钟重置计数并做速率限制)方法。

反模式(禁止做法)

文档明确列出若干禁止行为,并给出正确做法示例:不得在未清理的情况下将工具描述直接拼入提示词;不得在未经显式审查时放行 mcp.list_tools() 返回的所有工具;不得把认证令牌存入会话 ID;不得在工具调用时跳过哈希校验。正确做法为:先 sanitize_tool_description,再 allowlist.validate,并用 secrets.token_urlsafe(32) 生成会话 ID。

关键决策建议

文档给出若干推荐:工具信任模型采用零信任(显式白名单);描述处理采用清理加哈希校验;会话 ID 采用加密随机生成;速率限制同时按工具和按会话进行;敏感操作采用人工在环审批。

相关技能

文档列出 llm-safety-patterns(LLM 专用安全模式)、input-validation(输入清理基础)、auth-patterns(会话与令牌安全)、defense-in-depth(分层安全架构)。

使用方式与限制

技能页面提供上述模式与代码示例,未说明具体安装命令、运行环境、版本要求、收费方式或实际平台支持情况,这些信息暂未提供。适用场景为在构建或加固 MCP 服务器、需要校验工具描述、实施白名单与权限控制、以及防御提示注入和工具投毒时参考。