npm xlsx插件只到0.18.5 1 high severity vulnerability

数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。

随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。

为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。

注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。

ce516415eb23b12495cc0a122818e346.png

热门开源包 SheetJS 即 “xlsx” 放弃对 npm 注册表的支持,转向自己的CDN。这一举动与GitHub 最近推出的强制性双因素认证机制、以及和NPM 的“法律事项”有关。

SheetJS 在 npm 上的每周下载量约为140万次,是 NodeJS 开发人员仅通过 JavaScript 构造并解析 Excel 表单的选择。

SheetJS 的维护人员提到,做出不再支持 NPM 注册表的原因是GitHub 最近突然推出的针对顶级项目的双因素认证要求,以及 SeetJS 和 npm 的“法律事项”。

不再支持 NPM 注册表

4月14日,SheetJS 的维护人员引入一个代码变更,删除了该项目使用的任何npm 依赖关系。SheetJS 源代码中所引用的 npm 域URL 也更新为 SheetJS CDN。SheetJS 的后续版本应该会在自己的CDN 即 cdn.sheetjs.com 上而不是 npmjs 注册表上推出。

从依赖于库的组件数量来看,SheetJS (即 xlsx)位列“前500个程序包”榜单。值得注意的是,“sheetjs” npm 包仅仅是 SheetJS 保留的一个占位符, SheetJS 的官方npm 库位于 “xlsx”。

从双因素要求到将要处理的“法律事务”

SheetJS的这一行为引发开发人员的不解,并质疑其动机。

SheetJS 的开发人员说明了离开npm的一大堆原因,包括该注册表决定强制顶级开源项目的维护人员采用双因素认证机制。GitHub 强制推行多因素认证机制是因为去年发生多起针对npm包如 ua-parser-js、coa 和 rc的劫持事件。这些npm库的用户是数千个项目和企业,当维护人员的npm 账户受陷后,它们遭到恶意软件感染。为此,由GitHub 所持有的npm 注册表今年宣布,要求前100个npm 包开发人员设立双因素认证机制以保护项目安全,并为满足其它标准的项目推出类似规则。显然,SheetJS 符合这些标准且必须设立多因素认证机制,这让维护人员不悦。

SheetJS 援引的另外一个原因是和npm 之间的“法律事项”。
npm 安装的时候一直报这个错误
Prototype Pollution in sheetJS - https://github.com/advisories/GHSA-4r6h-8v6p-xvw6
No fix available
xlsx组件有问题,但是版本一大就报错,经过查询感觉是npm不支持,一搜索果然,如下新闻:
最终采用cdn,使用最新版本
https://docs.sheetjs.com/docs/getting-started/installation/nodejs

npm rm --save xlsx
npm i --save https://cdn.sheetjs.com/xlsx-0.20.0/xlsx-0.20.0.tgz

SheetJS 的开发人员指出,“鉴于 SheetJS 和npm 公司之间存在法律事项(在此不讨论),因此不再继续使用公开的npm注册表进行分发。”最后,SheetJS 模糊地提到,仅在提前四天通知的情况下,GitHub 就决定关闭其 git.io URL 重定向服务,说明 “Internet 是短暂的,依赖多个平台存在固有风险”。

而这些原因引发了更多的疑惑,使开发者们纷纷猜测放弃npm 的真正原因。

Blu Digital Group 公司的产品工程总监 Clay Levering 评论称,“虽然位列前500 NPM 包榜单、每周126万美元的下载量、超过3000个依赖包,但在README 中甚至没有提到,(8年后)这个包将在全球最大的JS库平台不复存在的进展情况如何。”

有些人认为 SheetJS 提到的这些原因“令人费解”,而有些人认为开源维护人员有权随意处置自己的创作,但可能需要特别注意。开发人员 Lynn Romich 表示,“当然,开源项目的维护人员并不亏欠任何人,但我想说的是,当人们(包括你的付费客户)评估整件事情并决定要么fork 该项目,要么转向不这样做出决策的由其他人维护的有竞争力的其它库时,你应该不会感到惊讶。因为从数据上看,npm 再存活5年的可能性要大于个人的CDN。”

一名Reddit 用户认为SheetJS 做出如此大胆的决策可能只是和二者之间将要展开的官司有关,“我猜测,他们不想投入一分钱的开发人员时间来帮助和自己打官司的企业。”

Reddit 论坛上的用户对于强制双因素认证机制对开发人员设置阻力、以及安全和便捷性之间的平衡是否合理的看法不一。

目前,GitHub 和 SheetJS 均未就此事置评。我们将持续跟进事态发展。

未经允许不得转载:lxfamn » npm xlsx插件只到0.18.5 1 high severity vulnerability

赞 (0) 打赏

置顶推荐

评论 0

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏