近日著名node.js库JWT(JsonWebToken )被爆存在严重远程漏洞。作为一个基础库,JWT被供应链广泛采用用,影响22000 多个项目个项目,其中包括Microsoft、Twilio、Salesforce、Intuit、Box、IBM、Docusign、Slack、SAP 知名公司的开源项目。
概述
JsonWebToken 项目是一个开源库,用于创建、签发和验证JSON Web 令牌。JWT遵循开放标准RFC 7519 ,该标准定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为JSON 对象。该信息可以被验证和信任,因为它是经过数字签名的,JWT项目由Okta Auth0 开发和维护,根据NPM站点的统计数据其周下载量有1000万次 ,被22060个项目依赖。
最新暴露的漏洞CVE编号为CVE-2022-23529 ,利用该漏洞可使攻击者绕过身份验证机制、访问机密信息,还可以用来窃取和修改数据。
根据Unit 42的说明,该漏洞的利用需要先破坏应用程序和JsonWebToken 服务器之间的密码管理过程,加大了可被利用的难度。目前其严重性等级降7.6。
漏洞分析
CVE-2022-23529 漏洞由Palo Alto 网络的Unit 42 在去年7 月13 日发现,并立即报告给 Auth0。
研究人员发现,威胁行为者在验证恶意制作的 JWS 令牌后,可以使用JsonWebToken 在服务器上实现远程代码执行。
漏洞注入点位于JsonWebToken 的verify() 方法中,该方法用于验证 JWT 并返回解码信息。 此方法接受三个参数:token 、secretOrPublicKey 和option。由于函数验证时候未对“secretOrPublicKey”参数的检查以确定它是字符串还是缓冲区,攻击者可以发送特制对象在目标机器上执行任意文件写入。
使用相同的缺陷,但请求的负载略有不同,Unit42 报告说实际上可以实现远程代码执行。
此漏洞被归类为“高严重性”(CVSS 3.1 得分:7.6),因为利用它很复杂,只能在秘密管理过程中利用它。只有当允许不受信任的实体在控制的主机上修改jwt.verify() 的密钥检索参数时,才会受到影响,。
Auth0 团队确认在2022 年8 月正在研究解决方案,在2022 年12 月21日发布了 JsonWebToken 版本9.0.0 的补丁。
该补丁包括对 secretOrPublicKey 参数实施额外检查,以防止其解析恶意对象。
由于JsonWebToken 是被广泛的引用开源库,供应链影响巨大,并且它将持续很长一段时间,直到大多数项目升级到安全版本。
虽然该漏洞利用难度较高,但考虑到潜在目标的数量,虽然该漏洞利用难度较高,但考虑到潜在目标的数量,建议所有系统管理都赶紧排查影响面并及时升级系统。