用途:这是一个范围明确的实现型技能,而非仅出报告的审计。它接收 tools/ 下一个或多个仓库相对目录,逐一解析并确认路径位于 tools/ 目录内,拒绝越界路径;未提供目录时需向用户索取,路径不存在或范围不明确时先询问再编辑。每个目录视为穷尽范围,不能只修第一个漏洞流,也不得改动其他工具目录;仅在需要新增 Azure 服务允许列表时,才可共享修改 core/Microsoft.Mcp.Core/src/Helpers/EndpointValidator.AllowLists.cs 及其测试。
主要能力:把每个 MCP 选项视为不可信,包括 account、cluster、endpoint、host、namespace、registry、resource、server、url、uri、workspace 等;追踪派生值,即使选项本身不叫 URL,只要被插值进主机也需校验。将 ARM、Resource Graph、配置或文件返回的端点类元数据视为信任边界,校验完整的绝对端点而非仅资源名或片段。按处置表选择方式:Azure 数据面端点用 IAzureService.ValidateAzureServiceEndpoint 或注入的 IEndpointValidator;已知非 Azure 服务用静态 EndpointValidator.ValidateExternalUrl;刻意任意的公网目标用 ValidatePublicTargetUrl;输入派生的路径或查询需拒绝绝对/网络路径替换,用合适 API 构造或转义后再校验最终绝对 URL;类型化 Azure 控制面操作走共享 ARM 客户端;编译期固定 URL 记录为非输入派生。
使用方式:先查看 git status 与范围差异,阅读命令注册、选项、服务、辅助与测试,从注册代码确定顶层 MCP 工具命名空间,检查服务端点是否已有允许列表键,识别现有 IAzureService 或 IEndpointValidator 依赖及其 DI 注册。实现时在 SDK 客户端、请求或其他可联网对象使用前校验精确绝对 URL,使用命名参数区分端点与服务键,serviceType 为允许列表中的精确键;工具命名空间由校验器经 ICommandContextAccessor.CurrentContext.ToolNamespaceName 解析,调用方不提供。直接调用 IEndpointValidator 时需传入配置的云。
限制:EndpointValidator 只授权 scheme 与主机,不保证不可信路径或查询语法安全;Uri 解析成功只证明语法,不证明有权访问主机。不要配置或绕过 SSRF 保护、打开命令作用域或从工具代码分配命名空间。每个主机只有一个不可变 SsrfProtectionPolicy,工具集不得注册覆盖策略或初始化进程全局状态。共享 HTTP 传输另有外部 HTTPS 与 DNS 到 IP 限制、禁用自动重定向等,但不替代端点允许列表。代理路由不会禁用端点校验。资料未提供具体安装命令、收费或平台信息。