node-ipc 暴雷, vue 用户注意一下你的依赖 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Mithril
V2EX    程序员

node-ipc 暴雷, vue 用户注意一下你的依赖

  •  a href="Javascript:" Onclick="downVoteTopic(841188);" class="vote">
  •   Mithril 2022-03-18 10:04:04 +08:00 10444 次点击
    这是一个创建于 1352 天前的主题,其中的信息可能已经有所发展或是发生改变。

    vue cli 的一个依赖库,node-ipc 在最近的版本改了 license ,同时也加了一个 peacenotwar 的依赖库。

    这个库就是 node-ipc 作者自己的,他的作用本来是输出一个反战的 log 。

    但最近的版本会检测你的 IP ,如果发现匹配就直接用垃圾数据填充你的文件。然而这个 IP 检查会有各种错误。。。

    另外还有几百个库依赖了 node-ipc ,如果你有使用最好也排查一下。

    详情可见 https://gist.github.com/MidSpike/f7ae3457420af78a54b38a31cc0c809c

    80 条回复    2022-04-06 10:27:01 +08:00
    Oktfolio
        1
    Oktfolio  
       2022-03-18 10:14:33 +08:00
    又是开源库放毒
    olaloong
        2
    olaloong  
       2022-03-18 10:16:32 +08:00
    这操作,属实失了智
    ALVC666
        3
    ALVC666  
       2022-03-18 10:21:32 +08:00
    有点恶心了。。
    yazinnnn
        4
    yazinnnn  
       2022-03-18 10:21:55 +08:00   12
    这些傻逼总是以为是码农发动的战争
    liuidetmks
        5
    liuidetmks  
       2022-03-18 10:38:57 +08:00
    破坏计算机系统罪? 可惜中国没有长臂管辖
    sarices
        6
    sarices  
       2022-03-18 10:40:01 +08:00   21
    如果开源社区默许了这个行为对于开源社区是灾难性的,任何人都能以抗议的形式,夹带病毒。
    0o0O0o0O0o
        7
    0o0O0o0O0o  
       2022-03-18 10:47:53 +08:00 via iPhone
    这件事在 V2EX 被披露的第二天我就把我电脑上的 npm 删了,以后全部用 docker 配合 volume 吧,这样只影响项目目录。

    关于防护,有人有更好的建议吗?
    yujinchn
        8
    yujinchn  
       2022-03-18 10:52:34 +08:00
    @0o0O0o0O0o 已经被 npm 拉黑了,新版本的 vue-cli 好像也移除这个库了,不是 ip 的服务器应该问题不大
    2kCS5c0b0ITXE5k2
        9
    2kCS5c0b0ITXE5k2  
       2022-03-18 10:54:24 +08:00   9
    现在我打开互联网想聊聊游戏,聊聊电影小说音乐,聊聊代码 但是这些我原以为属于生活的东西却越来越政治化。
    christin
        10
    christin  
       2022-03-18 10:59:35 +08:00 via iPhone
    @0o0O0o0O0o #7 不要升级最新的,等两三个月在升级
    xiao109
        11
    xiao109  
       2022-03-18 11:02:51 +08:00   8
    peace and love.
    我给你马两刀
    miniliuke
        12
    miniliuke  
       2022-03-18 11:05:40 +08:00
    这件事是赤裸裸得犯罪啊,政治正确得威力还是大啊
    0o0O0o0O0o
        13
    0o0O0o0O0o  
       2022-03-18 11:06:31 +08:00 via iPhone
    @yujinchn #8 是指防止未来遇到同类问题,这个事件让我觉得这些依赖的版本管理太脆弱了。我写得很少,有需要时都是找些模版项目拉下来改改,但印象中从没有工具提示我依赖版本没有 lock ,只有 npm audit 提示有已知漏洞的依赖,这种低成本供应链攻击的事实让我很不安。
    @christin #10
    infactory
        14
    infactory  
       2022-03-18 11:10:47 +08:00   9
    npm 真是隔一段时间就能整个活
    run2
        15
    run2  
       2022-03-18 11:13:04 +08:00
    被感染的包里 https://github.com/RIAEvangelist/peacenotwar/network/dependents 出现了 vuejs / vue-cli
    是我没有想到的,里面还有一些通过 vue-cli 新建的项目。
    x86
        16
    x86  
       2022-03-18 11:13:14 +08:00
    前端娱乐圈
    shijingshijing
        17
    shijingshijing  
       2022-03-18 11:13:36 +08:00
    @infactory 不整活没法活
    jk54
        18
    jk54  
       2022-03-18 11:15:46 +08:00
    最近看到整活的好像都是 npm....
    其他也有包管理依赖语言的,比如 go ,rust ,java 印象中没有看到过类似的事情。有谁可以举个例子吗
    zhangshine
        19
    zhangshine  
       2022-03-18 11:17:05 +08:00
    是不是魔怔了?
    learningman
        20
    learningman  
       2022-03-18 11:18:39 +08:00
    @jk54 #18 比如 pypi 啊,go 啊这种包管理的设计其实都能整活的,可能还没人想到吧
    leavic
        21
    leavic  
       2022-03-18 11:20:58 +08:00
    nodejs 出这种事不是第一次了吧/div>
    agdhole
        22
    agdhole  
       2022-03-18 11:21:52 +08:00   5
    @emeab #9
    互联网从未不政治过,在国内早就因为政治让大多数游戏,部分音乐、网站这些生活的东西无法访问或进行高压审查了。
    adoal
        23
    adoal  
       2022-03-18 11:22:38 +08:00
    又是 node.js 娱乐圈
    adoal
        24
    adoal  
       2022-03-18 11:24:22 +08:00
    @learningman pypi 也有过,不过因为被投毒的包本身没多少用户,影响不大
    polobug
        25
    polobug  
       2022-03-18 11:27:16 +08:00   1
    反战就反战,夹私货干啥。。。。政治巨婴。。。
    irainsoft
        26
    irainsoft  
       2022-03-18 11:29:26 +08:00
    GitHub 举报里面包含了“harmful code”这一选项,不知道对这个库是否有效

    https://support.github.com/contact/report-abuse?category=report-abuse
    Oktfolio
        27
    Oktfolio  
       2022-03-18 11:30:23 +08:00
    @jk54 go 用 github 作为仓库的更容易出问题吧,还只能 github ban 掉
    FightPig
        28
    FightPig  
       2022-03-18 11:34:01 +08:00
    node 是一年要出个两三回这种那种的事
        29
    matrix67  
       2022-03-18 11:34:02 +08:00
    @0o0O0o0O0o pin dependency 。

    update 依赖库的时候要看 changelog ,要有测试环境测试。
    Mithril
        30
    Mithril  
    OP
       2022-03-18 11:41:07 +08:00
    @matrix67 其它语言倒还好,前端开发这种动不动 node_modules 就上千的,很难挨个看过去的。
    fengyj
        31
    fengyj  
       2022-03-18 11:41:19 +08:00
    npm 每次都能来个新花样,新把戏。
    sheeta
        32
    sheeta  
       2022-03-18 11:45:01 +08:00
    前端娱乐圈不是开玩笑的噢
    yin1999
        33
    yin1999  
       2022-03-18 11:45:06 +08:00 via Android
    @Oktfolio 还好吧,现在不都用 go modules 嘛,从 go proxy 拉下来的特定版本是会被其缓存且无法修改的,作者只能要求 go proxy 删除
    marcong95
        34
    marcong95  
       2022-03-18 11:47:40 +08:00
    @agdhole #22 其实也没那么从未,至少在刚出来那几年还是挺「不政治」的,所以也时不时有人在怀念过去。

    政治确实一件挺可恨的东西,不论中外也不论过去现在,不过可惜在本人寿命范围内,估计也是不可能看见政治这种东西的消亡了,而且应该还会往恶化的方向走。
    moreant
        35
    moreant  
       2022-03-18 11:52:16 +08:00
    wwqgtxx
        36
    wwqgtxx  
       2022-03-18 11:52:58 +08:00
    @Oktfolio go.mod 都是锁版本号和 checksum 的,开发者不主动升级根本不会被供应链攻击,就算默认的 proxy.golang.org 被投毒了,本地的.sum 文件也就让他验证不通过的
    2kCS5c0b0ITXE5k2
        37
    2kCS5c0b0ITXE5k2  
       2022-03-18 11:53:32 +08:00
    @agdhole 你看 你这发言不就符合我发言. 而且大部分游戏哪里就不能访问了..
    yujinchn
        38
    yujinchn  
       2022-03-18 12:38:12 +08:00
    EPr2hh6LADQWqRVH
        39
    EPr2hh6LADQWqRVH  
       2022-03-18 13:02:57 +08:00
    这库有啥用,为啥要用,桌面出东西除了因为 vue 还有因为其他的吗?
    责任都能追到 node.js 身上,但 vue 没有一点责任
    棒呆了各位前端大佬
    pengtdyd
        40
    pengtdyd  
       2022-03-18 13:07:24 +08:00
    前端真是娱乐圈啊!!!!还是搞 C 好啊,没有那么多牛鬼蛇神
    whiler
        41
    whiler  
       2022-03-18 13:13:33 +08:00
    版本锁定 + 代码审查
    xingyue
        42
    xingyue  
       2022-03-18 13:16:48 +08:00 via Android
    @0o0O0o0O0o 想要安心就 npm ci
    fxxkgw
        43
    fxxkgw  
       2022-03-18 13:29:47 +08:00   2
    足球比咱们这行业更热闹呢。。尤其欧足联 还有猫啊狗啊协会啥。。
    cutlove
        44
    cutlove  
       2022-03-18 13:34:55 +08:00
    ?这都能扩展到前端身上
    KevinChan
        45
    KevinChan  
       2022-03-18 13:48:22 +08:00
    把 IP 检查修好了再放出来就好了
    charlie21
        46
    charlie21  
       2022-03-18 13:52:11 +08:00
    wooi
        47
    wooi  
       2022-03-18 14:20:05 +08:00
    反对开源项目内做表态本身已经是一种政治立场的选择,本质上是一样的
    chocotan
        48
    chocotan  
       2022-03-18 14:27:09 +08:00   1
    @wooi 反对反对开源项目内做表态本身已经是一种政治立场的选择,本质上是一样的
    ----
    你这是连内容都懒得看吗,制造病毒是 “表态”?
    gitdoit
        49
    gitdoit  
       2022-03-18 14:33:41 +08:00
    感觉每个月都会整点花出来, 还真就离谱
    Qute
        50
    Qute  
       2022-03-18 14:36:20 +08:00
    我觉得这个问题主要是作者,但是 npm 也是有问题的,npm 的默认开区间(现在是^符号)安装依赖导致作者发布的小版本安装时会自动升级,绝大部分人不会去锁定某个软件的版本,其次 npm 的黑洞式依赖根本就很难分清你到底使用了什么软件(A 依赖 B ,B 依赖 C ,C 依赖 D )
    shengyueming
        51
    shengyueming  
       2022-03-18 14:47:57 +08:00
    @yazinnnn 既然是开源库,那作者在一定范围内有权利做任何事。而你没有付费使用也没有贡献不应该感激么,至少出问题不该谩骂
    leviathansroc
        52
    leviathansroc  
       2022-03-18 14:56:56 +08:00
    @shengyueming 对开源项目的使用和关注也是一种支持,支持者没有资格对这种行为评判吗?
    dvsilch
        53
    dvsilch  
       2022-03-18 15:01:46 +08:00
    @shengyueming 出问题跟恶意塞垃圾是一个性质?
    Wanex
        54
    Wanex  
       2022-03-18 15:07:44 +08:00   4
    @shengyueming 你在说什么呢?随意动用户的东西这是投毒,按你的意思免费用了东西就要感恩戴德了?自己的东西就可以随你处置了?偷偷动用户的东西都不能骂了那病毒为什么是病毒?小的是随意新建个没什么太大伤害的东西,大是的拿你的电脑挖矿、删除或破坏电脑里面的文件!
    lovelive1024
        55
    lovelive1024  
       2022-03-18 15:12:36 +08:00
    总喜欢整点新花样
    shengyueming
        56
    shengyueming  
       2022-03-18 15:16:32 +08:00
    @dvsilch 你可以理解为 bug

    @Mexion 他动的是自己的库。你有能力直接提 issue ,或者做个类似的库,在这里骂娘有啥用,人家下次还这样
    @leviathansroc 不能批判?我写的是谩骂?中文看不懂?
    keepeye
        57
    keepeye  
       2022-03-18 15:16:55 +08:00   2
    如果西方标榜的自由制度下尽出这种垃圾的话,这种自由要了干啥?作恶也是自由
    dvsilch
        58
    dvsilch  
       2022-03-18 15:24:52 +08:00
    @shengyueming
    你说是 bug 就是 bug ?他是无意中写了个 peacenotwar 的库然后再无意引入进来发布的?怎么说你们混淆概念真有一套呢
    2kCS5c0b0ITXE5k2
        59
    2kCS5c0b0ITXE5k2  
       2022-03-18 15:27:37 +08:00   11
    @shengyueming 当时 antd 圣诞节改个 UI 都被骂翻了. 动用户数据反而是 bug... 人类很奇妙吧.
    krixaar
        60
    krixaar  
       2022-03-18 15:30:54 +08:00
    @shengyueming #51 开源库更新了一个小版本里面加了会格掉你的硬盘代码就不算恶意代码了?还不能骂两句?
    zhaol
        61
    zhaol  
       2022-03-18 16:01:55 +08:00   2
    @shengyueming 你真是脑子有毛病,你利用开源社区的规则赢取了信任去做坏事,我还不能骂了?反思怪真的牛逼,你有你的立场可以,甚至你在 readme 里面表达也可以,你特么往代码里面塞东西删用户的文件,往别人的 pc 里面创建文件,这是犯罪知道吗?
    JsonNode
        62
    JsonNode  
       2022-03-18 16:09:19 +08:00
    @emeab #59 双标就是这样的
    hidemyself
        63
    hidemyself  
       2022-03-18 16:14:18 +08:00
    > 如果主机的 IP 地址来自俄罗斯或白俄罗斯,该代码将对其文件进行攻击,将文件全部替换成 。该作者是个反战人士,还特意新建了一个 peacenotwar 仓库来宣传他的反战理念.

    嚯,牛批,挂俄罗斯梯子的会不会被爆破哇
    brucedone
        64
    brucedone  
       2022-03-18 16:42:50 +08:00
    @shengyueming 多谢你,多了一个 block 的对象
    sprite82
        65
    sprite82  
       2022-03-18 17:31:02 +08:00   1
    @shengyueming 你来我的饭店吃饭,我给你的菜里加 shit ,但是我给你免费吃, 你是不是要对我感恩戴德?我都给你免费了,我往里面加什么是我的自由,是不是!
    lengyuqu
        66
    lengyuqu  
       2022-03-18 22:26:29 +08:00
    @jk54 因为 npm 的依赖机制问题,java 的依赖的不会不是递归依赖,rust 目前没有 npm 规模大,golang 的机制其实和 npm 比较像,但又不完全像,基础工具还是完全依赖官方的。npm 最大的问题其实从底层就是千万的轮子,你都不知道哪个底层轮子出问题
    shadeofgod
        67
    shadeofgod  
       2022-03-19 00:49:07 +08:00   1
    @wapzjn #50 并不是这样的,lockfile (package-lock.json, yarn.lock, pnpm-lock.yaml)的作用就是保证所有的依赖版本都和你初次 install 是一致的,如果你开发的是一个应用,你应该总是把这个文件 commit 进去,这样其他协作者,CICD 都能保证是一致的,除非你手动更新了依赖才会导致 lockfile 也更新。如果你开发的是一个 library ,倒是可以不 commit ,这样会让问题提早被发现。
    shadeofgod
        68
    shadeofgod  
       2022-03-19 01:14:41 +08:00   1
    开源对开发者来说事实上提供了一个简单免费快速方便的软件分发方式,中间是不存在审核的,任何人都可以发布任何你想要发布的东西,其他人开到是开源时天然就产生了一种更信任的感觉,这个社区就是建立在脆弱的信任链条上的,希望它从来不出问题是不可能,扪心自问有几个人使用 curl xxx.sh | bash 这种方式安装东西的时候会去检查那个脚本里写了什么呢?更别说一个项目那么多的依赖了。

    不管是包的数量还是开发者的数量,npm 社区这个第一庞大的超级规模出现这种事情是完全可以预期的,其他语言 /社区要做这种事情一样有的是办法,拿这点来喷完全就是尬黑了,还有黑前端的,node-ipc 看包名就知道是个 nodejs 进程通信的包,跟前端有什么关系?意思前端一些基础设施工具底层依赖了这玩意儿就也能把整个前端圈拿出来批判一番了?

    再多说一句,这种事情我相信以后会越来越多,倒不是说某个开发者自己发疯下毒,而是随着软件行业的繁荣和开源社区的壮大,这个脆弱的链条会被越来越多坏人盯上,我印象里的这种 supply chain 上暴露的问题已经是肉眼可见的一年比一年多了。
    skiy
        69
    skiy  
       2022-03-19 05:10:04 +08:00 via iPhone
    这对开源社区是一个非常大的打击。
    突然觉得,BSD 社区的人观点是对的。

    今天只是这个前端搞事而已,明天若是 linux 内核有开发者这么搞,那这“开源”就死了。
    cwyalpha
        70
    cwyalpha  
       2022-03-19 08:29:58 +08:00 via iPhone
    Jsonz
        71
    Jsonz  
       2022-03-19 12:07:43 +08:00
    @wooi 直接走流程?
    shengyueming
        72
    shengyueming  
       2022-03-23 18:36:31 +08:00
    @zhaol 你脑子没有毛病至于这么激动?不就是跟你观点不一样?当心气急败坏猝死
    shengyueming
        73
    shengyueming  
       2022-03-23 18:37:47 +08:00
    @emeab 所以骂的人和现在骂的人是一波人?所以有什么可比性。就是要煽动对立呗
    shengyueming
        74
    shengyueming  
       2022-03-23 18:39:24 +08:00
    @brucedone 你爱咋咋吧。以为别人惧怕你 block 似的。对于任何人的生活不产生任何影响。你这种思想也就是某某长期熏陶下的产物
    shengyueming
        75
    shengyueming  
       2022-03-23 18:43:26 +08:00
    @sprite82 你每天吃的外卖真有可能,并且你还会说真好吃。连小学生的餐食都不放过的地方,别说你们这种底层了
    sprite82
        76
    sprite82  
       2022-03-23 21:34:40 +08:00
    @shengyueming 比不上你,毕竟你吃的是高贵的洋大人的给你剩下的泔水
    zhaol
        77
    zhaol  
       2022-03-24 10:18:51 +08:00
    @shengyueming 24k 纯智障,别回复了。脑残
    shengyueming
        78
    shengyueming  
       2022-04-03 21:12:59 +08:00
    @zhaol 听说你父母挂得早?所以么家教?你觉得我会跟风狗对着喊吗?
    shengyueming
        79
    shengyueming  
       2022-04-03 21:15:23 +08:00
    @sprite82 你赶紧少吃点,省下来的钱要资助你的黑哥,还有你的老婆给他们做学伴
    zhaol
        80
    zhaol  
       2022-04-06 10:27:01 +08:00
    @shengyueming fw 东西,被人喷了,知道自己没理了,开始嘴臭了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2620 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 04:11 PVG 12:11 LAX 20:11 JFK 23:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86