漏洞描述
Express 是一个基于 Node.js 的 Web 框架,qs 是一个具备附加安全特性的查询字符串(querystring)解析和序列化库,Express 默认使用 qs 模块进行查询字符串解析。
qs 的受影响版本中由于 parseObject 方法没有对 js 对象的“proto”属性进行正确判断,导致攻击者可以通过 qs 解析具有过长数组属性的 js 对象造成拒绝服务。在 4.17.3 之前的 Express 会受到此漏洞的影响,未经身份验证的远程攻击者可以将 payload(如:a[proto]=b&a[proto]&a[length]=100000000)传入用于访问应用程序的 URL 的查询字符串中,在 qs 解析 URL 时导致 Express 应用程序的 Node 进程被挂起。
漏洞名称 | Express 中的 qs 模块存在原型污染漏洞 |
---|---|
漏洞类型 | 原型污染 |
发现时间 | 2022-11-27 |
漏洞影响广度 | 广 |
MPS编号 | MPS-2022-3967 |
CVE编号 | CVE-2022-24999 |
CNVD编号 | - |
影响范围
express@(-∞, 4.17.3)
qs@[6.4.0, 6.4.1)
qs@[6.2.0, 6.2.4)
qs@[6.8.0, 6.8.3)
qs@[6.5.0, 6.5.3)
qs@[6.3.0, 6.3.3)
qs@[6.9.0, 6.9.7)
qs@[6.10.0, 6.10.3)
qs@[6.7.0, 6.7.3)
qs@[6.6.0, 6.6.1)
修复方案
升级express到 4.17.3 或更高版本
升级qs到 6.2.4 或 6.3.3 或 6.4.1 或 6.5.3 或 6.6.1 或 6.7.3 或 6.8.3 或 6.9.7 或 6.10.3 或更高版本
参考链接
https://www.oscs1024.com/hd/MPS-2022-3967
https://nvd.nist.gov/vuln/detail/CVE-2022-24999
https://github.com/ljharb/qs/pull/428
https://github.com/ljharb/qs/pull/428/commits/8b4cc14cda94a5c89341b77e5fe435ec6c41be2d
https://github.com/n8tz/CVE-2022-24999
情报订阅
OSCS(开源软件供应链安全社区)通过最快、最全的方式,发布开源项目最新的安全风险动态,包括开源组件安全漏洞、事件等信息。同时提供漏洞、投毒情报的免费订阅服务,社区用户可通过配置飞书、钉钉、企业微信机器人,及时获得一手情报信息推送:
https://www.oscs1024.com/cm/?src=osc
具体订阅方式详见: