Coders Conquer Security OWASP Top 10 API Series - 缺少功能级访问控制

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

Coders Conquer Security OWASP Top 10 API Series - 缺少功能级访问控制

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

本系列博客将重点讨论一些最糟糕的漏洞,因为它们与应用编程接口(API)有关。这些漏洞非常糟糕,以至于它们进入了开放网络应用安全项目(OWASP)的顶级API漏洞名单。鉴于API对现代计算基础设施的重要性,这些都是关键问题,你需要不惜一切代价阻止你的应用程序和程序出现。

缺失的功能级访问控制漏洞允许用户执行应该被限制的功能,或者让他们访问应该被保护的资源。通常情况下,功能和资源会在代码中或通过配置设置直接保护,但要正确做到这一点并不容易。实施适当的检查是很困难的,因为现代应用程序通常包含许多类型的角色和组,加上复杂的用户层次结构。

但首先,为什么不跳进去玩玩我们的游戏化挑战,看看你在驾驭这类棘手的错误方面处于什么位置?

让我们更深入地了解一下。

API特别容易受到这种缺陷的影响,因为它们是高度结构化的。了解代码的攻击者可以对如何实现应该限制他们的命令做出有根据的猜测。这也是函数/资源级访问控制漏洞进入OWASP前十名的主要原因之一。

攻击者如何利用功能级访问控制漏洞?

怀疑功能或资源没有得到适当保护的攻击者必须首先获得对他们想要攻击的系统的访问权。为了利用这个漏洞,他们必须有权限向端点发送合法的API调用。也许有一个低级别的访客访问功能,或者有一些匿名加入的方式,作为应用程序功能的一部分。一旦建立了这种访问权限,他们就可以开始改变他们合法的API调用中的命令。例如,他们可能把GET换成PUT,或者把URL中的USERS字符串改为ADMINS。同样,由于API是结构化的,很容易猜到哪些命令是允许的,以及在字符串中的位置。

OWASP给出了一个关于这个漏洞的例子,即为允许新用户加入一个网站而设置的注册程序。它可能会使用一个API GET调用,就像这样。

GET /api/invites/{invite_guid}。

恶意用户会得到一个包含邀请细节的JSON,包括用户的角色和电子邮件。然后,他们可以将GET改为POST,还可以通过以下API调用将他们的邀请从用户提升为管理员。

POST /api/invites/new
{"email":"shadyguy@targetedsystem.com","role":"admin"}

只有管理员才能发送POST命令,但如果他们没有得到适当的保护,API将接受他们为合法的,并执行攻击者想要的东西。在这种情况下,恶意用户将被邀请作为新的管理员加入系统。之后,他们可以看到和做任何合法管理员可以做的事情,这不是什么好事。

消除功能级访问控制的漏洞

防止这种API漏洞尤其重要,因为攻击者不难找到结构化API中未受保护的函数。因此,只要他们能够获得对API的某种程度的访问,他们就可以开始映射代码的结构并创建最终会被跟踪的调用。

因此,所有业务层面的功能都必须使用基于角色的授权方法进行保护。大多数框架提供了集中的例程来实现这一目标。如果你选择的框架没有,或者它的程序很难实现,有许多外部模块是专门为方便使用而建立的。无论你最终选择什么方法,一定要在服务器上实现授权。千万不要试图从客户端保证功能的安全。

在创建功能和资源级别的权限时,请记住,用户应该只被赋予做他们需要的事情的权限,而不是其他。就像在编码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 - 缺少功能级访问控制

发布于 2024 年 1 月 22 日
作者:马蒂亚斯-马杜,博士

本系列博客将重点讨论一些最糟糕的漏洞,因为它们与应用编程接口(API)有关。这些漏洞非常糟糕,以至于它们进入了开放网络应用安全项目(OWASP)的顶级API漏洞名单。鉴于API对现代计算基础设施的重要性,这些都是关键问题,你需要不惜一切代价阻止你的应用程序和程序出现。

缺失的功能级访问控制漏洞允许用户执行应该被限制的功能,或者让他们访问应该被保护的资源。通常情况下,功能和资源会在代码中或通过配置设置直接保护,但要正确做到这一点并不容易。实施适当的检查是很困难的,因为现代应用程序通常包含许多类型的角色和组,加上复杂的用户层次结构。

但首先,为什么不跳进去玩玩我们的游戏化挑战,看看你在驾驭这类棘手的错误方面处于什么位置?

让我们更深入地了解一下。

API特别容易受到这种缺陷的影响,因为它们是高度结构化的。了解代码的攻击者可以对如何实现应该限制他们的命令做出有根据的猜测。这也是函数/资源级访问控制漏洞进入OWASP前十名的主要原因之一。

攻击者如何利用功能级访问控制漏洞?

怀疑功能或资源没有得到适当保护的攻击者必须首先获得对他们想要攻击的系统的访问权。为了利用这个漏洞,他们必须有权限向端点发送合法的API调用。也许有一个低级别的访客访问功能,或者有一些匿名加入的方式,作为应用程序功能的一部分。一旦建立了这种访问权限,他们就可以开始改变他们合法的API调用中的命令。例如,他们可能把GET换成PUT,或者把URL中的USERS字符串改为ADMINS。同样,由于API是结构化的,很容易猜到哪些命令是允许的,以及在字符串中的位置。

OWASP给出了一个关于这个漏洞的例子,即为允许新用户加入一个网站而设置的注册程序。它可能会使用一个API GET调用,就像这样。

GET /api/invites/{invite_guid}。

恶意用户会得到一个包含邀请细节的JSON,包括用户的角色和电子邮件。然后,他们可以将GET改为POST,还可以通过以下API调用将他们的邀请从用户提升为管理员。

POST /api/invites/new
{"email":"shadyguy@targetedsystem.com","role":"admin"}

只有管理员才能发送POST命令,但如果他们没有得到适当的保护,API将接受他们为合法的,并执行攻击者想要的东西。在这种情况下,恶意用户将被邀请作为新的管理员加入系统。之后,他们可以看到和做任何合法管理员可以做的事情,这不是什么好事。

消除功能级访问控制的漏洞

防止这种API漏洞尤其重要,因为攻击者不难找到结构化API中未受保护的函数。因此,只要他们能够获得对API的某种程度的访问,他们就可以开始映射代码的结构并创建最终会被跟踪的调用。

因此,所有业务层面的功能都必须使用基于角色的授权方法进行保护。大多数框架提供了集中的例程来实现这一目标。如果你选择的框架没有,或者它的程序很难实现,有许多外部模块是专门为方便使用而建立的。无论你最终选择什么方法,一定要在服务器上实现授权。千万不要试图从客户端保证功能的安全。

在创建功能和资源级别的权限时,请记住,用户应该只被赋予做他们需要的事情的权限,而不是其他。就像在编码API或其他任何东西时一样,实践最小权限的方法。这将确保你的环境安全,并在未来避免许多与网络安全有关的麻烦。

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

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

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