NPM注册表的“everything”包引发的大规模干扰

关键要点

  • GitHub确认“everything”包违反了其使用政策,已开始解决相关依赖问题。
  • “everything”包导致大量开发者无法取消发布其公共包,引起广泛批评。
  • 尽管不建议安装,但“everything”包在NPM注册表中仍被下载224次。
  • 此事件暴露了NPM系统的缺陷,用户对注册表的管理表示担忧。

GitHub于周三晚上告诉SC Media,他们正在解决与“everything”包及其在注册表中产生的广泛依赖有关的干扰问题。

公司表示:“我们发现该项目违反了GitHub的,该政策禁止严重或持续干扰其他用户体验的行为。此外,它还违反了。”同时,GitHub已解决依赖问题,符合取消发布标准的包可以被移除,并表示正在努力将包从npm注册表和GitHub上删除。

截至周四上午,“everything”库已被从GitHub移除。虽然“everything”包在NPM注册表中似乎仍处于活动状态,但现在没有源代码提交,并附有一条提醒信息,提示用户在使用该包之前请务必验证其来源。

原始报告 (2024年1月3日)

NPM注册表用户在上周末开始无法取消发布任何公共包,这似乎是一次失败的恶搞导致的。

根据NPM网站的信息,GitHub运营的开源JavaScript包注册表托管超过200万个包,服务于超过1700万开发者。

在12月29日,一个名为“everything”的包被发布到注册表,旨在安装注册表中的所有公共包。这种设计导致了注册表内的依赖关系网络,基本上使得其他包无法被取消发布,因为每个包都可能依赖于其他包。

这种事件引发了开发者的反应,他们无法取消发布过时或实验性的包,并且也遭到了不少批评,有人视这一恶作剧为对开放源代码NPM系统的滥用。

“everything”的开发者表示,他们没有预料到这些后果,并已联系NPM和GitHub以解决该问题。具有讽刺意味的是,由于依赖关系,这一小组自己无法取消发布“everything”。

“我们只是觉得这样很有趣,”参与“everything”的贡献者埃文·博斯在对GitHub用户询问项目目的的回应中写道,“我们并不知道会发生这些。”

干扰性JavaScript包“everything”的搞笑目的

“everything”包附带一个“README”文件,上面写着“请不要实际安装这个…”,同时还包括了一张来自电影《这个杀手不太冷》的加里·奥德曼的搞笑图片,画面中正是他角色激动地喊出“Everyone”的场景。

“everything”库的“关于”部分还链接到一个网站“everything.npm.lol”,展示了大量包被安装的动画,后面并配上了视频游戏《上古卷轴V:天际》的一个搞笑动图。

尽管有安装警告,NPM注册表网站截至1月3日显示,“everything”已被下载224次。

Checkmarx的供应链安全工程组负责人约瑟夫·哈鲁什在一篇中表示,安装“everything”可能导致服务拒绝(DoS)攻击。他将该项目称为“恶搞活动”。

“我想重申,我们并不是恶搞者,最多也只是NPM的QA测试人员,最好的情况下是幽默的创意编码者,”博斯在GitHub的评论中写道。

超过200万个NPM包卷入“依赖地狱”

“everything”对整个NPM注册表的影响暴露了NPM开放源代码系统的缺陷,有贡献者PatrickJS在GitHub上指出,用户gdi2290也对此表示担忧。

“需要明确的是,这是NPM取消发布政策中的一个边缘案例,它没有考虑到‘*’”,PatrickJS在GitHub上写道。他提到GitHub应该允许开发者取消发布一个包

Leave a Reply

Your email address will not be published. Required fields are marked *