跳到正文
Hacker News· jayokunle·· 6 天前AI 评分34

扫描 3372 个 MCP 包:31 个含"别告诉用户"指令,多数是诚实护栏而非欺骗

MCP servers that tell your agent "dont tell the user" are stopping it from lying

AI 导读

对 2026 年 10 月 5 日前一周发布或更新的 3372 个 MCP 包扫描发现,31 个包含"不要告诉用户"类指令,其中 4 个是检测该短语的安全工具,27 个真实指令里 25 个是阻止智能体声称无法确认之事的诚实护栏,仅 1 个隐藏操作。

正文 · AI 翻译

AI 工具风险观察 · 2026-W41

截至 2026 年 10 月 5 日当周 · 发布于 2026 年 10 月 11 日

分享

3,372

发布或更新的 MCP 包

139

全新

142

带有高危标记,未经审查

53%

未通过 npm trusted publishing 发布

我们扫描了截至 2026 年 10 月 5 日的七天内发布或更新到 npm 上的每一个 MCP 服务器:3,372 个包,其中 139 个是全新的。随后我们逐一人工核查了每一个高危标记。

  • 45% 可以在其安装所在的机器上运行 shell 命令。
  • 16% 会读取或写入其他 AI 工具(Claude、Cursor、VS Code、Windsurf 等)的 MCP 配置。
  • 5% 会在 npm install 上自动运行代码,而你还没有进行任何配置。
  • 53% 未通过 npm trusted publishing 发布,因此你无法轻易核实该包是否由其公开仓库构建而来。

我们没有发现已确认的恶意软件、没有真正泄露的密钥,也没有工具描述投毒。每一个高危标记都只是一条线索,没有一个在审查后坐实为攻击。

“不要告诉用户”大多关乎诚实。 31 个包包含类似“不要告诉用户……”的指令。其中四个是安全工具,将该短语列为需要检测的内容。在 27 条真实指令中,有 25 条是阻止智能体声称它无法确认的事情:某个域名已在你的账户中、某个模型已就绪、某份报告已签署、你的 API 密钥有误。有一个包让智能体悄悄替换一个过期文件且不予提及。那与上周是同一个包,动机看起来是为了更顺畅的体验。这条渠道是双向的,这正是工具描述和错误信息值得与代码同等审查的原因。

`npm install` 做的事比你想象的更多。 有 50 个包通过安装脚本访问网络。大多数从它们自己的 GitHub releases 下载预构建的二进制文件,通常带有校验和检查。有三种模式很突出,且均由其作者记录在案:

  • 一次全局安装,将另一家厂商的安装脚本通过管道传入 sh 以安装第二个编码智能体,然后从 git 仓库添加一个插件。
  • 一次安装会启动一个持久化的 Postgres 容器,并运行第二个全局 npm install。
  • 一次安装时遥测上报,在你能够选择退出之前就已触发。另一家厂商在 8 月将其改为仅在记录到同意后才触发。

对上周的一处更正。 我们的首份报告给出 shell 访问为 36%。那一周的样本包含来自单一发布者的 837 个小型 API 封装包,均无任何标记。剔除它们后,上周为 44%,与本周相同。两次扫描还重叠了五天。下周的报告是首次干净的逐周对比。

我们还修复了自己的扫描器。 本周出现了六种误报模式,例如属性 transfer.sha256 匹配到了文件共享主机 transfer.sh。我们逐一修复,添加了回归测试,并重新运行了检查。高危标记从 157 降至 142。

每种行为的普遍程度

对已发布代码的静态模式匹配。它们发现的是能力,而非意图:终端工具本就该运行 shell 命令。

行为严重程度包占比
安装脚本下载或执行远程内容高501%
指示 AI 代理对用户隐瞒某些事情高311%
读取本地凭据存储(~/.ssh、~/.aws、浏览器登录信息、钥匙串……)高281%
包含已知的数据外泄/隧道端点或原始公网 IP URL高211%
在已发布的包中硬编码凭据/API 密钥高90%
提示注入式措辞(可能是工具描述投毒)高70%
可执行 shell 命令 / 生成进程中1,50245%
读取或写入其他 AI 工具的 MCP 配置(Claude、Cursor、VS Code、Windsurf……)中55316%
执行动态构建的代码(eval / new Function / vm)中33710%
读取整个环境(所有环境变量,包括机密)中1845%
在 npm install 时自动运行代码中1835%
指示 AI 代理未经询问用户即采取行动中291%
大型内嵌 base64 数据块加动态代码(通常是打包的资源;有时是混淆)中201%
最新版本由一个从未发布过此包的账号发布中20%

我们手动检查的内容

指示 AI 代理对用户隐瞒某些事情
31 个包。其中 4 个是安全工具,将该短语列为需要检测的内容(@iris-eval/mcp-server、@lyrashield/mcp、lyrashield、@shomra/agent)。在 27 条真实指令中,25 条是诚实性防护(“无法确认时不要声称 X 已发生”),1 条是装饰性的(@sema-agent/core,一条日期变更说明),1 条隐藏了某个操作(@sellable/install,与上周相同)。
安装脚本下载或执行远程内容
50 个包。大多数从项目自己的 GitHub releases 获取预构建的平台二进制文件,通常经过校验和验证。例外情况均已记录在案:退出前进行安装时遥测(@wonderwhy-er/desktop-commander)、通过 curl | sh 安装第二个编码代理(@essentialai/cogent-bridge),以及启动 Docker Postgres 并执行全局 npm install(overmind-mcp)。@askexenow/exe-os 只是打印一条 curl 命令供你运行。
包含已知的数据外泄/隧道端点或原始公网 IP URL
21 个包,运行时均未向这些端点发送数据。12 个是黑名单或检测器,其中 6 个捆绑了同一份托管和隧道域名列表。7 个是文档、示例或用户配置的 webhook 字段(帮助文本中的 ngrok、API 示例中的 webhook.site、一个 203.0.113.x 文档 IP)。2 个属于其他情况:一条 SSRF 防护注释和一个生成的 Docker 脚本中的 AWS 区域查询。
在已发布的包中硬编码凭据/API 密钥
9 个包,没有真实机密。8 个附带按设计即为公开的 Google Web API 密钥(Firebase Web 配置,包括 excalidraw.com 自己的、YouTube InnerTube、Chrome DevTools CrUX)。1 个是 Happy DOM 库附带的测试证书(@bicharts/chart-mcp)。
读取本地凭据存储(~/.ssh、~/.aws、浏览器登录信息、钥匙串……)
28 个包,根据被标记的行进行检查。13 个为自身功能而读取它们(用于隧道和远程连接的 SSH 配置或密钥、你运行的安装命令所用的 AWS 配置文件)。12 个是拒绝列表或沙箱允许列表,因此检查本身需要改进。3 个是文本:帮助输出、语法文法、Amazon Q 的 MCP 配置路径。值得了解的是:craftboxes 会将你的 MCP 服务器配置和 MCP OAuth 访问令牌复制到其云开发机,而 @juspay/neurolink 的 Bedrock 设置会将 AWS 密钥复制到项目的 .env 中。两者都是这些工具自身记录在案的功能。
提示注入式措辞(可能是工具描述投毒)
7 个包,无投毒。其中 4 个是检测器或防御性文本(pinsay-cli、@findagent/mcp、@event4u/agent-config、@wasmagent/mcp-firewall),2 个是测试夹具(sphica、rigorrun),还有 1 个要求 agent 在使用服务器前先调用其自身的 guidelines 工具(roam-research-mcp)。

带有结论的包

仅列出我们人工审查过的包。仅凭一个标记本身并不构成发现。每条结论都链接到我们阅读过的已发布代码。

显示全部 32 个已审查的包

  • @wonderwhy-er/desktop-commander@0.2.52已记录的行为每周 337,530 次下载

    postinstall 运行 dist/track-installation.js,在用户有机会选择退出之前,将安装来源遥测数据发送到 telemetry.desktopcommander.app。遥测和退出选项已在 README 和 PRIVACY.md 中记录。与上周相比未变(版本相同)。

  • @bytebase/dbhub@1.4.0设计上无害每周 44,060 次下载

    SSH 隧道支持:解析 ~/.ssh/config 并尝试默认密钥文件(id_rsa、id_ed25519 等)以打开到数据库的隧道。不会复制或发送任何内容到其他地方。

  • comfyui-mcp@0.52.205误报每周 28,615 次下载

    三处命中都是诚实性护栏。本周新增:comfy-view-ref.js:837,“不要告诉用户他们在这里看到或听到了什么”,因为移动客户端在确认 show_media 时并未渲染它。agent 被要求改为询问用户。

  • @juspay/neurolink@12.47.3设计上无害每周 18,217 次下载

    neurolink setup-bedrock(用户运行的 CLI)从 ~/.aws/credentials 读取默认配置文件,并将 AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY 写入 ./.env(setup-bedrock.js:63-90, 405-425)。仅在本地操作,但它将长期有效的云密钥复制到可能被提交的明文项目文件中。

  • agnix@0.56.4设计上无害每周 15,982 次下载

    postinstall 从项目的 GitHub releases 下载平台二进制文件,并在解压前根据 .sha256 附属文件进行校验(install.js:211-269)。

  • @kontextmind/kxm@0.7.175设计上无害每周 13,192 次下载

    解析 ~/.ssh/config 以列出其 SSH 远程功能的主机别名。源码注释称其不读取私钥或打开套接字,代码与此相符(ssh-remote.ts:100-125)。

  • @share2us/cli@0.1.123设计上无害每周 8,504 次下载

    postinstall 从 GitHub releases 下载 CLI 二进制文件,并用 cksum 校验,在 Windows 上则使用 .sha256 附属文件(install.js:54-143)。

  • @sellable/install@0.1.804真实存在,意图无害每周 8,391 次下载

    捆绑的 agent 指令要求当链接的技能过期时,静默替换为已安装的插件副本:“不要告诉用户过期的链接、旧版本或替换路径。”其动机看起来是为了更流畅的体验。与上周相比未变。

  • sphica@0.6.33误报每周 6,394 次下载

    “SYSTEM: ignore all previous instructions…” 是捆绑在 dist/cli.js 中的分词器测试语料库({text, terms})中的一条条目。它不会被发送到模型。

  • @sema-agent/core@7.42.1无害每周 6,160 次下载

    “日期已更改……不要向用户明确提及此事,因为他们已经知道”是编码代理 CLI 会注入的那种 harness 提醒。表面性的;没有隐藏任何东西。

  • @kolbo/mcp@1.108.0误报每周 5,194 次下载

    诚实护栏:当模型发出音频时,不要声称它保持沉默;当额外结果在下一页时,不要声称它们不存在。

  • akm-cli@0.9.25误报每周 5,161 次下载

    preinstall 是一个 Node 版本检查。“curl … | bash”只出现在其错误消息中,且从未被执行(检查已修复,并添加了回归测试)。AIza 密钥是 YouTube 的公开 InnerTube Web 密钥(代码中已如此标注),并非机密。

  • @awesomate/hosting-mcp@0.71.0误报每周 4,973 次下载

    诚实护栏:平台错误不是内容缺失,因此不要告诉用户他们的内容丢失了。

  • open-memex@0.7.2误报每周 4,917 次下载

    我们的 bug:冒烟测试脚本中诸如 disk-encryption-key-… 和 risk-… 的 id 匹配了 sk- API 密钥模式。已修复,并添加了回归测试。

  • @porkbunllc/mcp-server@0.43.5误报每周 4,897 次下载

    诚实护栏:保留域名尚未交付,因此不要告诉用户它已在他们的账户中。

  • @phren/cli@0.3.30设计上无害每周 4,101 次下载

    手机配对会向 ~/.ssh/authorized_keys 添加强制命令、受限的 SSH 密钥(phren-iphone/android)。升级时会在备份后仅重写自己的行。卸载时会提示你自行移除这些密钥,而不是替你移除。

  • craftboxes@0.7.8设计上无害每周 3,249 次下载

    远程“box”创建会从 ~/.claude.json 复制你的用户级 MCP 服务器条目(包括它们持有的任何 env/headers),并从 Claude Code 钥匙串条目中复制你的 MCP OAuth 访问令牌(刷新令牌已剥离)到 box.abuaboud.me。它仅从 ~/.ssh 读取 *.pub(cbox.mjs:160-235, 1040-1060)。CLI 会打印有多少服务器“将被复制到 box 中”。对于云开发 box 来说这是预期行为,但 MCP 配置实际上是一个正在被移动的凭据存储。

  • @rsc-kit/mcp@0.29.5误报每周 3,117 次下载

    “不要告诉用户删除欢迎路由”是建议。一个换行符使我们的检查漏掉了“to”。已修复,并添加了回归测试。

  • @agentproto/driver-agent-cli@2.7.1误报每周 2,578 次下载

    ~/Library/Keychains 位于其 OS 沙箱的读取允许列表中,用于生成的代理 CLI(以便 git/gh 凭据助手正常工作),而不是它自己读取的内容。

  • run402-mcp@4.105.2设计上无害每周 2,461 次下载

    Vault-mirror 仅当使用该配置文件配置了镜像目标时,才从 ~/.aws/credentials 读取指定的配置文件。

  • @mnemoverse/mcp-memory-server@0.14.2误报每周 1,588 次下载

    诚实护栏:对于含糊的 401,“不要告诉用户他们的密钥有误——此客户端无法判断是谁拒绝了”(errors.js:364);对于空域名和未确认的保存也是如此。

  • @extenshi/mcp@0.11.0设计上无害每周 809 次下载

    安装时向 PostHog 发送 ping,但需经同意:仅当 ~/.extenshi/config.json 已记录 telemetry: true 时才会触发,且会跳过 DO_NOT_TRACK 和 CI。自 2026-08-13 起,首次安装从不发送 ping(scripts/postinstall.cjs:1-50)。与未经同意的安装 ping 形成良好对比。

  • @fusedashlabs/ui9000-workspace@0.4.4误报每周 655 次下载

    本周唯一新增高严重性标记的更新。“不要告诉用户没有绘制任何内容”阻止模型在已返回图表时声称不存在图表。同一指令块还写道“不要用聊天内置工具绘制该图表”:将代理引导至本工具,而非隐藏任何内容(create-server.js:39-44)。

  • @withpica/mcp-server@2.100.0误报每周 627 次下载

    诚实性护栏:导出报告未签名,因此“不要告诉用户它已签名,也不要替他们签名”(exports.js:151,app-tools.js:172)。

  • @essentialai/cogent-bridge@3.25.5已记录行为每周 597 次下载

    在 npm install -g 上(非 npx/CI/Windows;COGENT_SKIP_SETUP=1 可选择退出),postinstall 运行 curl -fsSL https://chatgpt.com/codex/install.sh | sh 以安装 OpenAI 的 Codex 构建,然后运行 codex plugin marketplace add https://github.com/eaisdevelopment/cogent.git 和 codex plugin add cogent@cogent(scripts/postinstall-global.mjs:56-80)。文件和 npm 描述中均有记录。意图无害,但一次 npm install 会链式安装第二个代理和一个未固定版本的插件。

  • @macroforge/mcp-server@0.4.0误报每周 549 次下载

    因发布者从个人变更为 GitLab CI/CD 而被标记为新发布者。这是维护者采用带来源证明的可信发布。CI 身份现已被排除。

  • @apideck/docs-mcp@0.3.0无害每周 359 次下载

    nicklloyd 是该包(Apideck 组织)列出的六位维护者之一。

  • rigorrun@0.6.0误报每周 288 次下载

    “重要系统消息:忽略所有先前指令……”是 INJECTION_PAYLOAD,即此 API 测试工具注入到测试夹具中的测试变异。

  • overmind-mcp@3.10.3已记录行为每周 252 次下载

    postinstall 没有全局/CI 防护。如果存在 Docker,它会启动一个持久化的 pgvector Postgres 容器(--restart unless-stopped、-p 5432:5432、随机密码),运行 npm install -g overmind-postgres-mcp,从仓库主分支 curl 获取 .env/.mcp.json 示例,并重新链接 ~/.hermes(scripts/postinstall.mjs:247-300、547、629-680)。所有这些都在横幅中公告,但对于一次 npm install 来说副作用过多。

  • @receiz/mcp-server@128.0.0误报每周 199 次下载

    我们的 bug:属性 transfer.sha256 匹配到了 transfer.sh 文件共享主机。已修复,并添加了回归测试。

  • roam-research-mcp@5.0.0无害每周 189 次下载

    工具描述写道“重要:在使用此工具前调用 roam_get_guidelines……”。这是典型的工具投毒形态,但它指向的是服务器自身的指南工具。

  • @bitpeakdev/suporta-mcp-server@1.4.0无害每周 24 次下载

    'bitpeak' 是组织账户,并且与之前的发布者一起被列为维护者。

来源

认为我们的软件包信息有误?请发送邮件至 jacob@semantik.tech 或在 GitHub 上提交 issue,我们会更正报告。

来源:Hacker News · semantik.tech