Node-ipc最近闹出了个大动静,他们在一个大家都在用的NPM包里塞了点东西,短短几个小时就上了安全头条。事情是这样的,这个包里有一段代码,只要发现IP地址是俄罗斯的,就会用心形表情符把文件内容给覆盖掉,还附上一段政治立场声明。CVE-2022-23812这一漏洞拿了CVSS满分10分里的9.8分,危险程度挺高。 后来开发团队觉得这事儿可能会惹上法律麻烦,赶紧把旧逻辑删掉了。不到4个小时就发布了11.0.0版本,这回他们换了个新招,引入了一个叫peacenotwar的依赖模块。这个模块也是同一个人搞的,主要就是在STDOUT上打印一段立场声明,顺便在桌面上生成一份“和平宣言”。虽说看起来温和点了,但还是把政治信息硬塞给用户。 最新的11.1.0版终于把这些输出给关了,还给peacenotwar升级到了9.1.5。这次还顺手绑了个colors库美化控制台输出。表面看好像平静了,但实际上社区里早就炸开锅了。这种传递依赖的方式太危险了,一次看似闹着玩的抗议,就能让几百万用户被迫运行未知代码,供应链上的每个环节都暴露在风险下。 这次事件跟传统黑客攻击不太一样,但也给我们敲响了警钟。政治化开发容易触犯法律、损害品牌甚至成攻击载体。高频小版本更新让维护成本飙升。一个被广泛使用的小包里任何插件都可能成放大器。开源本来是为了共享协作,但也让全球开发者都有机会动手脚。 当抗议、偏见或恶意借开源之名横行时,供应链每个环节都可能是爆点。Node-ipc这个“心形炸弹”可能只是个开始,真正的挑战在于如何在保持开放的同时把政治、偏见和安全风险彻底隔离。