近日,安全研究员 Khaled Nassar 在 GitHub 上公开了 Java 中新披露的数字签名绕过漏洞的 PoC 代码,其被追踪为CVE-2022-21449。
据了解,该漏洞由安全咨询公司 ForgeRock 研究员 Neil Madden 于去年 11 月发现,并于当天就将此情况通知了甲骨文(Oracle)。
尽管甲骨文给这个漏洞的 CVSS 评分只有 7.5,但 ForgeRock 表示,在这个漏洞被发现之初,他们已经私下披露了该漏洞,并将该漏洞的 CVSS 评为 10 分。
Madden 对此解释称,“很难夸大这个漏洞的严重性。如果将 ECDSA 签名用于这些安全机制(SSL、JWT、WebAuthn)中的任何一个,并且你的服务器在 2022 年 4 月重要补丁更新 (CPU)之前运行的是 Java 15、16、17 或 18 版本,攻击者就可以轻而易举地完全绕过它们。现实世界中几乎所有的 WebAuthn/FIDO 设备(包括 Yubikey)都使用 ECDSA 签名,许多 OIDC 提供商使用 ECDSA 签名的 JWT。”
此外,信息安全专家 Thomas Ptacek 已经将该漏洞描述为“年度加密漏洞”。
该漏洞被称为 Psychic Signatures,与 Java 对椭圆曲线数字签名算法(ECDSA)的实现有关,存在于 Java 15、16、17、18 版本中。这是一种加密机制,用于对消息和数据进行数字签名,以验证内容的真实性,攻击者可利用此漏洞伪造 TSL 签名并绕过身份验证措施。
Nassar 证明称,设置恶意 TLS 服务器可以欺骗客户端接受来自服务器的无效签名,从而有效地允许 TLS 的其余部分继续进行。
该漏洞会影响以下版本的Java SE和Oracle GraalVM Enterprise Edition:
- Oracle Java SE:7u331, 8u321, 11.0.14, 17.0.2, 18
- Oracle GraalVM 企业版:20.3.5, 21.3.1, 22.0.0.2
目前,甲骨文已经在重要补丁更新公告中修复了此次的漏洞,并呼吁使用 Java 15、16、17、18 的开发者或企业尽快更新。