开源密码库Bouncy Castle存在加密身份验证绕过漏洞 – 作者:偶然路过的围观群众

流行的开源密码库Bouncy Castle中被指存在一个严重的身份验证绕过漏洞。

由于检查密码的方法存在一个加密缺陷,攻击者可利用该漏洞获取对用户或管理员账户的访问权限。

Bouncy Castle是一系列加密API,Java和C# / .NET开发人员使用这些API创建安全应用程序,而不必为要使用自己的加密算法而发愁。

仅Bouncy Castle的.NET版本就被下载了1600万次,这说明了Bouncy Castle的漏洞严重性,Bouncy Castle是关键任务应用程序开发人员所依赖的一个库。

存在漏洞的密码哈希算法

Synopsys网络安全研究中心的两名研究人员Matti Varanka和Tero Rontti本周披露了Bouncy Castle中的一个身份验证绕过漏洞。

该漏洞编号为CVE-2020-28052,存在于Bouncy Castle实现Bcrypt密码哈希算法的OpenBSDBcrypt类中。

也就是说,负责执行逐字节密码哈希匹配的Bcrypt.doCheckPassword()函数存在一个错误的逻辑。

根据Synopsys发布的报告,该代码检查从0到59(包括0和59)的字符下标,而不是检查0到59位置的字符是否匹配。这意味着,产生哈希的密码,例如,不包含0x00和0x3B之间的字节,匹配其他不包含它们的密码哈希。通过此检查意味着攻击者不需要与存储的哈希值进行逐字节匹配。

1608280673_5fdc6a61577431464837c.png!small

Bouncy Castle Bcrypt.doCheckPassword()函数中脆弱的代码

这本质上归结起来就是,暴力破解一组将会生成一个哈希值的字符串,当与doCheckPassword()函数进行比较时,返回true(即匹配成功)。

如果应用程序基于哈希的密码检查使用的是Bouncy Castle,则攻击者可以利用该漏洞暴力破解任意用户账户的密码,包括管理员账户。

前1000次尝试成功率高

虽然强密码需要很长时间才能爆破,但是该实现漏洞造成验证程序“短路”,导致该假设不成立。

研究人员观察到,平均情况下,利用该漏洞,20%的测试密码可在前1000次尝试时被爆破。

该报告指出,一些密码哈希需要更多的尝试,这取决于0到60(1到59)之间的字节数。此外,研究人员调查发现,所有密码哈希都可以通过足够的尝试来绕过。在极少数情况下,可以通过任意输入绕过某些密码哈希。

研究人员称,基于Bcrypt哈希的身份验证在web应用程序和API中被用于身份验证检查。

鉴于该原因,该漏洞被评为高危漏洞(CVSS 3.1基准评分8.1)。

研究人员指出,Bouncy Castle 1.65版本和1.66版本都受到该漏洞影响,但是1.65之前版本未受影响。Bouncy Castle已经在1.67版本中修复了该漏洞。

作者:Ax Sharma
来源:Bleeping Computer

来源:freebuf.com 2020-12-18 16:39:38 by: 偶然路过的围观群众

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论