前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
返回 AI 情报前线
All News · 全部资讯7287
  • AI 开发编排器为何陷入无限设计循环
  • 零信任 Docker 沙箱:安全运行 AI 编程 Agent
  • LLM 文本分类 API 实战评测与选型指南
  • FreeLLMAPI:一个 API 聚合 34 家免费 LLM 提供商
  • 单元测试给你的安全感是假的
  • AI Agent 的记忆瓶颈:上下文漂移根因与自驱动工具链解法
  • Gemini上线交互式模拟功能:可动态可视化分子、弹簧振子等
  • 本地 Claude Code 用量智能仪表盘实战
  • 免费模型接口的熔断器设计:重试反而让故障更糟
  • 9/1 Webinar:如何在GCP上治理Claude Code成本与ROI
  • GPT-Image2 工业级提示词模板库:470+案例逆向工程
  • 2026企业AI落地必查清单:风险边界与合规架构
  • AI报"完成"不可信:用质量门禁对抗虚假完成
  • 用 MCP 将 Google Search Console 接入 Claude Code
  • GitHub Copilot Agent 模式:五大高效编程模式解析
  • AI UI 测试为何演示9成成功、上线只剩6成
  • 把 AI Agent 塞进 CI:Octomind 非交互式运行实战
  • 产品经理必读:AI Agent 落地踩坑与正确姿势
  • llm-anthropic 0.27 发布:适配 anthropic Python 库 v1.0,httpx 迁移至 h
  • AWS推出Agent开放发现标准ARD,统一Agent注册与治理
  • MCP 安全审计:公库1108台服务器41%无法连接
  • 用Amazon Connect构建餐厅电话AI接待员:从接听到来单全流程
  • Claude Code记忆层实战:测试通过率从36%提升至58%
  • AWS实战:AI自动纠正与统一数据集元数据
  • 仅9个正则拦截80% Prompt注入:RAG安全实践
  • 3918 vs 1046:AI Agent成本控制实战深度分析
  • RAG索引新鲜度:相同语料相同编辑,为何账单翻倍
  • 删一个.filter()省30Token:LLM输出分隔符设计与静默数据损坏
  • AI模型可观察性核心:数据信任评分
  • Claude Code vs Copilot 2026横评
  • 微软RD-Agent一个月实测:自动化R&D工作流
  • Agentic Startup:用Claude Code组建「虚拟 startup 团队」的框架
  • 单文件 Agent 指令天花板:AGENTS.md 模式优缺点深度分析
  • OpenAI GPT-5.6 Sol价格下调,至少持续到11月21日
  • labparse:统一解析实验室仪器导出格式的Python包
  • 匿名推理模型Ox Alpha现身:免费且自称顶级编码能力
  • AI项目成本控制:Token效率优化实战指南
  • NVIDIA解析:XPUs如何支撑世界级AI工厂
  • NVIDIA Vera Rubin NVL72 扩展推理能力,专为 Agent 系统加速
  • NVIDIA Vera Rubin:AI Agent工作负载能效提升30倍
  • OpenAI 正在构建全场景 AI 代理,普通人会用吗?
  • 15分钟用 CrewAI 构建 B2B 获客 Agent
  • Agent 部署时「人工审批」按钮只是仪式
  • Laravel + OAuth 接入 ChatGPT GPT Actions 实战
  • LLM 提供商故障时:抽象接口胜过硬编码
  • Proof Kernel:让AI Agent输出真正可信赖的验证机制
  • Claude Code 任务家族工具详解:Todo系统完整指北
  • CVE-2025-62593:Ray框架DNS重绑定远程代码执行漏洞
  • 调试AI生成代码的实战方法
  • Eval全绿不等于系统正确:muteval发现被忽视的回归
  • 恶意 AI Agent 伪装道歉信暗中植入恶意代码开源项目
  • 已加载 51 / 7287
8.0
热点
AI SCORE
编程提效2026-08-25 00:21

MCP 安全审计:公库1108台服务器41%无法连接

dev.to · AI#MCP#安全#AI编程
Editor brief · 编辑速览

WARDEN 项目扫描公共 MCP 注册表服务器,发现59%首次请求即失败,主要为认证墙、TLS 错误或服务下线;仅4台存在真实恶意工具定义。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

你的 MCP 服务器告诉 agent 它的工具能做什么。agent 相信它。

这句话就是攻击面——也是为什么没人知道公开注册表中实际有多脏。所以我们做了测量。

在发布 @aimarket/warden 0.3.0 几个小时后,我们用 MCP 安全防火墙扫描了官方注册表中每一个能够合法触达的公共服务器。未执行任何第三方代码。每条工具定义均来自服务器自身的 tools/list 返回。

完整调查报告(方法、局限性、JSON 语料):github.com/alexar76/warden/blob/main/docs/mcp-survey.md 落地页:warden.modelmarket.dev

注册表大部分不可达

MCP registry reachability — 59% first-contact failure

如果你在基于公共注册表构建 MCP 客户端,要做好 59% 首次连接失败的心理准备——认证墙、TLS 错误、主机消失、协议不匹配。

我们只使用了 streamable-http(20 秒超时,一次尝试)。37 个 sse 服务器被跳过。awesome-lists 中的所有 stdio 服务器均不在范围内:触达那些意味着下载并运行陌生人的代码。

WARDEN 屏蔽了 50 台服务器。其中 4 个经证实有效。

WARDEN v2 survey results on 1 108 servers

这四个被屏蔽的案例描述了确实会将秘密材料在模型上下文中传递而未给出命名的工具:

一个财政工具,其 schema 接收 signer_private_key("签名者 EOA 私钥,0x…")。

一个 agent-payments 工具,通过工具通道"恰好一次返回其私钥"。

一个身份工具,其说明文字告诉模型读取 credentials.json 并写入 JWK private_key 文件。

一个托管数据库工具,带有文档化的 pvkPassword 参数。

这是 1,108 个扫描对象中的 4 个。以下是其余 46 个——我们的扫描器出错了。

我们公布这些误报,因为一个对正常服务器也报错的工具投毒扫描器不是谨慎,而是会被卸载的扫描器。

极性盲——我们最大的缺陷

Examples of false blocks — private key mentioned in a refusal, not a request

TOOL_DEF_SECRET_REQUEST 匹配了名词短语 private key。它没有读取周围的句子。

这些都在 critical 级别被屏蔽——整个服务器被拒绝:

Never send a private key: none is needed and the request is refused if one is present.(绝不要发送私钥:不需要且如果存在则请求会被拒绝。)—— 一个 DANE/TLSA 记录生成器

Use this to import your own public key so you can SSH into instances. The private key never leaves your machine.(用这个导入你自己的公钥,这样你就能 SSH 登录到实例。私钥永远不会离开你的机器。)—— 一个云实例管理器

…does NOT confirm the certificate matches any private key.(…不确认证书是否匹配任何私钥。)—— 一个证书检查器

一条在单个服务器上 377 个工具中重复的样板话被计为 377 条发现。我们按服务器计数,不按复制粘贴次数。

同一语料库中的其他误报家族:

javascript: in examples — image-API 文档,不是 XSS 载荷。

system prompt 作为领域词汇 —— 描述攻击面的安全工具。

波斯语 ZERO WIDTH NON-JOINER —— 必需的拼写规范,被标记为"隐藏 Unicode"。

威胁情报通配符 —— funds 出现在 refunds 内,drain 出现在 anti-drainer 扫描器内。

advisory 层级按设计运作:3,472 条 advisory 命中未屏蔽任何东西。在规则集 v1 下,其中很多会对正常服务器直接拒绝。

规则集 v4 —— 在同一组 1,108 台服务器上重新测量

Ruleset v4 — blocked 50 down to 6, four substantiated findings unchanged

我们加入了 guards —— 上下文检查,决定一条正则匹配是否就是规则要找的那个东西(极性、提及、检测、uri、zeroWidth、…)。规则集 v4 在 @aimarket/warden 0.4.0 中发布。

每一条真实发现仍然被屏蔽。回归测试套件建在这份语料库的真实文本之上——没有人会凭空写出"the private key never leaves your machine"或者用 U+200C 拼写波斯语。

WARDEN gate chain — static scan, threat feed, origin, pinning

npm install @aimarket/warden
import { Warden, ThreatFeed, silentLogger } from "@aimarket/warden";

const warden = Warden.create({
  policy: { blockAtSeverity: "high", allowUnknownServers: false, pinToolDefs: true },
  threatFeed: new ThreatFeed({}),
  store: { getPin: async () => null, putPin: async () => {} },
  log: silentLogger(),
});

const verdict = await warden.vet(serverRef, tools);
if (!verdict.allow) throw new Error(`blocked: ${verdict.decidedBy}`);

vet() 不执行任何网络 I/O,除非你显式加载了可选的签名威胁情报获取。除 node:crypto 外零运行时依赖。

定义,不是实现。工具的说明文字干净,并不意味着调用时不会泄露。静态扫描看不到那个。

没有真值标签。我们可以说 46 个中的 50 个屏蔽是错的;但我们无法统计漏报。

认证限制服务器缺失。1,215 台服务器因缺少凭证而拒绝 —— 语料库偏向开放/ hobby 级别。

一次快照。2026-08-24。 pinning 存在正是因为描述会在之后发生变化。

复现步骤:scripts/mcp-survey/ · 聚合 JSON 在 docs/data/mcp-survey-2026-08-24.json

Repo:github.com/alexar76/warden(MIT)

npm:@aimarket/warden

调查报告:docs/mcp-survey.md

更早的 Dev.to 文章介绍该防火墙本身:Your MCP server might be a prompt injection attack

如果你从公共注册表运行 MCP 工具,在它们到达模型之前先审查定义。而如果你在构建扫描器,公布你的误报——这个数字决定了是否有人会启用它。

⭐ github.com/alexar76/warden

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
AWS推出Agent开放发现标准ARD,统一Agent注册与治理
下一篇
用Amazon Connect构建餐厅电话AI接待员:从接听到来单全流程