作者在 NPM 包里放了死循环。如果你的项目有直接或者间接引用的话,很可能会挂掉。 https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/
项目的依赖管理还是要谨慎一些,特别是当不指定具体版本号的时候,一旦更新很可能会炸掉。
NPM 这种动不动几百上千个依赖的,真要认真管起来的话简直是噩梦。
![]() | 1 yuthelloworld 2022-01-10 09:41:10 +08:00 无语了 |
![]() | 2 sadfQED2 2022-01-10 09:42:15 +08:00 via Android ![]() 这就属于作恶了 |
![]() | 3 Rrrrrr 2022-01-10 09:43:15 +08:00 via iPhone npm 不能锁包真的…… |
4 anonydmer 2022-01-10 09:44:29 +08:00 每年都要看几个 npm 的瓜,前端故事就是多啊 /狗头 |
![]() | 5 FightPig 2022-01-10 09:45:05 +08:00 npm 的瓜一直没停过 |
![]() | 6 x86 2022-01-10 09:47:31 +08:00 ![]() 前端娱乐圈就开始整活了 |
![]() | 7 stkstkss 2022-01-10 09:51:02 +08:00 via iPhone 把 package 依赖里面版本号前面的^去掉 |
![]() | 8 cweijan 2022-01-10 09:51:24 +08:00 才知道这个 faker.js 的作者也是 colors 的作者, 这个周下载两千万, 牛 |
9 Mithril OP @stkstkss 麻烦的在于间接引用,你也不知道你哪个依赖库就引了它进来。。。。 最好搜一下 node_modules 看看 |
![]() | 10 vone 2022-01-10 10:00:40 +08:00 ![]() |
11 chenmobuys 2022-01-10 10:04:43 +08:00 可以说是前端自己一手造成的,依赖的太多太深了,导致别人删除一个库,全崩了 |
![]() | 12 aboat365 2022-01-10 10:05:23 +08:00 发生什么事了,报复社会? |
![]() | 13 7gugu 2022-01-10 10:06:53 +08:00 之前是不让大公司白嫖,现在做这种事情就是恶心同行人了啊! |
![]() | 14 wonderfulcxm 2022-01-10 10:08:03 +08:00 via iPhone 这他喵的这个包管理机制就有问题 |
![]() | 15 wu67 2022-01-10 10:09:16 +08:00 @wonderfulcxm 本来就是个沉重的历史包袱 hhh |
![]() | 16 binux 2022-01-10 10:11:04 +08:00 ![]() project owner 有向自己的项目提交任何内容的自由 |
17 SummerDruid 2022-01-10 10:11:35 +08:00 ![]() 想起来一句中二名台词:“让世界感受痛楚” |
![]() | 18 U7Q5tLAex2FI0o0g 2022-01-10 10:13:28 +08:00 ![]() 贵圈真乱( doge |
![]() | 20 hpuchenkai 2022-01-10 10:18:02 +08:00 吓得我看了下项目,还好用的是 chalk |
![]() | 21 Pastsong 2022-01-10 10:23:08 +08:00 所以依赖版本记得用 fixed-version |
![]() | 22 SingeeKing PRO ![]() |
![]() | 23 paoqi2048 2022-01-10 10:26:33 +08:00 看来是为了引起更多人的注意 |
24 yangzzzzzz 2022-01-10 10:27:21 +08:00 @proger 分号那个是格式化问题吧 应该是下面那个 i%333 |
![]() | 25 IsaacYoung 2022-01-10 10:30:39 +08:00 via iPhone 娱乐圈 |
![]() | 26 crs0910 2022-01-10 10:35:06 +08:00 via iPhone |
![]() | 27 Dockerfile 2022-01-10 10:37:10 +08:00 ![]() @crs0910 谁说作者被 github 封号了啊 |
![]() | 28 vone 2022-01-10 10:38:07 +08:00 ![]() @proger 原来 for 循环括号前面的分号属于语法错误,会导致程序直接挂掉,他那个 "Fix bug" 提交修复的是语法报错,死循环仍然存在。 (修复的是不能正常死循环的 bug ,所以这个提交仍然是个恶作剧) |
![]() | 29 Henry007 2022-01-10 10:38:46 +08:00 贵圈真乱啊 |
![]() | 30 nojsja 2022-01-10 10:38:56 +08:00 suspend 应该是账户暂停的状态 |
31 alexkkaa 2022-01-10 10:40:04 +08:00 via Android 作者好像家里失火失去财产 又被调查是否制造 boom 自己又受了伤 我猜他现在也找不到工作 用爱发电持续不下去了 |
![]() | 32 Biwood 2022-01-10 10:44:25 +08:00 ![]() 不觉得乱,也不觉得作恶,支持作者,话说 npm 体系现在才出现问题吗,那说明社区的自律性已经很强了 |
![]() | 34 Kasumi20 2022-01-10 10:52:15 +08:00 |
![]() | 35 chuyik 2022-01-10 10:53:00 +08:00 今天就中招了,还好只是跑了个 demo |
![]() | 36 mywaiting 2022-01-10 10:54:44 +08:00 ![]() 感觉会有一个很值得思辨(撕逼)的问题: 我个人开源提交到 NPM 的包(被无数引用的包),是否还属于我个人? 如果不属于我个人,这个包属于谁? 如果不属于我个人,那么这个为啥是我提交以及开源维护? ~~~ 抛砖引玉 ~~~ |
37 wsseo 2022-01-10 10:55:07 +08:00 开始整活 |
38 SummerDruid 2022-01-10 10:58:00 +08:00 ![]() @Biwood 前几年就出过一次事故了。当时有个老哥 Azer 写了个叫 kik 的模块,结果和某家公司的产品重名了被发律师函威胁,Azer 老哥不答应,然后这家公司直接找 npm 公司处理,npm 直接不经这个作者的同意,擅自把这个 kik 包的权限转移给了这个公司,Azer 老哥一怒之下把所有自己写的 npm 包 unpublish 了,结果其中有个叫 left-pad 的模块被广泛使用,导致 Babel 、ReactNative 等大量工具构建失败,npm 公司最后赶忙灭火强制恢复了这个 leftpad 模块,而且还是不道歉,最后这件事貌似也就这么不了了之了。 |
39 meteor957 2022-01-10 11:11:04 +08:00 娱乐圈名不虚传 |
![]() | 40 U7Q5tLAex2FI0o0g 2022-01-10 11:18:26 +08:00 @SummerDruid #38 不懂就问,npm 的包名不包含作者名字吗,比如 user1/kik user2/kik company1/kik ,所以 npm 库里只允许存在一个 kik 么,太先进了,太牛逼了,瑞思拜 |
42 SummerDruid 2022-01-10 11:29:01 +08:00 @littleylv 没错,就是你想的那样,npm 不使用你提及的作者名 /模块名的方式定位唯一模块,也不像 Maven 一样有 group 和 artifact 双重命名,它的包名唯一且先到先得。 |
43 ccppgo 2022-01-10 11:33:00 +08:00 难怪别人都说前端娱乐圈 |
![]() | 44 jasonkayzk 2022-01-10 11:33:47 +08:00 ![]() 刚开始搞前端的时候就感觉 npm 这个东西迟早会出问题… |
![]() | 45 coderluan 2022-01-10 11:35:36 +08:00 ![]() 之前很多人说当事人开源了就要做好心里准备,那么现在同样的之后用开源代码的人也要做好心里准备,Fair Play. |
![]() | 46 ykk 2022-01-10 11:40:26 +08:00 ![]() 心理准备 |
47 hengyunabc 2022-01-10 11:41:55 +08:00 ![]() 所以拿到 npm 项目,第一时间把版本号全改为固定的,不然过几个月还能不能 build 就看烧高香了。 没有办法理解为什么 npm 这么喜欢所谓的版本自动升级,这个不是把性命交别人手上么。 |
![]() | 48 hahastudio 2022-01-10 11:42:09 +08:00 现在 npm 在我看来就是用对代码的控制来换取开发的便捷 也许再出几个这样的事件,风险收益比就不行了 |
![]() | 50 vanton 2022-01-10 11:49:03 +08:00 支持作者,前端真乱。 |
51 NCZkevin 2022-01-10 11:54:24 +08:00 @alexkkaa 看 github 评论里有说是作者本人在家里搞事情,结果把家给弄起火了,然后在推上乞讨。 https://github.com/Marak/colors.js/commit/074a0f8ed0c31c35d13d28632bd8a049ff136fb6 这是我见过的 commit 里最长的楼,节目效果太强了 |
![]() | 52 Wincer 2022-01-10 11:57:36 +08:00 @Jwyt #27 他自己在推上说的被 GitHub 冻结了,https://twitter.com/marak/status/1479200803948830724 |
54 stevenhawking 2022-01-10 12:02:52 +08:00 以后开源项目都得提供一个 reputation score, 低信誉的人的项目, GitHub 、Npm 等社区和工具不予以推广. |
![]() | 55 starrys 2022-01-10 12:24:20 +08:00 哟,原来 npm 已经被 GitHub 收购了。 来源: https://www.npmjs.com/about npm, Inc. is a company founded in 2014, and was acquired by GitHub in 2020. npm is a critical part of the Javascript community and helps support one of the largest developer ecosystems in the world. |
56 123jiayue 2022-01-10 12:24:39 +08:00 via iPhone 为什么做这种降低自己信誉的事 难到以后不干这行了 |
![]() | 57 ncepuzs 2022-01-10 12:26:24 +08:00 贵圈真乱 |
58 acdfjelxe 2022-01-10 12:38:17 +08:00 @SummerDruid 神罗天征 |
![]() | 60 abersheeran 2022-01-10 12:50:04 +08:00 ![]() 开源运动作为地球上唯一一个还在运作的共产主义运动,现在看来无疑是失败的。在没有消灭资产阶级之前,一切所谓的国际主义、共产主义都只是在剥削同为无产阶级的人为资产阶级打工罢了。 |
![]() | 61 dianso 2022-01-10 12:50:48 +08:00 作者网上要钱要了一段时间了,没人给钱,气得慌,凭什么你们都用我的项目赚钱,给你们个教训。 |
62 forgottencoast 2022-01-10 13:07:43 +08:00 @123jiayue 大部分人知道他是谁吗? 他下次只要换个 Id 在发布,只要东西好一堆人用。 |
63 daimubai 2022-01-10 13:16:09 +08:00 @yangzzzzzz 应该是是 Infinity ,在 js 中表示无穷大的意思,下面那个 i%333不影响 |
64 WeiShenMe 2022-01-10 13:18:03 +08:00 支持作者 |
![]() | 65 linora 2022-01-10 13:19:10 +08:00 贵圈真乱 |
![]() | 67 ryh 2022-01-10 13:28:02 +08:00 其实其他的包依赖一样会出这样的事,Go / Swift 这种依赖 GitHub 的也很危险,决定从今天起依赖全部 fork |
![]() | 68 qyzxgl 2022-01-10 13:32:52 +08:00 ![]() 支持作者,资本家 |
![]() | 69 Dockerfile 2022-01-10 13:33:12 +08:00 @Wincer github 还有这种操作的吗,见识到了 |
70 liaohongxing 2022-01-10 13:37:42 +08:00 ![]() |
![]() | 71 bwangel 2022-01-10 13:48:55 +08:00 傻逼才做开源 |
![]() | 72 wu67 2022-01-10 13:48:59 +08:00 @ryh 别的不太清楚, 前端的 fork 不过来的, package.json 里面可能只写了 20 来个依赖, 但是依赖的包他也是有各种依赖的, 然后树形遍历套娃, 最好整个 node_module 里面的依赖可能有几百上千个... |
![]() | 74 yunyuyuan 2022-01-10 14:05:44 +08:00 支持作者 |
75 paopjian 2022-01-10 14:16:30 +08:00 一袋米要扛几楼 |
![]() | 76 daquandiao2 2022-01-10 14:18:13 +08:00 外国人也 666 ? |
![]() | 77 karloku 2022-01-10 14:22:37 +08:00 ![]() 用 MIT License 就要做好被白嫖的准备. 这协议除了留个 Copyright 之外几乎什么都给出去了. 用开源项目不锁好版本号, 不测试版本更新, 那后果也是自负. 外部依赖本来就是系统风险的一部分. |
![]() | 78 skiy 2022-01-10 15:00:52 +08:00 ![]() @ryh 哈哈。用 Go 时有碰到过一次七牛云某个 SDK 仓库删了,我自己再根据仓库名从别人 Fork 的项目补回来。 说实话,这种事是不可避免的。 有个 BaiduPCS-Go 的项目的主仓库被作者删了,我也直接从别的地方 fork 过来,作者名下的依赖我也全部 fork 过来为,并将主仓库的依赖也全改了。 这种事情,怪不得作者了。有时候我自己也会删库,所以没有权利双标。 现在我有些仓库是 0 fork 的,我会自己决定删不删。那些有 fork 的,我会看情况移到一个新建的“trans”组织里专门存放一些弃更的仓库。 |
![]() | 79 abcbuzhiming 2022-01-10 15:06:33 +08:00 所以为啥 npm 老出这种问题,这么久了,nodejs 社区还是建立不起一个依赖库审核机制吗?不是黑客入侵,就是作者删库 |
![]() | 80 48y1951r9G8k7Zou 2022-01-10 15:08:23 +08:00 via iPhone |
81 raysonlu 2022-01-10 15:31:06 +08:00 nodejs 方案不选用的理由+1 ? |
82 2kCS5c0b0ITXE5k2 2022-01-10 15:46:09 +08:00 @daquandiao2 欧美文化圈厉害的 666 是撒旦的数字. |
83 2i2Re2PLMaDnghL 2022-01-10 15:51:11 +08:00 @karloku 你说的是除了留个 [Attribution] 以外都给出去了吧( |
![]() | 84 hatsuyuki 2022-01-10 15:51:15 +08:00 @abersheeran 人性如此,资产阶级消灭了只会产生新的权贵资产阶级,只要有管理关系,就会有阶级 |
85 codder 2022-01-10 15:59:57 +08:00 我靠,我们的项目里也用到了 |
86 xiaojun1994 2022-01-10 16:41:08 +08:00 说的好像只有前端会遇到似的,依赖 github 仓库的包一大把,只要人家想,你照样会出事 |
![]() | 87 karloku 2022-01-10 16:43:47 +08:00 @2i2Re2PLMaDnghL 对, 我意思 MIT 就只要求写个 "Copyright Notice" (翻译: 冤有头债有主( |
![]() | 88 guanhui07 2022-01-10 16:44:45 +08:00 不能锁包.. |
89 LawlietZ 2022-01-10 16:54:06 +08:00 ![]() @abcbuzhiming 又不止是前端社区问题。。否则 log4j2 问题怎么出现的 |
![]() | 90 cloudzqy 2022-01-10 16:56:24 +08:00 @LawlietZ log4j2 是代码写出了漏洞,所有软件都会有这个问题。但是 npm 这个,只要有一个作者犯病,全体跟着遭罪。 |
![]() | 91 Felldeadbird 2022-01-10 17:08:09 +08:00 npm 出问题不是一两天了。最灾难是接受维护老项目。很多东西不能乱动,真的贯彻了:“代码能跑就行” |
![]() | 92 abcbuzhiming 2022-01-10 17:24:26 +08:00 @LawlietZ log4j2 是软件出了 bug ,哪家软件没 bug 呢? bug 又不是作者故意写的。可是 npm 的几次事件都是人故意作恶,不管是黑客入侵篡改代码,还是像这一次这样作者恶意删除代码。npm 给人感觉是完全没审核,没人管。 |
![]() | 93 pkoukk 2022-01-10 17:26:25 +08:00 npm ci 可以锁包啊,但是一般没人用 |
![]() | 94 abcbuzhiming 2022-01-10 17:26:26 +08:00 @LawlietZ 前端社区有没有问题我不知道,但是 NPM 肯定有问题,我没见过哪家的包管理工具像这样跟没人管一样。 |
![]() | 95 reiji 2022-01-10 17:33:44 +08:00 这事情一出估计会让人评估自己是否还真的需要搞个 bot 给自己的前端 repo 自动更新版本了,毕竟这个机制的前提建立在包更新都是给功能进行优化和增加安全性的信任上 |
![]() | 96 Mr54 2022-01-10 17:59:08 +08:00 看来这作者是想让这事闹大出圈啊,看看那些白嫖了他库的大公司会做什么反应,上面看到的那个 ceo 说已经给他们用的库捐了钱了,希望作者能继续生活吧 |
![]() | 97 cheng6563 2022-01-10 18:00:08 +08:00 求原瓜 |
98 LawlietZ 2022-01-10 18:12:40 +08:00 @abcbuzhiming Java 对于个人维护的包,如果他下毒,升级后也是有这个问题的 |
![]() | 100 Dockerfile 2022-01-10 18:58:48 +08:00 @LawlietZ maven 依赖一般都是锁版本的,不像 npm |