Java自带ECDSA签名验证函数存在漏洞,导致认证绕过 (CVE-2022-21449)
ECDSA(椭圆曲线数字签名算法)签名被广泛应用于各个认证领域,如SSL证书,JWT签名等。近日,国外安全研究员发现了Java自带的ECDSA签名验证函数中,存在认证绕过漏洞。
Java 15, 16, 17, 18
请及时安装Oracle发布的2022 4月补丁
https://www.oracle.com/security-alerts/cpuapr2022.html
是一种非对称加密算法,被广泛应用于数字签名领域。ECDSA相较于RSA,在相同的安全级别下,可以得到更短的密钥和签名,备受数字签名领域的喜爱。
ECDSA签名由2个值组成,r和s,推导公式有点复杂,感兴趣的同学可以参考
https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm#Signature_verification_algorithm
https://zhuanlan.zhihu.com/p/97953640
简单来讲,如果 r=r*(根据s导出的值),即可验证成功。那么如果 r=s=0 呢,显然等式0=0*xxx是成立的,认证通过。
所以,ECDSA算法验证的第一步就是检查 r, s 是否 >=1。
然而Java中的ECDSA签名验证函数却并没有其进行检查,也就是说,可以设置 r=s=0,从而任何 r=s=0 的空白签名将通过认证。
恶意网站使用空白签名的证书,所有访问该网站的用户(使用存在漏洞的java ECDSA验证)都将验证此证书为有效,从而建立会话,进而通信,此漏洞破坏了正常的SSL认证,会导致用户信息被恶意网站收集并利用。
https://github.com/khalednassar/CVE-2022-21449-TLS-PoC
漏洞验证演示
已关注
Follow
Replay
Like
我不是Hacker
Added to Top Stories
0/0
00:00
/
00:46
00:00
/
00:46
00:46
全屏
倍速播放中
继续观看
Java自带ECDSA签名验证函数存在漏洞,导致认证绕过 (CVE-2022-21449)
转载
,
Java自带ECDSA签名验证函数存在漏洞,导致认证绕过 (CVE-2022-21449)
我不是Hacker
Added to Top Stories
https://neilmadden.blog/2022/04/19/psychic-signatures-in-java/
https://github.com/khalednassar/CVE-2022-21449-TLS-PoC
https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm#Signature_verification_algorithm
https://zhuanlan.zhihu.com/p/97953640