近日,平安研究员 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 的开发者或企业尽快更新。