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

コーダーズ・コンカー・セキュリティ OWASP トップ 10 API シリーズ-機能レベルのアクセス制御が欠けている

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

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

显示资源
显示资源

欠落している機能レベルのアクセス制御の脆弱性により、ユーザーは制限すべき機能を実行したり、保護すべきリソースにアクセスしたりできるようになります。

您还有兴趣吗?

马蒂亚斯·马杜博士是安全专家、研究员、首席技术官,以及安全代码战士的联合创始人。马蒂亚斯在根特大学以静态分析解决方案为核心,获得了应用安全领域的博士学位。此后他加入美国Fortify公司,并意识到仅检测代码问题而未协助开发者编写安全代码是远远不够的。这一认知促使他致力于开发能帮助开发者减轻安全负担、超越客户期望的产品。作为Team Awesome成员,当他不在办公桌前时,最享受在RSA大会、BlackHat、DefCon等技术会议上登台演讲的时刻。

了解更多

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

预约演示
分享:
领英品牌社交x 标志
著者
马蒂亚斯·马杜博士
发表于2020年10月7日

马蒂亚斯·马杜博士是安全专家、研究员、首席技术官,以及安全代码战士的联合创始人。马蒂亚斯在根特大学以静态分析解决方案为核心,获得了应用安全领域的博士学位。此后他加入美国Fortify公司,并意识到仅检测代码问题而未协助开发者编写安全代码是远远不够的。这一认知促使他致力于开发能帮助开发者减轻安全负担、超越客户期望的产品。作为Team Awesome成员,当他不在办公桌前时,最享受在RSA大会、BlackHat、DefCon等技术会议上登台演讲的时刻。

马蒂亚斯是一位拥有15年以上软件安全实践经验的研究员兼开发者。他曾为Fortify Software、其创立的Sensei Security等企业开发解决方案。在职业生涯中,马蒂亚斯主导了多个应用安全研究项目,这些项目最终转化为商用产品,并获得了10余项专利。在离开办公桌时,马蒂亚斯担任高级应用安全培训课程讲师,并定期在RSA大会、黑帽大会、DefCon、BSIMM、OWASP应用安全大会、BruCon等全球性会议上发表演讲。

马蒂亚斯在根特大学获得计算机工程博士学位,期间学习了通过程序混淆技术隐藏应用程序内部运作机制的应用程序安全技术。

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

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

显示资源
显示资源

要下载报告,请填写以下表格。

恳请允许我们向您发送有关本公司产品及/或相关安全编码主题的信息。我们始终以高度谨慎的态度处理您的个人信息,绝不会出于营销目的将其出售给其他公司。

送信
scw 成功图标
SCW 错误图标
要提交表单,请启用“Analytics”Cookie。设置完成后,您可以再次将其禁用。

本系列博客将重点讨论一些最糟糕的漏洞,因为它们与应用编程接口(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致力于在整个软件开发生命周期中保护代码,并协助构建将网络安全置于首位的文化。无论您是应用程序安全经理、开发人员、首席信息安全官还是安全相关人员,我们都能帮助您降低与不安全代码相关的风险。

显示报告预约演示
下载PDF文件
显示资源
分享:
领英品牌社交x 标志
您还有兴趣吗?

分享:
领英品牌社交x 标志
著者
马蒂亚斯·马杜博士
发表于2020年10月7日

马蒂亚斯·马杜博士是安全专家、研究员、首席技术官,以及安全代码战士的联合创始人。马蒂亚斯在根特大学以静态分析解决方案为核心,获得了应用安全领域的博士学位。此后他加入美国Fortify公司,并意识到仅检测代码问题而未协助开发者编写安全代码是远远不够的。这一认知促使他致力于开发能帮助开发者减轻安全负担、超越客户期望的产品。作为Team Awesome成员,当他不在办公桌前时,最享受在RSA大会、BlackHat、DefCon等技术会议上登台演讲的时刻。

马蒂亚斯是一位拥有15年以上软件安全实践经验的研究员兼开发者。他曾为Fortify Software、其创立的Sensei Security等企业开发解决方案。在职业生涯中,马蒂亚斯主导了多个应用安全研究项目,这些项目最终转化为商用产品,并获得了10余项专利。在离开办公桌时,马蒂亚斯担任高级应用安全培训课程讲师,并定期在RSA大会、黑帽大会、DefCon、BSIMM、OWASP应用安全大会、BruCon等全球性会议上发表演讲。

马蒂亚斯在根特大学获得计算机工程博士学位,期间学习了通过程序混淆技术隐藏应用程序内部运作机制的应用程序安全技术。

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

本系列博客将重点讨论一些最糟糕的漏洞,因为它们与应用编程接口(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文件
显示资源
您还有兴趣吗?

马蒂亚斯·马杜博士是安全专家、研究员、首席技术官,以及安全代码战士的联合创始人。马蒂亚斯在根特大学以静态分析解决方案为核心,获得了应用安全领域的博士学位。此后他加入美国Fortify公司,并意识到仅检测代码问题而未协助开发者编写安全代码是远远不够的。这一认知促使他致力于开发能帮助开发者减轻安全负担、超越客户期望的产品。作为Team Awesome成员,当他不在办公桌前时,最享受在RSA大会、BlackHat、DefCon等技术会议上登台演讲的时刻。

了解更多

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

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

开始所需的资源

其他投稿
资源中心

开始所需的资源

其他投稿