要求用户付费!热门函数库作者搞破坏殃及数千项目

Bleeping Computer报道,NPM (Node Package Manager)线上组件库两个受欢迎的函数库遭作者刻意破坏,使数千个使用这些函数库的应用程序无法使用或出现乱码。

两个出问题的函数库为colors及faker。前者可为node.js console定义文本色彩,后者则可用于产生测试时的大量假数据。两者下载次数各超过2,000万及280万,在GitHub上分别有4,500及1,000颗星。此外与之相依的项目各有1.9万及2,500多个。这两个函数库都是由Marak Squires(代号Marak)的开发人员开发维护。

但本周使用两个函数库的应用程序或系统出现怪事。例如使用faker的AWS Cloud Development Kit显示“LIBERTY、LIBERTY、LIBERTY”的文本,并有一堆乱码。

原本媒体以为是黑客攻击事件,但追查发现,“凶手”正是函数库作者Marak本人。一周前他在colors.js v1.4.44-liberty-2中,在commit的程序代码加入了一无穷循环,这个循环在启动程序代码即立即执行,导致使用该函数库的Node.js服务器出现拒绝服务(Denial of Service, DoS)情形、或是在使用color函数库的项目中显示无意义non-ASCII乱码(称为zalgo text)。而在他更新到faker 6.6.6中,这个组件变成空的,里面没有源码。

Marak随后也将相关的GitHub存储库移除,可能导致使用它项目的数千或数万项目人停止运行。

虽然乍看之下很恶意,但Marak在去年的一篇博客谈及以开源项目为生的困境。他开发faker已经超过10年,大部分财富500大企业都有使用。但这个大型项目维护很花力气,但是开发团队仅获得开源社群及GitHub赞助商支持,以获得一些捐赠费用,没有任何企业付费。他指出,和大多数人一样,他也有家要养,有账单要付。他决定要针对faker项目收费以支持未来开发。

这名开发人员本周表示,不愿再无偿维护这些函数库,服务财富500大企业或小型企业。他要求用户付每年6位数的合约,否则就把这些项目分叉出去请别人来开发。底下留言者也有人表示支持与理解。

媒体snyk报道,Marak另外还参与了约170项NPM项目组件,因此类似的问题可能还会持续发生。