SCW Icons
hero bg no divider
Blog

程序员征服安全 OWASP 十大 API 系列-缺少功能级别访问控制

Matias Madou, Ph.D.
Published Oct 07, 2020
Last updated on Mar 09, 2026

本系列博客将重点介绍与应用程序编程接口 (API) 有关的一些最严重的漏洞。这些都太糟糕了,以至于他们创建了开放 Web 应用程序安全项目 (OWASP) 主要的 API 漏洞列表。鉴于 API 对现代计算基础架构的重要性,您需要不惜一切代价将这些关键问题排除在应用程序和程序之外。

这个 缺少功能级别访问控制 漏洞允许用户执行应受限制的功能,或者允许他们访问应受保护的资源。通常,函数和资源直接受到代码或配置设置的保护,但要正确执行并不总是那么容易。实施适当的检查可能很困难,因为现代应用程序通常包含多种类型的角色和群组,以及复杂的用户层次结构。

但首先,为什么不跳进来玩我们的游戏化挑战赛,看看你在解决这一类棘手的错误时所处的位置?

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

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

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

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

OWASP 举了一个为允许新用户加入网站而设置的注册流程漏洞的示例。它可能会使用 API GET 调用,如下所示:

GET /api/invites/ {invite_guid}

恶意用户将返回一个 JSON,其中包含有关邀请的详细信息,包括用户的角色和电子邮件。然后,他们可以将 GET 更改为 POST,还可以使用以下 API 调用将邀请从用户提升到管理员:

POST /api/邀请/新增
{“电子邮件”:” shadyguy@targetedsystem.com “,“角色”: “管理员”}

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

消除功能级访问控制漏洞

防止这个 API 漏洞尤其重要,因为攻击者不难在结构化 API 中找到不受保护的函数。只要他们能够获得一定程度的API访问权限,他们就可以开始映射代码的结构并创建最终要遵循的调用。

因此,必须使用基于角色的授权方法保护所有业务级功能。大多数框架都提供集中式例程来实现这一目标。如果你选择的框架没有,或者它的例程难以实现,那么有许多外部模块是专门为易于使用而构建的。无论你最终选择什么方法,一定要在服务器上实现授权。切勿尝试从客户端保护功能。

在努力创建功能和资源级别权限时,请记住,只应向用户授予执行所需操作的权限,仅此而已。与编码 API 或其他任何东西一样,练习最低权限方法。它将保护您的环境,并避免将来出现许多与网络安全相关的问题。

来看看 安全代码勇士 博客页面,详细了解此漏洞以及如何保护您的组织和客户免受其他安全漏洞的破坏。你也可以 试试演示 Secure Code Warrior 培训平台可让您的所有网络安全技能不断磨练并保持最新状态。

查看资源
查看资源

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

对更多感兴趣?

Matias Madou, Ph.D. is a security expert, researcher, and CTO and co-founder of Secure Code Warrior. Matias obtained his Ph.D. in Application Security from Ghent University, focusing on static analysis solutions. He later joined Fortify in the US, where he realized that it was insufficient to solely detect code problems without aiding developers in writing secure code. This inspired him to develop products that assist developers, alleviate the burden of security, and exceed customers' expectations. When he is not at his desk as part of Team Awesome, he enjoys being on stage presenting at conferences including RSA Conference, BlackHat and DefCon.

learn more

Secure Code Warrior可以帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全放在首位的文化。无论您是 AppSec 经理、开发人员、首席信息安全官还是任何与安全相关的人,我们都可以帮助您的组织降低与不安全代码相关的风险。

预订演示
分享到:
linkedin brandsSocialx logo
作者
Matias Madou, Ph.D.
Published Oct 07, 2020

Matias Madou, Ph.D. is a security expert, researcher, and CTO and co-founder of Secure Code Warrior. Matias obtained his Ph.D. in Application Security from Ghent University, focusing on static analysis solutions. He later joined Fortify in the US, where he realized that it was insufficient to solely detect code problems without aiding developers in writing secure code. This inspired him to develop products that assist developers, alleviate the burden of security, and exceed customers' expectations. When he is not at his desk as part of Team Awesome, he enjoys being on stage presenting at conferences including RSA Conference, BlackHat and DefCon.

Matias is a researcher and developer with more than 15 years of hands-on software security experience. He has developed solutions for companies such as Fortify Software and his own company Sensei Security. Over his career, Matias has led multiple application security research projects which have led to commercial products and boasts over 10 patents under his belt. When he is away from his desk, Matias has served as an instructor for advanced application security training courses and regularly speaks at global conferences including RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec and BruCon.

Matias holds a Ph.D. in Computer Engineering from Ghent University, where he studied application security through program obfuscation to hide the inner workings of an application.

分享到:
linkedin brandsSocialx logo

本系列博客将重点介绍与应用程序编程接口 (API) 有关的一些最严重的漏洞。这些都太糟糕了,以至于他们创建了开放 Web 应用程序安全项目 (OWASP) 主要的 API 漏洞列表。鉴于 API 对现代计算基础架构的重要性,您需要不惜一切代价将这些关键问题排除在应用程序和程序之外。

这个 缺少功能级别访问控制 漏洞允许用户执行应受限制的功能,或者允许他们访问应受保护的资源。通常,函数和资源直接受到代码或配置设置的保护,但要正确执行并不总是那么容易。实施适当的检查可能很困难,因为现代应用程序通常包含多种类型的角色和群组,以及复杂的用户层次结构。

但首先,为什么不跳进来玩我们的游戏化挑战赛,看看你在解决这一类棘手的错误时所处的位置?

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

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

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

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

OWASP 举了一个为允许新用户加入网站而设置的注册流程漏洞的示例。它可能会使用 API GET 调用,如下所示:

GET /api/invites/ {invite_guid}

恶意用户将返回一个 JSON,其中包含有关邀请的详细信息,包括用户的角色和电子邮件。然后,他们可以将 GET 更改为 POST,还可以使用以下 API 调用将邀请从用户提升到管理员:

POST /api/邀请/新增
{“电子邮件”:” shadyguy@targetedsystem.com “,“角色”: “管理员”}

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

消除功能级访问控制漏洞

防止这个 API 漏洞尤其重要,因为攻击者不难在结构化 API 中找到不受保护的函数。只要他们能够获得一定程度的API访问权限,他们就可以开始映射代码的结构并创建最终要遵循的调用。

因此,必须使用基于角色的授权方法保护所有业务级功能。大多数框架都提供集中式例程来实现这一目标。如果你选择的框架没有,或者它的例程难以实现,那么有许多外部模块是专门为易于使用而构建的。无论你最终选择什么方法,一定要在服务器上实现授权。切勿尝试从客户端保护功能。

在努力创建功能和资源级别权限时,请记住,只应向用户授予执行所需操作的权限,仅此而已。与编码 API 或其他任何东西一样,练习最低权限方法。它将保护您的环境,并避免将来出现许多与网络安全相关的问题。

来看看 安全代码勇士 博客页面,详细了解此漏洞以及如何保护您的组织和客户免受其他安全漏洞的破坏。你也可以 试试演示 Secure Code Warrior 培训平台可让您的所有网络安全技能不断磨练并保持最新状态。

查看资源
查看资源

填写下面的表格下载报告

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

提交
scw success icon
scw error icon
要提交表单,请启用 “分析” Cookie。完成后,可以随意再次禁用它们。

本系列博客将重点介绍与应用程序编程接口 (API) 有关的一些最严重的漏洞。这些都太糟糕了,以至于他们创建了开放 Web 应用程序安全项目 (OWASP) 主要的 API 漏洞列表。鉴于 API 对现代计算基础架构的重要性,您需要不惜一切代价将这些关键问题排除在应用程序和程序之外。

这个 缺少功能级别访问控制 漏洞允许用户执行应受限制的功能,或者允许他们访问应受保护的资源。通常,函数和资源直接受到代码或配置设置的保护,但要正确执行并不总是那么容易。实施适当的检查可能很困难,因为现代应用程序通常包含多种类型的角色和群组,以及复杂的用户层次结构。

但首先,为什么不跳进来玩我们的游戏化挑战赛,看看你在解决这一类棘手的错误时所处的位置?

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

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

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

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

OWASP 举了一个为允许新用户加入网站而设置的注册流程漏洞的示例。它可能会使用 API GET 调用,如下所示:

GET /api/invites/ {invite_guid}

恶意用户将返回一个 JSON,其中包含有关邀请的详细信息,包括用户的角色和电子邮件。然后,他们可以将 GET 更改为 POST,还可以使用以下 API 调用将邀请从用户提升到管理员:

POST /api/邀请/新增
{“电子邮件”:” shadyguy@targetedsystem.com “,“角色”: “管理员”}

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

消除功能级访问控制漏洞

防止这个 API 漏洞尤其重要,因为攻击者不难在结构化 API 中找到不受保护的函数。只要他们能够获得一定程度的API访问权限,他们就可以开始映射代码的结构并创建最终要遵循的调用。

因此,必须使用基于角色的授权方法保护所有业务级功能。大多数框架都提供集中式例程来实现这一目标。如果你选择的框架没有,或者它的例程难以实现,那么有许多外部模块是专门为易于使用而构建的。无论你最终选择什么方法,一定要在服务器上实现授权。切勿尝试从客户端保护功能。

在努力创建功能和资源级别权限时,请记住,只应向用户授予执行所需操作的权限,仅此而已。与编码 API 或其他任何东西一样,练习最低权限方法。它将保护您的环境,并避免将来出现许多与网络安全相关的问题。

来看看 安全代码勇士 博客页面,详细了解此漏洞以及如何保护您的组织和客户免受其他安全漏洞的破坏。你也可以 试试演示 Secure Code Warrior 培训平台可让您的所有网络安全技能不断磨练并保持最新状态。

观看网络研讨会
开始吧
learn more

点击下面的链接并下载此资源的PDF。

Secure Code Warrior可以帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全放在首位的文化。无论您是 AppSec 经理、开发人员、首席信息安全官还是任何与安全相关的人,我们都可以帮助您的组织降低与不安全代码相关的风险。

查看报告预订演示
查看资源
分享到:
linkedin brandsSocialx logo
对更多感兴趣?

分享到:
linkedin brandsSocialx logo
作者
Matias Madou, Ph.D.
Published Oct 07, 2020

Matias Madou, Ph.D. is a security expert, researcher, and CTO and co-founder of Secure Code Warrior. Matias obtained his Ph.D. in Application Security from Ghent University, focusing on static analysis solutions. He later joined Fortify in the US, where he realized that it was insufficient to solely detect code problems without aiding developers in writing secure code. This inspired him to develop products that assist developers, alleviate the burden of security, and exceed customers' expectations. When he is not at his desk as part of Team Awesome, he enjoys being on stage presenting at conferences including RSA Conference, BlackHat and DefCon.

Matias is a researcher and developer with more than 15 years of hands-on software security experience. He has developed solutions for companies such as Fortify Software and his own company Sensei Security. Over his career, Matias has led multiple application security research projects which have led to commercial products and boasts over 10 patents under his belt. When he is away from his desk, Matias has served as an instructor for advanced application security training courses and regularly speaks at global conferences including RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec and BruCon.

Matias holds a Ph.D. in Computer Engineering from Ghent University, where he studied application security through program obfuscation to hide the inner workings of an application.

分享到:
linkedin brandsSocialx logo

本系列博客将重点介绍与应用程序编程接口 (API) 有关的一些最严重的漏洞。这些都太糟糕了,以至于他们创建了开放 Web 应用程序安全项目 (OWASP) 主要的 API 漏洞列表。鉴于 API 对现代计算基础架构的重要性,您需要不惜一切代价将这些关键问题排除在应用程序和程序之外。

这个 缺少功能级别访问控制 漏洞允许用户执行应受限制的功能,或者允许他们访问应受保护的资源。通常,函数和资源直接受到代码或配置设置的保护,但要正确执行并不总是那么容易。实施适当的检查可能很困难,因为现代应用程序通常包含多种类型的角色和群组,以及复杂的用户层次结构。

但首先,为什么不跳进来玩我们的游戏化挑战赛,看看你在解决这一类棘手的错误时所处的位置?

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

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

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

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

OWASP 举了一个为允许新用户加入网站而设置的注册流程漏洞的示例。它可能会使用 API GET 调用,如下所示:

GET /api/invites/ {invite_guid}

恶意用户将返回一个 JSON,其中包含有关邀请的详细信息,包括用户的角色和电子邮件。然后,他们可以将 GET 更改为 POST,还可以使用以下 API 调用将邀请从用户提升到管理员:

POST /api/邀请/新增
{“电子邮件”:” shadyguy@targetedsystem.com “,“角色”: “管理员”}

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

消除功能级访问控制漏洞

防止这个 API 漏洞尤其重要,因为攻击者不难在结构化 API 中找到不受保护的函数。只要他们能够获得一定程度的API访问权限,他们就可以开始映射代码的结构并创建最终要遵循的调用。

因此,必须使用基于角色的授权方法保护所有业务级功能。大多数框架都提供集中式例程来实现这一目标。如果你选择的框架没有,或者它的例程难以实现,那么有许多外部模块是专门为易于使用而构建的。无论你最终选择什么方法,一定要在服务器上实现授权。切勿尝试从客户端保护功能。

在努力创建功能和资源级别权限时,请记住,只应向用户授予执行所需操作的权限,仅此而已。与编码 API 或其他任何东西一样,练习最低权限方法。它将保护您的环境,并避免将来出现许多与网络安全相关的问题。

来看看 安全代码勇士 博客页面,详细了解此漏洞以及如何保护您的组织和客户免受其他安全漏洞的破坏。你也可以 试试演示 Secure Code Warrior 培训平台可让您的所有网络安全技能不断磨练并保持最新状态。

目录

下载PDF
查看资源
对更多感兴趣?

Matias Madou, Ph.D. is a security expert, researcher, and CTO and co-founder of Secure Code Warrior. Matias obtained his Ph.D. in Application Security from Ghent University, focusing on static analysis solutions. He later joined Fortify in the US, where he realized that it was insufficient to solely detect code problems without aiding developers in writing secure code. This inspired him to develop products that assist developers, alleviate the burden of security, and exceed customers' expectations. When he is not at his desk as part of Team Awesome, he enjoys being on stage presenting at conferences including RSA Conference, BlackHat and DefCon.

learn more

Secure Code Warrior可以帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全放在首位的文化。无论您是 AppSec 经理、开发人员、首席信息安全官还是任何与安全相关的人,我们都可以帮助您的组织降低与不安全代码相关的风险。

预订演示下载
分享到:
linkedin brandsSocialx logo
资源中心

帮助您入门的资源

更多帖子
资源中心

帮助您入门的资源

更多帖子