关于NodeJS依赖包faker.js 和 colors.js
供应链代码投毒问题的公告
一、概述
近期,faker.js 和 colors.js版本更新后遭遇来自开发者的供应链代码投毒事件,可能导致较为严重的安全风险,如程序崩溃等,请各位同事对所负责的系统进行排查,按照说明中的方式进行修复。
二、NodeJS和NPM简介
Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快速的、可扩展的网络应用。 Node.js采用事件驱动和非阻塞I/O模型,使其变得轻量和高效,通常作为Web服务端使用。
npm 是Node.js 官方提供的包管理工具,他已经成了Node.js 包的标准发布平台,用于Node.js 包的发布、传播、依赖控制。 npm 提供了命令行工具,可以方便地下载、安装、升级、删除包,也可以让开发者发布并维护包。
三、faker.js和colors.js简介
faker.js 是用于生成伪造数据的 JavaScript 库。 伪数据在构建和测试我们的应用时很有用。 faker.js 可以为各个领域生成伪造数据,包括地址,商业,公司,日期,财务,图像,随机数或名称。
faker.js 支持生成英文、中文等多语种信息,包含丰富的 API,此前版本通常一个月迭代更新一次。faker.js 不仅可以使用在服务器端的 JavaScript,还可以应用在浏览器端的 JavaScript。
colors.js为前端开发者提供了一个简单的颜色管理的API。 使用colors.js,你可以创建一个Color对象来方便的进行一系列的颜色操作,如格式转换、获取单一通道值等,而不用管具体的颜色模型以及相应的转换关系。 colors.js库支持RGB、HSV和HSL颜色模型,以及它们各自的alpha通道。
四、本次恶意代码事件简介
faker.js 和colors.js的作者 Marak Squires 向两个包中提交了恶意代码,进行了供应链投毒,添加了一个「a new American flag module」(一个新的美国国旗模块),然后将其发布到了 GitHub 和 npm包管理器中。
破坏后的版本导致应用程序无限输出奇怪的字母和符号,从三行写着「LIBERTY LIBERTY LIBERTY」的文本开始,后面跟着一系列非 ASCII 字符:
该版本的引用包含破坏性代码,可以引起死循环,在控制台输出垃圾信息,造成程序崩溃,服务器资源占用等破坏性后果。
五、影响范围
使用了colors.js和faker.js的包的nodejs项目(包含了间接引用,即依赖包中引用了以上两个包的项目)的在升级新版本后可能受到该问题的影响。
可能的恶意版本为v1.4.44-liberty-2 和6.6.6。
六、应对措施
将两个包的版本降低至发生供应链投毒之前的版本:
colors.js:1.4.0
faker.js:5.5.3
即可避免相关问题。
原创文章,转载请注明出处:http://jilys.cn/blogs/details/140