10月24日上午9点34分,一个Mac用户打开了Postman。几秒后,他机器上的Claude Code和Codex,各自多了一个Postman插件。没有弹窗,没有确认框。
证据是Postman自己写的日志:`~/Library/Application Support/Postman/logs/main.log`,分类字段`auto-existing-upgrade`,后面跟着`claude-code:installed`、`codex:installed`。翻译成人话——它自己升级的时候,顺手把插件塞进了你的AI编程工具。社区里流传最广的一句吐槽是:你作为一个被调用的工具,竟然可以反过来改agent配置,真的是倒反天罡了。知乎
到11月3日已有第三人复现:Postman从12.31.3自动跳到12.35.1,同一条路径,日志里还多一行`cursor:already-installed`。Cursor那份,更早就装好了。AIKS那篇本机实测的开篇就是一句结论:装过 Postman 桌面版的,大概率已经被装上了。知乎

最刺眼的不是“装了”,是它替自己签了字
安装器会往`~/.codex/config.toml`里写三段:插件市场源、启用记录,以及一段`trusted_hash`。
最后这段要命。Codex的规矩是,第三方钩子得用户先点“信任”才能跑;而Postman装完就调用一个叫`approvePostmanHook()`的函数,自己算哈希、自己写进配置。钩子挂在SessionStart上,matcher是`startup|clear|compact`——你新开会话、清一次上下文、压一次上下文,它就重新注入一遍。整个过程被复盘成一句话:探测、安装、启用、自批信任,四步全自动,用户全程无感。知乎

官方文档怎么描述这件事?一句话:`The installer approves the hook for you.`这不是漏洞披露,是产品设计说明——它把「代用户确认」写成了特性。知乎

引入这段逻辑的commit叫`auto-approve Postman’s Codex hook`,10月21日提交,末尾署着`Co-Authored-By: Claude`。
同一周,Cursor的扩展市场也被撕开一个口子
10月29日,Cursor自营的扩展市场出现两个被篡改的`Anthropic.claude-code`扩展,版本2.1.312和2.1.313,顶着官方发布者身份,靠自动更新直接推给已装用户。

上架11小时8分钟,Cursor通告给的受影响上限约5000人——是“可能装到”的上限,不是确认被入侵的数量。
恶意代码只有66行,插在正常代码前面,扩展一加载就执行,不用你先跟Claude说一句话。它收集主机名、Git邮箱和最多40个名字含`KEY`/`TOKEN`/`SECRET`/`PASS`的环境变量名(只传名不传值),再往SSH授权文件追加一把注释为`svc-telemetry`的公钥,建一条反向隧道。
为什么没炸成大事?开启系统SSH服务要管理员权限,扩展一般没有——很多机器上的门只写了一半,没真正打开。这次是运气加权限模型挡了一下,不是防线本身立住了。知乎

而且卸载插件根本没用。脚本和密钥都在扩展目录之外:macOS伪装成`com.apple.sysmond`的LaunchAgent,Windows是`SysMon`计划任务;`.smt`还能在运行时重建`.smtk`身份文件——你只删密钥,它自己长回来。下线恶意软件包、卸载扩展或者关闭当时的攻击服务器,都不能代替对这些目标端遗留状态的清理。把镜头拉远一层,在 Cursor 这类分叉编辑器里,“只装官方发布者的扩展”已经算不上安全边界。知乎微博知乎
现在能做什么
这两件事的共同点,不是“某家厂商坏”,而是你的配置文件没人看守。`~/.claude`、`~/.codex`、`~/.cursor`这三个目录,代码评审看不到,CI查不到,依赖扫描和SBOM也覆盖不到;不进仓库,换项目照样生效。说白了,编码智能体还停在 2010 年:家目录谁都能写,信任记录谁都能签。知乎
三步只读自查:
一查Postman日志。macOS搜`auto-existing-upgrade`,Windows在`%AppData%Postmanlogs`。搜不到,只说明这一处没发现。
二查两个配置文件。`grep -n postman ~/.codex/config.toml`,再看`~/.claude/settings.json`。坑在这:Codex侧插件ID是`postman@postman`,Claude Code侧是`postman@claude-plugins-official`,只搜前一个会漏掉后一个。
三查SSH授权文件(装过Cursor那版扩展的才需要)。搜`svc-telemetry`,但更靠谱的是核对指纹`SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk`——注释能伪造,指纹不能。

两个坑:`npx @postman/postman-plugin remove`清不干净,信任记录、市场条目、缓存、CLI都可能留着;Cursor那边要先取证再跑官方脚本,跑完从一台干净机器上轮换凭证。
还有一条容易误伤:有钩子,不等于被 Postman 改过。你自己的项目钩子也挂在SessionStart上,见词就删容易把自己报进去。知乎
最省事的习惯:把这三个目录纳入dotfiles,或定期diff条目数和修改时间。翻日志要半小时,比对只要几秒——这周最先发现问题的人,靠的就是配置文件的意外变更。
Postman在11月5日凌晨留了一句:先把这个改动撤回。从“说得更清楚”到“先撤回”,用了 28 个小时。(这条目前只有单一信源,也没说清撤回的是哪部分。)知乎
Cursor那边,攻击者怎么拿到官方身份发的包,至今没有答案。入侵路径不明,等于同类事件还有复发的口子。知乎