V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ssltest
V2EX  ›  推广

开源无国界? vue-cli、node-ipc 被投毒事件分析

  •  
  •   ssltest · 2022-03-16 20:39:21 +08:00 · 2006 次点击
    这是一个创建于 743 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简述

    近日我们监测到 Vue.js 生态中的 vue-cli 包遭遇供应链投毒,而被投毒的 node-ipc 包在 npm 上每周下载量超百万,影响非常广泛。

    被投毒的情况如下:

    • vue-cli 是 Vue.js 开发的标准工具,该工具被广泛应用于 vue 的快速开发

    • 其依赖的 node-ipc 是用于本地和远程进程间通信的一个 js 模块,也用于支持 linux ,windows ,mac 等系统中的 socket 通信。

    • node-ipc 包的作者近期在 node-ipc 的 10.1.1-10.1.2 版本添加了恶意 JS ,该 JS 会修改俄罗斯和白俄罗斯用户的所有文件为❤️,但不到 24 小时后又删除该恶意 JS ,添加会在用户桌面创建反战宣传标语的 peacenotwar 模块。vuejs 的团队在发现 node-ipc 添加了 peacenotwar 模块后锁定了 vue-cli 依赖的 node-ipc 版本为 9.2.1 ,研究人员随后又发现 node-ipc 的作者此前添加的恶意 JS 存在于 node-ipc 旧版本中。

    (问题组件每周下载量截图)

    事件时间线

    3 月 7 号

    开发者 RIAEvangelist 在 node-ipc 包中添加名为 ssl-geospec.js 的恶意 JS 文件,将 node-ipc 的版本号更新为 10.1.1

    3 月 8 号

    删除 ssl-geospec.js 该文件,版本号更新为 10.1.3

    3 月 9 号

    开发者 RIAEvangelist 在 node-ipc 包中添加peacenotwar模块,该模块会在桌面静默添加反战宣传文件

    3 月 15 号

    有开发者在论坛中反馈构建过程中发现被创建反战标语文件

    3 月 15 号

    Vue-cli 发布5.0.3版本,在新版本中锁定 vue-cli 依赖的 node-ipc 版本为 9.2.1

    研究人员分析发现 node-ipc 的作者不只添加了反战标语,还在旧版本 10.1.1-10.1.2 中添加了恶意 JS 文件删除俄罗斯和白俄罗斯用户文件

    3 月 16 号

    当前 npm 已禁止下载包含 peacenotwar 模块的版本,并提示:npm ERR! 451 Unavailable For Legal Reasons

    vue 的开发者 sodatea 针对此事件的回应如下:

    1. node-ipc 9.2.2 增加 peacenotwar 模块,该模块会在未经用户同意的情况下写入 WITH-LOVE-FROM-AMERICA.txt 用户的 Desktop 和 OneDrive 文件夹。

    2. vue-cli 已经发布了 4.5.16 和 5.0.3 来锁定依赖版本。

    3. 受影响的用户:在 2022-03-15T05:40:26.758Z 和 2022-03-15T13:17:57.076Z ;期间创建的新项目或者更新了项目依赖的人。

    4. 从俄罗斯和白俄罗斯 IP 删除文件的恶意代码不包含在 9.2.2 版本中

    恶意代码分析

    我们针对 node-ipc 包中使用的恶意 js 文件进行分析,可以看到多处使用 base64 编码对行为意图进行隐藏

    远程 API 地址解码为: https://api.ipgeolocation.io/ipgeo?apiKey=ae511e1627824a968aaaa758a5309154

    使用 https 加载远程 API

    解密后的字符串,可以看出 c 为国家,e 为俄罗斯,i 为白俄罗斯,其他为文件路径

    判断是否为俄罗斯或白俄罗斯,将结果注册为 a

    如果是则执行 h 函数

    h 函数递归爬取指定目录,将所传入的路径中的文件替换为 base64 编码的 4p2k77iP ,而其解码后为❤️

    针对企业的一点建议

    开源不等于可信,企业需要针对软件供应链建立动态管理机制,及时发现并响应其中可能的风险。

    漏洞检测及修复

    关于该漏洞的检测策略已在墨菲安全的所有工具产品中上线,您可以免费安装使用墨菲安全的 JetBrains IDE 插件、CLI 客户端等对你的项目进行检测,并一键修复。

    产品邀请注册: https://www.murphysec.com/register?invite_code=onkXXo

    开源仓库: https://github.com/murphysecurity

    如果你觉得这个工具对你有用,可以 star 、提 issues 或者参与贡献,我们会挑选一个参与贡献的用户送出机械键盘一份。

    参考链接

    Vitta
        1
    Vitta  
       2022-03-16 20:44:03 +08:00
    好家伙
    villivateur
        2
    villivateur  
       2022-03-16 20:56:12 +08:00 via Android   ❤️ 1
    好家伙,发推广吧 @Livid
    Livid
        3
    Livid  
    MOD
       2022-03-16 20:58:09 +08:00
    @villivateur 谢谢。这个主题已经被移动。
    ssltest
        4
    ssltest  
    OP
       2022-03-16 21:07:59 +08:00
    不好意思 发错节点了 下次注意
    @Livid
    MiketsuSmasher
        5
    MiketsuSmasher  
       2022-03-18 09:44:49 +08:00
    @ssltest 请问可以转载你的这篇帖子吗?
    ssltest
        6
    ssltest  
    OP
       2022-03-21 13:27:52 +08:00
    @MiketsuSmasher 可以啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1742 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:37 · PVG 00:37 · LAX 09:37 · JFK 12:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.