Node.JS基础库JWT爆发严重RCE漏洞

【Node.JS基础库JWT爆发严重RCE漏洞】

Node.JS基础库JWT爆发严重RCE漏洞

文章插图
近日著名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个项目依赖 。
Node.JS基础库JWT爆发严重RCE漏洞

文章插图
最新暴露的漏洞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”参数的检查以确定它是字符串还是缓冲区 , 攻击者可以发送特制对象在目标机器上执行任意文件写入 。
Node.JS基础库JWT爆发严重RCE漏洞

文章插图
使用相同的缺陷 , 但请求的负载略有不同 , Unit42 报告说实际上可以实现远程代码执行 。
此漏洞被归类为“高严重性”(CVSS 3.1 得分:7.6) , 因为利用它很复杂 , 只能在秘密管理过程中利用它 。只有当允许不受信任的实体在控制的主机上修改jwt.verify() 的密钥检索参数时 , 才会受到影响 ,  。
Auth0 团队确认在2022 年8 月正在研究解决方案 , 在2022 年12 月21日发布了 JsonWebToken 版本9.0.0 的补丁 。
该补丁包括对 secretOrPublicKey 参数实施额外检查 , 以防止其解析恶意对象 。
由于JsonWebToken 是被广泛的引用开源库 , 供应链影响巨大 , 并且它将持续很长一段时间 , 直到大多数项目升级到安全版本 。
虽然该漏洞利用难度较高 , 但考虑到潜在目标的数量 , 虽然该漏洞利用难度较高 , 但考虑到潜在目标的数量 , 建议所有系统管理都赶紧排查影响面并及时升级系统 。




    推荐阅读