Synopsys网络安全研究中心发现Bouncy Castle中的漏洞

身份认证可以保护用户隐私,但是网络攻击者也试图绕过密码检查。

如果软件本身存在明显的漏洞,则风险会更大。

CVE-2020-28052披露,在Bouncy Castle轻量级加密程序包的OpenBSDBcrypt类中发现了一个身份验证绕过漏洞,从而使攻击者可以避免密码检查。

概述Synopsys网络安全研究中心(CyRC)的研究人员发现了CVE-2020-28052漏洞,该漏洞绕过了广泛使用的Java密码库Bouncy Castle中的OpenBSDBcrypt类中的身份验证。

此类实现用于密码哈希的Bcrypt算法。

攻击者可以在使用Bouncy Castle的OpenBSDBcrypt类的应用程序中绕过密码检查。

提交(00dfe74aeb4f6300dd56b34b5e6986ce6658617e)中引入了OpenBSDBcrypt.doCheckPassword方法中的漏洞。

doCheckPassword方法的验证程序实现存在缺陷。

此代码从0到59(包括0和59)检查字符串中字符的索引,而不是检查字符串中介于0和59之间的字符值是否匹配。

这意味着其生成的哈希(例如,哈希值不包含0x00和0x3B之间的字节)的一系列密码将与不包含这些字节的其他密码哈希匹配。

通过此检查意味着攻击者无需逐字节匹配存储的哈希值。

在大多数情况下,使用Bcrypt.doCheckPassword()检查密码时,成功利用此漏洞将绕过身份验证。

漏洞利用攻击者必须尝试暴力破解密码,直到触发绕过身份验证。

我们的实验表明,在1,000次尝试中成功绕过了20%的测试密码。

某些密码哈希需要更多尝试,具体取决于字符值介于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漏洞的影响。

注意:根据漏洞披露信息,Synopsys研究了其产品,发现在披露之时,没有产品使用Bouncy Castle版本1.65或1.66。

可以将基于影响哈希的Bcrypt身份验证应用于身份验证检查,例如Web应用程序和API中的身份验证检查。

CVSS 3.1评分Bouncy Castle是一个软件库。

确定通用漏洞评分系统(CVSS)分数时,假定以下最坏情况(遵循FIRST CVSS软件库评分准则):Bcrypt哈希用于检查用户提供的密码。

触发身份验证旁路后,攻击者即可执行与合法用户相同的操作(例如,获得SSO或单点登录,单点登录系统,管理员级别的访问权限)。

向量:AV:N / AC:H / PR:N / UI:N / S:C / C:H / I:H / A:H / E:P / RL:O / RC:C得分:8.1漏洞可以是可利用性指数:攻击向量(AV):N =网络攻击复杂性(AC):H =要求高特权(PR):N =无无用户交互用户交互(UI):N =无范围(S):C =已更改范围机密性影响(C):H =高影响完整性影响(I):H =高影响完整性影响(I):H =高影响可用性影响(A):H =高影响强烈建议软件供应商和该库的用户将升级到Bouncy Castle Java版本1.67或更高版本。

漏洞发现者芬兰奥卢Synopsys网络安全研究中心的一组研究人员发现了此漏洞:Matti VarankaTero Rontti Synopsys感谢Bouncy Castle团队及时响应并修复了此漏洞。

时间轴:2020年10月20日:发现了Bouncy Castle漏洞。

2020年10月22日:Synopsys确认没有产品使用受此漏洞影响的版本。

2020年10月27日:Synopsys在2020年发现了Bouncy Castle漏洞。

10月28日:Bouncy Castle确认存在漏洞。

2020年11月2日:Synopsys验证Bouncy Castle是否已修复该漏洞。

2020年12月17日:发布维修建议