SCW图标
英雄背景无分隔线
博客

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

马蒂亚斯-马杜博士
发表于 2020 年 10 月 07 日
最后更新于 2026年3月9日

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

了解更多

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

预约演示
分享到:
领英品牌社交x 标志
作者
马蒂亚斯-马杜博士
发表于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。

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

分享到:
领英品牌社交x 标志

本系列博客将重点介绍与应用程序编程接口 (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 成功图标
SCW 错误图标
要提交表单,请启用“分析”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 培训平台可让您的所有网络安全技能不断磨练并保持最新状态。

观看网络研讨会
开始吧
了解更多

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

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

查看报告预约演示
查看资源
分享到:
领英品牌社交x 标志
对更多感兴趣?

分享到:
领英品牌社交x 标志
作者
马蒂亚斯-马杜博士
发表于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。

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

分享到:
领英品牌社交x 标志

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

了解更多

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

预约演示下载
分享到:
领英品牌社交x 标志
资源中心

帮助您入门的资源

更多帖子
资源中心

帮助您入门的资源

更多帖子