年度加密漏洞提前锁定:Java JDK 加密实现漏洞可用于伪造凭据
聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士
该灾难性弱点影响 Java JDK 15及后续版本,已由 Oracle 在今天的关键补丁更新发布中修复。由于这些缺陷牵涉对使用广泛的 ECDSA 签名的实现,因此 Oracle Java 和 OpenJDK 均需更新。问题源自编程错误,而非底层加密技术出现问题。
如不修复,缺陷可导致攻击者伪造某些SSL 证书类型和握手,从而导致中间操纵人攻击。安全研究员 Neil Madden 提醒称,如不修复该漏洞,则已签名的 JWTs、SAML 断言、WebAuthn 认证信息等可被轻易入侵。
ForgeRock 公司的一名安全架构师 Wadden 指出,“这个漏洞的严重性不容忽视。如果你在这些安全机制中使用 ECDSA 签名,服务器运行的是2022年4月关键补丁更新之前发布的 Java 15、16、17或18,则攻击者可轻易并完全绕过签名。”
多年来,Java 一直支持 ECDSA 作为签名所有类型数字化文档的广泛使用的标准。Wadden 解释称,错误是因为将原生 C++ 代码中的EC 代码覆写到Java 作为Java 15 发布而引发的。
Java 的 ECDSA 签名验证实现未检查和 ECDSA 签名相关的值 r 或 s 是否为0,因此可以生成一个二者均为0(编码正确)的签名值,而Java 将其作为任何信息和任何公钥的合法签名。它就相当于数字化的银行身份卡片。Wadden 将该空白银行ID卡片概念比作科幻电影《神秘博士》手中的通灵卡片。在电影中,角色通过通灵卡片愚弄人们进行合作。
Wadden 和同事在去年11月发现了该缺陷并将其告知Oracle 及其它 Java 开发者,然而披露过程并不理想。
Wadden 表示,“我对于披露流程很失望。我报告给 OpenJDK 联盟,然后掉入Oracle 黑洞。公平点说,他们确实迅速响应邮件,但总是提供最低限度的响应,直到修复方案进入 OpenJDK GitHub 移植仓库时,我才获悉修复方案详情。”
Oracle 在发布说明中,给出的CVSS评分为 7.5,而ForgeRock 给出10分。
Wadden 指出,行业躲过一劫,“很惊讶竟然没人找到并利用它,但这可能更加突出 Java 8多么稳固!大多人认为公钥签名计划是超级安全的,但实际这些实现漏洞并不新鲜。对我而言,这个漏洞最令人担心的地方在于,WebAuthn/FIDO 生态系统本质上是围绕 ECDSA P-256 签名的一个单一文化。”
行业大咖 Thomas H Ptacek 称该漏洞是“年度加密漏洞”。
https://portswigger.net/daily-swig/java-encryption-implementation-error-made-it-trivial-to-forge-credentials
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 "赞” 吧~