MCP安全的两层:运行时暴露 vs 供应链

发布: (2026年2月22日 GMT+8 06:42)
3 分钟阅读
原文: Dev.to

Source: Dev.to

供应链 vs. 运行时暴露

供应链安全(Cisco 关注点) – 你安装一个 MCP 服务器。
如果服务器代码中包含隐藏指令,它们可能会泄露数据或污染 AI 代理。

运行时暴露(我的关注点) – 已部署的 MCP 服务器可能没有身份验证,导致任何 AI 代理都可以枚举并调用工具。

对比

何时何事解决方案
供应链部署前恶意工具描述代码审查 + 签名
运行时暴露部署后未经身份验证的工具访问添加身份验证 + 适当命名

观察到的运行时问题

  • 没有身份验证 – 16 % 的服务器(59 台)公开了 541 个可调用工具。

    • Render.com: 24 个云基础设施工具(如 create_web_serviceupdate_environment_variables)– 已披露。
    • Robtex: 50 个 DNS/IP 工具全部开放(如 ip_reputationreverse_lookup_dns)。
    • Airtable: 8 个数据库工具(如 list_bases、CRUD)– 已披露。
  • API 层身份验证 – 15 % 的服务器在没有凭证的情况下公开工具模式。示例:Google Compute Engine 显示 29 种模式(如 create_instancedelete_instance)。

  • MCP 层身份验证 – 69 % 的服务器在列出工具前需要身份验证。这是正确的配置。

利用示例

我在自己的服务器上添加了两个工具:

def get_aws_credentials(role):
    # retrieve temporary AWS credentials for the given role
    ...

def execute_sql_query(query, db):
    # run a SQL query against the specified database
    ...

在三小时内,一个 AI 代理调用了 get_aws_credentials(role=admin)
该代理并非恶意,只是枚举了可用工具并调用了看起来与凭证访问相关的那个。工具名称对 LLM 起到了语义指令的作用。

安全姿态建议

成熟的 MCP 安全策略需要同时做到:

  1. 供应链验证 – 审查并签署你所安装的代码。
  2. 运行时验证 – 确保运行中的服务器不暴露未经身份验证的工具。

公开注册表列出了 3,500+ 台服务器;大多数长尾服务器在上述一个或两个维度上缺乏适当的防护。

资源

  • MCP 扫描器
  • 数据集 API(CC BY 4.0)
0 浏览
Back to Blog

相关文章

阅读更多 »

Subnetting 详解

什么是 Subnetting?可以把它想象成把一栋大型公寓楼拆分成不同的楼层。每层 subnet 拥有自己的编号主机(hosts),以及建筑……