博客

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 培训平台的演示,以保持你所有的网络安全技能得到磨练和更新。

查看资源
查看资源

缺少的功能级访问控制漏洞允许用户执行应该被限制的功能,或者让他们访问应该被保护的资源。

想了解更多信息?

Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。

预定一个演示
分享到
作者
马蒂亚斯-马杜博士
发表于2020年10月7日

Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。

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

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

分享到

本系列博客将重点讨论一些最糟糕的漏洞,因为它们与应用编程接口(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。完成后,请随时再次禁用它们。

本系列博客将重点讨论一些最糟糕的漏洞,因为它们与应用编程接口(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 培训平台的演示,以保持你所有的网络安全技能得到磨练和更新。

访问资源

点击下面的链接,下载本资料的 PDF 文件。

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。

查看报告预定一个演示
下载PDF
查看资源
分享到
想了解更多信息?

分享到
作者
马蒂亚斯-马杜博士
发表于2020年10月7日

Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。

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

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

分享到

本系列博客将重点讨论一些最糟糕的漏洞,因为它们与应用编程接口(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 培训平台的演示,以保持你所有的网络安全技能得到磨练和更新。

目录

下载PDF
查看资源
想了解更多信息?

Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。

预定一个演示下载
分享到
资源中心
资源中心