WITH-LOVE-FROM-AMERICA
WITH-LOVE-FROM-AMERICA

正当 315 实况各种黑心企业时,前端娱乐圈发生了一件大事,很多人使用 vue-cli 的开发者发现打包时桌面上凭空多了一个 WITH-LOVE-FROM-AMERICA.txt 文本文档,其内容为空。

其实这是 nodejs 生态的一次 CVE,只是恰好被前端发现。因为后端开发者们都是用容器,在容器的家目录创建一个文本文件可能压根没人知道。

§起源

github 用户 RIAEvangelist 开发并维护一个名为 node-ipc 的 nodejs 包,同时开发并维护一个 peacenotwar 的 nodejs 包。

RIAEvangelist 于 node-ipc 中加入 peacenotwar 的依赖,其作用是当使用者的 IP 地址来源是俄罗斯或白俄罗斯时,将使用爱心图标 ❤️ 填充任意文件内容,也就是完全典型的计算机病毒行为。

其性质比江民杀毒软件的盗版硬盘锁更为恶劣,起码江民杀毒软件锁了硬盘之后不会破坏数据,找专业人士解锁后即可恢复正常。

而此次 npm 包投毒则因为现在绝大部分设备使用的是固态驱动器,从原理上就不具备可行的数据恢复方法,如果受到损失只能自认倒霉;例如 peacenotwar #45,一名自称是美国非政府组织的人士投诉,此次投毒破坏了他们针对人权方面做出的努力,而 RIAEvangelist 则只是提醒其下次注意。

而更有意思的是,RIAEvangelist 用于识别 IP 来源的供应商接口将乌克兰也识别成了俄罗斯,导致不少乌克兰开发者受到损失,他意识到问题所在后移除了填充文件内容的病毒行为,改为创建一个 WITH-LOVE-FROM-AMERICA.txt 文本文档。

§现在

其实主要的事情在此时就结束了,但是好巧不巧 vue-cli 更新了其 node-ipc 依赖包,引入了投毒的版本,于是前端再次爆发关于此事的讨论。

github 用户 MidSpike 发表了其对此次事件的调查,通过分析 peacenotwar 包的多个版本,给出了上文的事实结论。

并且在 MidSpike 质问 RIAEvangelist 为何要破坏开源生态时,两者进行了长达几百楼的辩论,最终 RIAEvangelist 选择移除所有对其不利的 issue,关闭整个仓库的 issue 创建权限。

github 最终对此发布了一个 CVE 并被美国国家漏洞数据库收录,病毒作者 RIAEvangelist 也受到其相应的后果(据称他被公司开除,以后也不可能有企业和组织再招入,只能去国家部门了)。

§以后

这次的事件虽然没有影响到我,但还是要敲响警钟。

  • 开源并不意味着安全,所谓开源代码有很多人审核,是一个笑话
  • 从美国法律角度来说,RIAEvangelist 的行为没有任何问题,遭受损失的开发者只能自己认栽,所以美国人写的开源代码应慎重引用
  • 代码是有国界的,开源是有政治的
作者
ragnaroks
发布时间
2022-04-23
创作协议