身份认证可以保护用户隐私,但是网络攻击者也在想方设法绕过密码检查,如果软件本身就有明显漏洞,风险则会更大。CVE-2020-28052 披露在 Bouncy Castle 轻量级密码术包的 OpenBSDBcrypt 类中发现绕过身份验证的漏洞,攻击者可以避开密码检查。


概述
新思科技网络安全研究中心(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()检查密码的大多数情况下,成功地利用漏洞将绕过身份验证。

 

漏洞利用
攻击者必须尝试暴力破解密码,直到触发绕过身份验证。我们的实验表明,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 日:发布修复建议