喜欢就关注我们吧!
日前,一个被大量下载的 Node.js 组件被发现其含有一个高危的代码注入漏洞。
该漏洞被追踪为 CVE-2021-21315,影响了「systeminformation」npm 组件的安全性,该组件每周的下载量约为 80 万次,自诞生以来,至今已获得近 3400 万次下载。
漏洞已被修复
简单来说,「systeminformation」是一个轻量级的 Node.js 组件,开发者可以在项目中加入该组件,以检索与 CPU、硬件、电池、网络、服务和系统进程相关的系统信息。
该组件的开发者表示:"虽然 Node.js 自带了一些基本的操作系统信息,但我一直想要获得更多信息。因此我就写了这个小型的组件。这个组件目前还在开发中。它可以作为一个后端/服务器端的组件来使用的,肯定不会在浏览器内工作"。
然而,「systeminformation」中代码注入漏洞的存在意味着攻击者可以通过在组件使用的未初始化参数内小心翼翼地注入有效载荷来执行系统命令。
下图所示的是「systeminformation」在 5.3.1 版本的修复,在调用进一步的命令之前,会对参数进行清理,以检查它们是否为字符串数据类型,并额外检查该参数在任何时候是否发生过原型污染。
「systeminformation」的用户应升级到 5.3.1 及以上版本,以解决其应用程序中的 CVE-2021-21315 漏洞。
变通方法同样可用
对于那些项目灵活性不高、无法升级到修复版本的开发者,「systeminformation」项目的发布者在公告中也分享了一个可以采用的变通方法。
安全公告中提到:“作为替代升级的一种变通方法,一定要检查或清理传递给 si.inetLatency()、si.inetChecksite()、si.services()、si.processLoad() 的服务参数。只允许字符串,拒绝任何数组。”
这同样涉及清理参数中的任何违规字符,并正确验证它们是否属于字符串数据类型。