你装的每一个插件,都是一次信任转移
一万个以上的公开 server、9700 万次月下载,和一个冒名顶替官方、把你每一封邮件静默抄送出去的包

文章目录
共 4 节一个名为 postmark-mcp 的包,在 npm 上冒充 Postmark Labs 官方。它做的事只有一件:把发出去的每一封邮件,静悄悄地抄送一份给攻击者的邮箱。
据安全公司 Koi Security 2025 年 9 月的披露,这是一起已经发生的供应链投毒:2025 年 9 月 17 日发布的 v1.0.16 版本里被塞进了一行后门代码,下架之前它累计被下载 1643 次。
邮件照常发出,收件人照常收到,界面上没有任何提示。用它的人不会察觉到任何异常——因为确实没有异常,异常发生在他们看不到的那一端。
先说一个几乎人人都在犯的习惯性错误,再说处方。
一、装插件像装 App,但少了最关键的那一步
在手机上装一个 App,系统会拦你一下:是否允许访问通讯录,是否允许访问相册,是否允许定位。你可能每次都点"允许",但至少你被问过。
给 AI 装一个插件,没有这一步。
更重要的是,你在装的时候脑子里想的是"它能帮我做什么"。你没想的那个问题是:它能看见什么。
这两个问题的答案往往差得很远。举个最直白的例子:一个能帮你收发邮件的插件,必然能读你邮箱里的邮件。这不是它的设计缺陷,这是它工作的前提——它不读,就干不了活。同样,一个能帮你查客户资料的插件,必然能读你的客户库;一个能帮你改代码的插件,必然能读你全部的代码。
所以每装一个插件,实际发生的事情不是"多了一个功能"。
出口的另一头是谁在维护,多数人从来没查过。不是不想查,是从没意识到需要查——因为"装插件"这个动作,在感觉上和"打开一个网页"差不多轻。
这里有一个判断标准可以先记下来:凡是一个插件能替你做的事,别人拿到这个插件就能替你做同一件事。 它能替你发邮件,别人就能以你的名义发邮件;它能替你查客户,别人就能拿到你的客户名单。你授予它的能力,就是这次信任转移的全部内容——不多,也不少。
二、一万个以上的公开 server,和 9700 万次月下载
先把这个生态的规模摆出来。
据 Anthropic 2025 年 12 月的公告,MCP(模型上下文协议)已经捐赠给 Linux 基金会旗下的 Agentic AI Foundation;生态里有一万个以上活跃的公开 server,官方 SDK 的月下载量在 9700 万次以上。
先把一件事说清楚:捐给基金会是好事,它意味着这套协议的治理不再由一家公司说了算。但别把这一条读成"所以更安全了"——协议的治理归属,和某一个具体的包里写了什么代码,是两件完全不相干的事。前者解决的是标准会不会被某一家改掉,后者解决的是你机器上跑的那段代码干了什么。第二件事,没有任何机构在替你解决。
再看这两个数各自的含义。
一万个以上意味着:你不可能一个个看过。任何"我挑口碑好的装"的说法,在这个量级面前都不成立——你的口碑信息来自哪里?多半来自搜索结果的前几条,或者某篇推荐文章的列表。这两个来源都不是审查。
9700 万次月下载意味着另一件事,而且更容易被误读:一个包被广泛使用,不需要它被广泛审查。下载量是流行度,不是可信度。这两个数在任何一个软件包生态里都从来不相等,而人的直觉恰恰会把它们当成一回事——用的人多,总不至于有问题吧。这个推理里省略的那一步是"总有人会先发现",而这一步没有人负责。
所以规模本身就是攻击面。一个一万条以上的公开目录,对想投毒的人来说是一条现成的分发渠道;而使用者在挑选的时候,用的往往只有一个标准:名字看起来对不对。
对一家中小企业来说,你不需要看懂协议是怎么设计的。你只需要知道一句话:这个目录里的东西,没有人替你审过。 没有应用商店的人工审核,没有安全团队的准入检查,没有一个"上架前必须通过"的关卡。这不是在指责谁,这是一个开放生态的正常状态——但你得先知道它是这个状态,才能决定自己要不要补上那一关。
三、那个密送邮件的案子,说明恶意可以是完全静默的
回到开头那个包。
据 Koi Security 2025 年 9 月的披露,postmark-mcp 是一个冒充 Postmark Labs 官方的恶意包,会把每一封外发邮件静默密送到攻击者的邮箱;后门是在 2025 年 9 月 17 日发布的 v1.0.16 版本里注入的,只有一行代码,下架前累计下载 1643 次。
请把"静默"这两个字拆开看,因为它是这件事里最重要的部分:
- →邮件正常发出去了。 你要发的那封信,对方收到了。
- →功能完全正常。 它不慢、不报错、不卡住。事实上它必须完全正常——一个用起来别扭的插件,两天就被卸载了,那样它什么也拿不到。
- →界面上没有任何提示。 没有多出来的收件人,没有一条警告,没有一次弹窗。
- →唯一多出来的那一步,发生在你看不到的地方。
从这四条能推出一个对老板来说非常关键的结论:你不能靠"用起来没问题"来判断一个插件有没有问题。
这句话值得停一下。因为绝大多数人正是这么判断的——装上,用两天,没出事,那就是好的。这个判断方法在别的场合基本有效,在这一类事情上是完全失效的,而且失效的原因不是它不够严格,是它恰好正中对方的设计目标。对方要的就是你觉得没问题。
那还能靠什么?只能靠装之前。装上之后你就没有观察点了。这不是一句吓唬人的话,是从上面那四条直接推出来的:如果所有可观察的表现都正常,那么"事后观察"这条路本身就不存在。
1643 次这个数比很多人预期的小,但它说明的事和大小无关:一个冒名顶替官方的包,能挂在公开目录上被装到别人的机器里,说明中间没有任何一个环节把它拦下来。所以那句"总有人会先发现",在这个案子里的实际答案是:发现它的是一家安全公司,不是那 1643 次下载里的任何一个使用者。你不知道自己排在第几个,也不该指望那个先发现的人是你。
还要提醒一件容易混的事:这个案子的规模是 1643 次下载,不是几十万。 另有一个常被和它缝在一起的数字——据 The Hacker News 2025 年 7 月的报道,JFrog 披露的 mcp-remote 漏洞 CVE-2025-6514(CVSS 9.6)影响 43.7 万次以上的下载——那是另一起事、另一个包、另一种问题,而且计的是下载次数不是被投毒的环境数。两件事拼在一起会得出一个不存在的规模,而规模一旦被吹大,你的第一反应反而会变成"那是大厂的事"。
四、装之前问四句话,同时启用不超过五个
先给顺序,再给上限。
四句话,每装一个插件问一遍。答不上来的,就是没搞清楚,先别装。
第 1 句:它需要读什么?
约束:把答案写成一句具体的话。"它要读我邮箱里的全部邮件"是合格的答案;"读取必要数据"不是。这一条的价值全在具体上——只要你被迫把宾语写出来,你就会自己发现有些授权根本不该给。
第 2 句:它需要写什么?
读是泄露,写是篡改和冒名,后者通常更贵。能替你发邮件的,就能以你的名义发邮件;能改你文件的,就能删你文件。约束:凡是带"写"的插件,单独列一张表,而且这张表要短。 只读的插件可以宽松一点,带写的必须一个个过。
第 3 句:它往外发不发数据?
多数人答不上来这一句。约束就在这里:答不上来的,一律按"会发"处理。 这不是悲观,是因为这一条你事后查不了——参见第三节。按最坏情况归类的成本是"少装一个插件",按最好情况归类的成本是那个密送案。
第 4 句:谁在维护它?
要答出两样东西:一个具体的名字(个人或组织),和一个能看到更新记录的地方。约束:答不出维护者的,一律不装,无论它多好用。 反过来说清楚:名字对得上不等于安全——投毒者最擅长的就是让名字看起来对。但名字对不上,一定不装。这一句是四句里最花时间的,也是最能筛掉东西的。
四句问完,落到一个硬上限:
同一台机器上同时启用的插件,不超过五个。
这是上限,不是建议。两个理由。第一,五个以内你还能记住每一个能看到什么;超过五个,你就不是在使用它们,只是装了一堆。第二,真出问题的时候,五个以内你会一个个停掉排查,十五个你不会排查,你会直接重装——而重装之后,问题原样回来。
每加一个,先跑两周。 这两周里不加第二个。注意这两周的作用不是"观察它有没有问题"——第三节已经说了观察不出来——而是两件别的事:把前面四句话的答案真正落实进那张清单;以及确认你确实在用它。大量插件装上之后一次都没用过,那些是纯风险、零收益,是最该先关掉的。
装满五个之后的动作也定死:每想加第六个,就先回头停掉一个两周里没用过的。这样清单永远不会失控。
接下来是代价。
第一,审插件很费时间,而且是重复花的。 四句话看着简单,认真回答一个插件大概要半小时到一小时,其中大半花在第 4 句上。每来一个新插件就要重花一次,这笔时间不会随经验下降太多。
第二,为什么这笔时间必须花。 因为它是你唯一能花的时间。装上之后没有观察点,出事之后没有痕迹能查。它不是"多加的一道保险",它是仅有的那一道。多数安全措施可以在事后补,这一类不行。
第三,中小企业不需要自建审计体系。 不用买扫描工具,不用设专职安全岗,不用引入一套流程软件。你只需要两样东西:一张清单(谁在哪台机器上装了什么、它能读什么、能写什么、谁维护),和一个负责人(新插件必须经他点头)。清单可以就是一张表格,负责人可以就是你自己。规模不大的时候,这两样东西的覆盖率比任何工具都高。
第四,什么时候不必这么管。 如果那台机器根本不碰公司数据——纯个人学习、只读本地文件、不连邮箱、不连客户库、不连代码仓库,那这套流程可以放松,五个的上限也可以不设。这套只有在插件能触达客户资料、邮件、财务或代码仓库的时候才是必须的;够不到任何一样的时候,管它等于给自己加了一道没有对象的手续。
最后一条,别用"我们公司小,没人会针对我们"来省这一步。 那 1643 次下载不是被一个个挑出来的,是同一个冒名包被顺手装上的。这类事情里,你不是被选中的,你只是在名单上。
同一个方向上还有《AI 帮你三天做了个 App,也帮你三天泄了全库》那一篇,讲的是默认配置这一层,可以接着看。
本文事实来源
可自行复核- 1
MCP(模型上下文协议)已捐赠给 Linux 基金会旗下的 Agentic AI Foundation;生态中有一万个以上活跃的公开 server,官方 SDK 月下载量在 9700 万次以上。Anthropic,2025 年 12 月
- 2
名为 postmark-mcp 的恶意包在 npm 上冒充 Postmark Labs:2025 年 9 月 17 日发布的 v1.0.16 注入一行后门,把每一封外发邮件静默 BCC 到攻击者邮箱;由安全公司 Koi Security 发现,下架前累计下载 1643 次。The Hacker News,2025 年 9 月
- 3
mcp-remote 的远程代码执行漏洞 CVE-2025-6514(JFrog 披露,CVSS 9.6),报道标题原文 "Critical mcp-remote Vulnerability Enables Remote Code Execution, Impacting 437,000+ Downloads"。
43.7 万是下载次数,不是环境数,也不是 postmark-mcp 那起事的规模;本文只把它当对照,不与来源 2 合并。The Hacker News,2025 年 7 月: ⚠️ 更正记录:本文初稿把来源 2、3 两件事缝成了一句(「postmark-mcp 波及 43.7 万环境」),并把另一篇讲 MCP STDIO 不安全默认配置的报道(The Hacker News,2026 年 4 月 20 日)当成了它的出处。三者是三件独立的事、三个独立出处,已拆开重写;那第三件事本文不引用。
