新闻中心
7*24 小时获取专业工程师的帮助,快速解决您的问题
关注获取即时动态
< 返回

NodeJS依赖包faker和color供应链投毒事件公告

发布时间:2022-01-12   访问量:1092

一、概述

近期,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 字符:

000000.png

该版本的引用包含破坏性代码,可以引起死循环,在控制台输出垃圾信息,造成程序崩溃,服务器资源占用等破坏性后果。

五、影响范围

使用了colors.js和faker.js的包的nodejs项目(包含了间接引用,即依赖包中引用了以上两个包的项目)的在升级新版本后可能受到该问题的影响。

可能的恶意版本为v1.4.44-liberty-2 和6.6.6。

六、应对措施

将两个包的版本降低至发生供应链投毒之前的版本:

colors.js:1.4.0

faker.js:5.5.3

即可避免相关问题。