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 )。Ghent大学でアプリケーションセキュリティの博士号を取得し、静的解析ソリューションに焦点を当てた。その後、米国Fortify社に入社し、開発者が安全なコードを書くことを支援せずに、コードの問題を検出するだけでは不十分であることに気づきました。開発者を支援し、セキュリティの負担を軽減し、お客様の期待を上回る製品を開発することを志すようになった。Team Awesomeの一員としてデスクワークをしていないときは、RSA Conference、BlackHat、DefConなどのカンファレンスでプレゼンテーションをするのが好きである。

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

デモを予約する
共有する:
リンクトインのブランドソーシャルx ロゴ
作者
マティアス・マドゥ博士
2020年10月07日発行

Matias Madou, Ph.D. セキュリティ専門家、研究者、CTO兼共同設立者(Secure Code Warrior )。Ghent大学でアプリケーションセキュリティの博士号を取得し、静的解析ソリューションに焦点を当てた。その後、米国Fortify社に入社し、開発者が安全なコードを書くことを支援せずに、コードの問題を検出するだけでは不十分であることに気づきました。開発者を支援し、セキュリティの負担を軽減し、お客様の期待を上回る製品を開発することを志すようになった。Team Awesomeの一員としてデスクワークをしていないときは、RSA Conference、BlackHat、DefConなどのカンファレンスでプレゼンテーションをするのが好きである。

マティアスは、15年以上のソフトウェアセキュリティの実務経験を持つ研究者・開発者です。フォーティファイ・ソフトウェア社や自身の会社(Sensei Security)などでソリューションを開発してきました。キャリアの中で、Matiasは、商用製品につながる複数のアプリケーションセキュリティ研究プロジェクトを主導し、10件以上の特許を取得しています。また、RSAカンファレンス、Black Hat、DefCon、BSIMM、OWASP AppSec、BruConなどの世界的なカンファレンスで定期的に講演を行っているほか、高度なアプリケーションセキュリティトレーニング(courses )の講師も務めています。

Matiasはゲント大学でコンピュータ工学の博士号を取得し、アプリケーションの内部構造を隠すためのプログラム難読化によるアプリケーションセキュリティを研究しました。

共有する:
リンクトインのブランドソーシャル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は、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

レポートを確認するデモを予約する
PDFをダウンロード
リソースを確認する
共有する:
リンクトインのブランドソーシャルx ロゴ
もっと知りたいですか?

共有する:
リンクトインのブランドソーシャルx ロゴ
作者
マティアス・マドゥ博士
2020年10月07日発行

Matias Madou, Ph.D. セキュリティ専門家、研究者、CTO兼共同設立者(Secure Code Warrior )。Ghent大学でアプリケーションセキュリティの博士号を取得し、静的解析ソリューションに焦点を当てた。その後、米国Fortify社に入社し、開発者が安全なコードを書くことを支援せずに、コードの問題を検出するだけでは不十分であることに気づきました。開発者を支援し、セキュリティの負担を軽減し、お客様の期待を上回る製品を開発することを志すようになった。Team Awesomeの一員としてデスクワークをしていないときは、RSA Conference、BlackHat、DefConなどのカンファレンスでプレゼンテーションをするのが好きである。

マティアスは、15年以上のソフトウェアセキュリティの実務経験を持つ研究者・開発者です。フォーティファイ・ソフトウェア社や自身の会社(Sensei Security)などでソリューションを開発してきました。キャリアの中で、Matiasは、商用製品につながる複数のアプリケーションセキュリティ研究プロジェクトを主導し、10件以上の特許を取得しています。また、RSAカンファレンス、Black Hat、DefCon、BSIMM、OWASP AppSec、BruConなどの世界的なカンファレンスで定期的に講演を行っているほか、高度なアプリケーションセキュリティトレーニング(courses )の講師も務めています。

Matiasはゲント大学でコンピュータ工学の博士号を取得し、アプリケーションの内部構造を隠すためのプログラム難読化によるアプリケーションセキュリティを研究しました。

共有する:
リンクトインのブランドソーシャル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 )。Ghent大学でアプリケーションセキュリティの博士号を取得し、静的解析ソリューションに焦点を当てた。その後、米国Fortify社に入社し、開発者が安全なコードを書くことを支援せずに、コードの問題を検出するだけでは不十分であることに気づきました。開発者を支援し、セキュリティの負担を軽減し、お客様の期待を上回る製品を開発することを志すようになった。Team Awesomeの一員としてデスクワークをしていないときは、RSA Conference、BlackHat、DefConなどのカンファレンスでプレゼンテーションをするのが好きである。

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

デモを予約するダウンロード
共有する:
リンクトインのブランドソーシャルx ロゴ
リソースセンター

入門に役立つリソース

さらに多くの投稿
リソースセンター

入門に役立つリソース

さらに多くの投稿