Coders Conquer Security OWASP Top 10 API Series - 破碎的认证

发表于2020年9月16日
作者:马蒂亚斯-马杜,博士
案例研究

Coders Conquer Security OWASP Top 10 API Series - 破碎的认证

发表于2020年9月16日
作者:马蒂亚斯-马杜,博士
查看资源
查看资源

难怪破损的认证被列入OWASP的API问题名单--认证机制是出了名的难以正确实施。另外,攻击者也有一点优势,因为就其本质而言,大多数认证挑战必须暴露给用户,让攻击者有机会研究它们,寻找他们可以利用的模式或漏洞。

最后,由于认证经常作为应用程序和潜在的网络其他部分的网关,它们是攻击者的诱人目标。如果一个认证过程被破坏或有漏洞,攻击者很有可能会发现这个弱点并加以利用。

因此,在本章中,我们将学习如何在涉及到认证问题时将坏人拒之门外。如果你想先测试一下你的技能,可以去玩我们的游戏化挑战。

想提高你的分数吗?请跟着我,我们来分析一下。

破损或配置错误的认证有哪些例子?

一个问题可能不那么明显的例子是,当一个认证方法容易受到凭证填充的影响,或者使用已知的用户名和密码列表来破坏安全。即使是通常非常安全的授权方法,如多因素认证,如果不对请求进行限制、节制或其他监控,也可能会受到攻击。

例如,攻击者可以通过向/发送POST请求来触发密码恢复请求。api/system/verification-codes并在请求正文中提供一个用户名,从而触发密码恢复请求。如果一个应用程序使用短信挑战,将六位数的代码发送到用户的手机上,但输入字段没有限制,那么该应用程序可以在短短几分钟内被攻破。攻击者只需向应用程序发送每一个可能的六位数组合,直到他们找到正确的组合。

在这种情况下,从表面上看,拥有双因素认证似乎可以保证应用程序的安全。但由于用户的输入没有速率限制,认证就被破坏了,很容易受到攻击。

在另一个例子中,一个应用程序可能使用编码的用户对象作为认证cookie。但是,如果一个有低级用户权限的攻击者使用Base64解码该cookie,他们可以发现该cookie如何定义会话和用户到应用程序。例如,他们可能会看到下面的JSON,一旦被解码。

{
"username" : "ShadyGuy",
"role" : "user"
{

在这一点上,恶意用户可以改变他们的用户名、角色或两者。他们可以通过改变几个值而成为另一个具有更高权限级别的用户。

{
"username" : "GoodGuy",
"role" : "admin"
{

在这一点上,如果攻击者重新编码信息并将其设置为cookie值,他们基本上就会成为具有更高权限级别的新用户。除非有办法防止这样的改变,否则应用程序很有可能会接受这种转变。

消除破损或错误配置的认证方式

如果认证失败,很有可能整个系统的安全就会受到影响。但是,在对应用程序进行编码时,遵循一些重要的准则可以帮助保持一切安全。

首先,一定要在允许用户访问程序功能的所有地方包括认证检查。如果认证检查根本不存在,那么这场战斗从一开始就已经输了。

在最佳实践方面,要记住的一件好事是避免在用户可访问的URL中暴露会话ID。在上面第二个关于破解认证的例子中,如果会话cookie从未暴露给攻击者,那么防止攻击者试图解码会话cookie就容易得多。

实施多因素认证也是一个好主意。这可以通过使用硬件令牌来安全地完成,这些令牌可以在严格的时间表上通过算法生成密码。如果你不能为你的用户提供这样的设备,短信也可以发挥作用。但你需要确保用户的请求被限制在合理的范围内,比如在30秒内尝试三次或四次,而且代码在几分钟后就会全部失效。使用字母数字代码也可以通过在潜在的密码中加入字母和数字来提高安全性。

最后,如果可能的话,避免依赖用户名或可预测的顺序值作为会话ID。相反,使用一个安全的服务器端会话管理器,每次生成一个随机会话ID。

实施安全的认证方法比打击一般的漏洞要棘手一些。但是,由于授权对每个应用程序、程序和API都非常重要,所以值得花额外的时间来确保你得到它。

请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和客户免受其他安全缺陷的蹂躏。你也可以尝试一下 Secure Code Warrior 培训平台的演示,以保持你所有网络安全技能的磨练和更新。


查看资源
查看资源

作者

马蒂亚斯-马杜博士

马蒂亚斯是一名研究员和开发人员,拥有超过15年的软件安全实践经验。他曾为Fortify Software和他自己的公司Sensei Security等公司开发解决方案。在他的职业生涯中,马蒂亚斯领导了多个应用安全研究项目,并将其转化为商业产品,他拥有超过10项专利。当他离开办公桌时,Matias曾担任高级应用安全培训courses ,并定期在全球会议上发言,包括RSA会议、黑帽、DefCon、BSIMM、OWASP AppSec和BruCon。

马蒂亚斯拥有根特大学的计算机工程博士学位,在那里他研究了通过程序混淆来隐藏应用程序的内部工作的应用安全。

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

Coders Conquer Security OWASP Top 10 API Series - 破碎的认证

发表于2020年9月16日
作者:马蒂亚斯-马杜,博士

难怪破损的认证被列入OWASP的API问题名单--认证机制是出了名的难以正确实施。另外,攻击者也有一点优势,因为就其本质而言,大多数认证挑战必须暴露给用户,让攻击者有机会研究它们,寻找他们可以利用的模式或漏洞。

最后,由于认证经常作为应用程序和潜在的网络其他部分的网关,它们是攻击者的诱人目标。如果一个认证过程被破坏或有漏洞,攻击者很有可能会发现这个弱点并加以利用。

因此,在本章中,我们将学习如何在涉及到认证问题时将坏人拒之门外。如果你想先测试一下你的技能,可以去玩我们的游戏化挑战。

想提高你的分数吗?请跟着我,我们来分析一下。

破损或配置错误的认证有哪些例子?

一个问题可能不那么明显的例子是,当一个认证方法容易受到凭证填充的影响,或者使用已知的用户名和密码列表来破坏安全。即使是通常非常安全的授权方法,如多因素认证,如果不对请求进行限制、节制或其他监控,也可能会受到攻击。

例如,攻击者可以通过向/发送POST请求来触发密码恢复请求。api/system/verification-codes并在请求正文中提供一个用户名,从而触发密码恢复请求。如果一个应用程序使用短信挑战,将六位数的代码发送到用户的手机上,但输入字段没有限制,那么该应用程序可以在短短几分钟内被攻破。攻击者只需向应用程序发送每一个可能的六位数组合,直到他们找到正确的组合。

在这种情况下,从表面上看,拥有双因素认证似乎可以保证应用程序的安全。但由于用户的输入没有速率限制,认证就被破坏了,很容易受到攻击。

在另一个例子中,一个应用程序可能使用编码的用户对象作为认证cookie。但是,如果一个有低级用户权限的攻击者使用Base64解码该cookie,他们可以发现该cookie如何定义会话和用户到应用程序。例如,他们可能会看到下面的JSON,一旦被解码。

{
"username" : "ShadyGuy",
"role" : "user"
{

在这一点上,恶意用户可以改变他们的用户名、角色或两者。他们可以通过改变几个值而成为另一个具有更高权限级别的用户。

{
"username" : "GoodGuy",
"role" : "admin"
{

在这一点上,如果攻击者重新编码信息并将其设置为cookie值,他们基本上就会成为具有更高权限级别的新用户。除非有办法防止这样的改变,否则应用程序很有可能会接受这种转变。

消除破损或错误配置的认证方式

如果认证失败,很有可能整个系统的安全就会受到影响。但是,在对应用程序进行编码时,遵循一些重要的准则可以帮助保持一切安全。

首先,一定要在允许用户访问程序功能的所有地方包括认证检查。如果认证检查根本不存在,那么这场战斗从一开始就已经输了。

在最佳实践方面,要记住的一件好事是避免在用户可访问的URL中暴露会话ID。在上面第二个关于破解认证的例子中,如果会话cookie从未暴露给攻击者,那么防止攻击者试图解码会话cookie就容易得多。

实施多因素认证也是一个好主意。这可以通过使用硬件令牌来安全地完成,这些令牌可以在严格的时间表上通过算法生成密码。如果你不能为你的用户提供这样的设备,短信也可以发挥作用。但你需要确保用户的请求被限制在合理的范围内,比如在30秒内尝试三次或四次,而且代码在几分钟后就会全部失效。使用字母数字代码也可以通过在潜在的密码中加入字母和数字来提高安全性。

最后,如果可能的话,避免依赖用户名或可预测的顺序值作为会话ID。相反,使用一个安全的服务器端会话管理器,每次生成一个随机会话ID。

实施安全的认证方法比打击一般的漏洞要棘手一些。但是,由于授权对每个应用程序、程序和API都非常重要,所以值得花额外的时间来确保你得到它。

请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和客户免受其他安全缺陷的蹂躏。你也可以尝试一下 Secure Code Warrior 培训平台的演示,以保持你所有网络安全技能的磨练和更新。


我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。