概述
新思科技网络安全研究中央(CyRC)研究职员创造了CVE-2020-28052漏洞,即广泛利用的Java密码库Bouncy Castle中的OpenBSDBcrypt类的绕过身份验证的漏洞。该类实现了用于密码哈希的Bcrypt算法。攻击者可以在利用Bouncy Castle的OpenBSDBcrypt类的运用程序中绕过密码检讨。
doCheckPassword方法的验证程序实现是有缺陷的。该代码检讨值为0到59(包括0和59)字符在字符串中的索引,而不是检讨在字符串中0到59之间位置的字符值是否匹配。这意味着一系列密码,其天生的哈希(例如,哈希值不包含介于0x00和0x3B之间的字节)会与其它不包含这些字节的密码哈希匹配。通过此检讨意味着攻击者不须要与存储的哈希值逐字节匹配。

在利用Bcrypt.doCheckPassword()检讨密码的大多数情形下,成功地利用漏洞将绕过身份验证。
漏洞利用
攻击者必须考试测验暴力破解密码,直到触发绕过身份验证。我们的实验表明,20%的测试密码在1,000次内考试测验中被成功绕过。某些密码哈希须要进行更多考试测验,详细取决于字符值在0到60之间(1到59)的字节数。此外,我们的调查表明,通过足够的考试测验可以绕过所有密码哈希。在极少数情形下,任何输入都可以绕过一些密码哈希。
受影响的软件
CVE-2020-28052漏洞影响了Bouncy Castle 1.65(发布于2020年3月31日)和Bouncy Castle 1.66(发布于7/4/2020)。
Bouncy Castle 1.67(发布于2020年11月1日)修复了此漏洞。 1.65之前的版本不受CVE-2020-28052漏洞的影响。
注:基于漏洞表露,新思科技研究了其产品,创造在该表露发布之时没有产品利用过Bouncy Castle版本1.65或1.66。
影响
基于哈希的Bcrypt身份验证可运用在身份验证检讨,如在Web运用程序和API中身份验证检讨。
CVSS 3.1 评分
Bouncy Castle是一个软件库。在确定通用漏洞评分系统(CVSS)分数时,假定了以下最坏情形(遵照FIRST CVSS软件库评分准则):
Bcrypt哈希用于检讨用户供应的密码。一旦触发了绕过身份验证,攻击者就可以实行与合法用户相同的操作(例如,得到SSO,即single-sign-on,单次登录系统,管理员级别的访问权限)。
Vector: AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H/E:P/RL:O/RC:C
评分: 8.1
漏洞可利用性指标:
攻击路子Attack Vector (AV): N = Network 网络
攻击繁芜程度Attack Complexity (AC): H = High 高
所需权限Privileges Required (PR): N = None 无
用户交互User Interaction (UI): N = None 无
范围Scope (S): C = Changed scope 范围变更
影响指标
机密性影响Confidentiality Impact (C): H = High impact 影响大
完全性影响Integrity Impact (I): H = High impact 影响大
可用性影响Availability Impact (A): H = High impact 影响大
修复
强烈建议该库的软件供应商和用户升级到Bouncy Castle Java版本1.67或更高版本。
漏洞创造者
一组位于芬兰奥卢的新思科技网络安全研究中央的研究职员创造了此漏洞:
Matti Varanka
Tero Rontti
新思科技感谢Bouncy Castle团队及时地相应并修复此漏洞。
韶光线
2020年10月20日:创造该Bouncy Castle漏洞
2020年10月22日:新思科技确认没有产品利用此漏洞影响的版本
2020年10月27日:新思科技戳穿Bouncy Castle的漏洞
2020年10月28日:Bouncy Castle确认存在漏洞
2020年11月2日: 新思科技验证Bouncy Castle修复漏洞
2020年12月17日:发布修复建议