研究人员公开CVE-2022-21449漏洞PoC代码。
研究人员发现最新发布的Java发行版中ECDSA签名算法实现中存在安全问题,漏洞CVE编号CVE-2022-21449,CVSS评分7.5分。该漏洞存在于Java的ECDSA签名算法的实现中,ECDSA算法是对消息进行签名和验证内容的真实性和完整性的加密机制。攻击者利用该漏洞可以伪造签名和绕过认证过程,攻击者可以轻易地伪造SSL证书类型和握手(允许通信的拦截和修改)、签名的JWT、SAML证明或OIDC ID token、甚至WebAuthn认证消息。
漏洞影响Oracle Java SE和Oracle GraalVM企业版以下版本:
Oracle Java SE:7u331、8u321、11.0.14、17.0.2和18;
Oracle GraalVM 企业版:20.3.5、21.3.1和22.0.0.2。
未经认证的攻击者攻击者利用该漏洞可以通过多个协议访问网络入侵Oracle Java SE和Oracle GraalVM企业版。攻击成功可以实现对关键数据的非授权创建、删除和修改。此外,该漏洞还可以通过特定组件的API来进行利用,比如通过提供数据给API的web服务。
Khaled Nassar发布的PoC中包含一个有漏洞的客户端和恶意TLS服务器允许TLS握手继续进行。在PoC 中,加密(ecdsa)包已经被修改为呈现一个无效的签名,其中r=s=0(更多参见ECDSA具体流程)。有漏洞的客户端会接收来自服务器的无效的签名,允许TLS握手的其他部分继续。
随着PoC的公布,攻击者可以绕过使用Java 15、16、17和18版本中用ECDSA签名作为安全机制的的组织(企业)。4月19日,Oracle已发布了该漏洞的安全补丁。研究人员建议受影响的用户尽快更新到最新版本。
PoC代码和视频参见:https://github.com/khalednassar/CVE-2022-21449-TLS-PoC
更多技术细节参见:https://neilmadden.blog/2022/04/19/psychic-signatures-in-java/