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

コーダーがセキュリティインフラストラクチャを征服するコードシリーズ-ビジネスロジック

马蒂亚斯·马杜博士
出版日期: 2020 年 6 月 22 日
最后更新于 2026年3月10日

好了,这就是它(目前)。我们的基础设施即代码系列已经结束了。我们希望你在征服Docker、Ansible、Kubernetes、Terraform和CloudFormation中的安全问题时感到愉快。不过在我们结束之前,我们还有一个漏洞需要你掌握:业务逻辑错误。

你认为你现在准备好测试你的技能了吗?试试最后的游戏化挑战。

如果你对一些事情还不清楚,请继续阅读。

我们今天要关注的漏洞是业务逻辑缺陷。当编码员未能正确地实现业务逻辑规则时,就会出现这些漏洞,如果恶意用户选择利用它们,就会使他们的应用程序容易受到不同种类的攻击。根据每个应用程序的目的和实现的功能,业务逻辑缺陷可能允许特权升级、不适当的资源使用或任何数量的非预期的业务流程被执行。

与许多漏洞不同的是,业务逻辑规则的不正确实现可能出乎意料地微妙。它们需要特别警惕,以确保它们不会潜入应用程序和代码。

业务逻辑缺陷的例子有哪些?

作为诱发业务逻辑缺陷的一个例子,请考虑下面这个用Docker Compose文件定义的Docker环境中的例子。为了准备容器执行功能,开发者可能会使用一个标准的资源策略,在Docker Compose文件中定义,就像下面这个例子。

部署:
资源。
limits:
cpus:"0.5"
reservations:
cpus:"0.5"

虽然这在表面上看起来很好,但这个容器的资源策略并没有正确限制资源的使用。攻击者可以利用业务逻辑的缺陷来实施拒绝服务(DoS)攻击。

为了尝试限制用户占用过多的资源,开发者可能会尝试更好地定义每个容器可以支持的内容。因此,新的代码可能包括一个放置限制。

部署:
资源。
limits:
cpus:"0.5"
reservations:
cpus:"0.5"
placement:
constraints:
- "node.labs.limit_cpu == 100M"
- "node.labs.limit_memory == 0.5"

乍一看,这似乎可以解决业务逻辑的缺陷。然而,新的放置约束并不影响Docker容器服务的资源使用限制。它只是用来选择一个节点来安排容器。在这种情况下,DoS攻击仍然是可能的。攻击者需要先破坏一个Docker容器,但之后就可以无限制地消耗资源。

正如你所看到的,思考商业逻辑的缺陷并通过编程来消除它们可能是一项棘手的工作。

消除业务逻辑缺陷

对于业务逻辑缺陷,关键是要知道它们的存在。在编写新的代码时,你需要保持警惕,不让它们出现在你的环境中。业务规则和最佳实践应该被明确定义,并在应用程序开发过程的所有阶段进行检查,包括设计、实施和测试。

例如,为了防止业务逻辑缺陷导致DoS攻击,比如上面的例子,一个最佳做法是限制你创建的每个Docker容器可以使用的资源量。具体来说,限制部分必须指定一个Docker容器可以使用的CPU数量和内存数量。一个例子是。

部署:
资源。
limits:
cpus:"0.5"
memory: 100M
reservations:
cpus:"0.5"
内存。50M

使用像上面的例子那样的代码作为一个策略,可以从环境中消除一个主要的业务逻辑缺陷,并防止DoS攻击。即使攻击者破坏了其中一个Docker容器,这也是可行的。在这种情况下,攻击者仍然无法利用他们的立足点来耗尽资源。

威胁建模可以通过定义不同攻击的发生方式,并确保使用业务逻辑规则来防止和限制它们,从而起到帮助作用。基于合规规则和已知滥用案例的测试也可以帮助捕捉漏网之鱼的业务逻辑缺陷。

业务逻辑缺陷是一些可以潜入应用程序的最微妙的漏洞,但其危险性并不亚于其他更引人注目的风险。了解它们是如何发生的,并使用最佳实践可以在应用开发过程中把它们挡在你的环境之外,确保它们永远不会到达生产环境,在那里它们可以被非常熟悉如何利用它们的攻击者所滥用。

请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和客户免受其他安全缺陷的蹂躏。你也可以在Secure Code Warrior 培训平台上尝试演示这个IaC挑战,以保持你的所有网络安全技能得到磨练和更新。


显示资源
显示资源

この脆弱性は、コーダーがビジネスロジックルールを適切に実装できない場合に発生する可能性があり、悪意のあるユーザーがそれらを悪用した場合、アプリケーションがさまざまな種類の攻撃に対して脆弱になる可能性があります。

您还有兴趣吗?

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

了解更多

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

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

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

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

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

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

好了,这就是它(目前)。我们的基础设施即代码系列已经结束了。我们希望你在征服Docker、Ansible、Kubernetes、Terraform和CloudFormation中的安全问题时感到愉快。不过在我们结束之前,我们还有一个漏洞需要你掌握:业务逻辑错误。

你认为你现在准备好测试你的技能了吗?试试最后的游戏化挑战。

如果你对一些事情还不清楚,请继续阅读。

我们今天要关注的漏洞是业务逻辑缺陷。当编码员未能正确地实现业务逻辑规则时,就会出现这些漏洞,如果恶意用户选择利用它们,就会使他们的应用程序容易受到不同种类的攻击。根据每个应用程序的目的和实现的功能,业务逻辑缺陷可能允许特权升级、不适当的资源使用或任何数量的非预期的业务流程被执行。

与许多漏洞不同的是,业务逻辑规则的不正确实现可能出乎意料地微妙。它们需要特别警惕,以确保它们不会潜入应用程序和代码。

业务逻辑缺陷的例子有哪些?

作为诱发业务逻辑缺陷的一个例子,请考虑下面这个用Docker Compose文件定义的Docker环境中的例子。为了准备容器执行功能,开发者可能会使用一个标准的资源策略,在Docker Compose文件中定义,就像下面这个例子。

部署:
资源。
limits:
cpus:"0.5"
reservations:
cpus:"0.5"

虽然这在表面上看起来很好,但这个容器的资源策略并没有正确限制资源的使用。攻击者可以利用业务逻辑的缺陷来实施拒绝服务(DoS)攻击。

为了尝试限制用户占用过多的资源,开发者可能会尝试更好地定义每个容器可以支持的内容。因此,新的代码可能包括一个放置限制。

部署:
资源。
limits:
cpus:"0.5"
reservations:
cpus:"0.5"
placement:
constraints:
- "node.labs.limit_cpu == 100M"
- "node.labs.limit_memory == 0.5"

乍一看,这似乎可以解决业务逻辑的缺陷。然而,新的放置约束并不影响Docker容器服务的资源使用限制。它只是用来选择一个节点来安排容器。在这种情况下,DoS攻击仍然是可能的。攻击者需要先破坏一个Docker容器,但之后就可以无限制地消耗资源。

正如你所看到的,思考商业逻辑的缺陷并通过编程来消除它们可能是一项棘手的工作。

消除业务逻辑缺陷

对于业务逻辑缺陷,关键是要知道它们的存在。在编写新的代码时,你需要保持警惕,不让它们出现在你的环境中。业务规则和最佳实践应该被明确定义,并在应用程序开发过程的所有阶段进行检查,包括设计、实施和测试。

例如,为了防止业务逻辑缺陷导致DoS攻击,比如上面的例子,一个最佳做法是限制你创建的每个Docker容器可以使用的资源量。具体来说,限制部分必须指定一个Docker容器可以使用的CPU数量和内存数量。一个例子是。

部署:
资源。
limits:
cpus:"0.5"
memory: 100M
reservations:
cpus:"0.5"
内存。50M

使用像上面的例子那样的代码作为一个策略,可以从环境中消除一个主要的业务逻辑缺陷,并防止DoS攻击。即使攻击者破坏了其中一个Docker容器,这也是可行的。在这种情况下,攻击者仍然无法利用他们的立足点来耗尽资源。

威胁建模可以通过定义不同攻击的发生方式,并确保使用业务逻辑规则来防止和限制它们,从而起到帮助作用。基于合规规则和已知滥用案例的测试也可以帮助捕捉漏网之鱼的业务逻辑缺陷。

业务逻辑缺陷是一些可以潜入应用程序的最微妙的漏洞,但其危险性并不亚于其他更引人注目的风险。了解它们是如何发生的,并使用最佳实践可以在应用开发过程中把它们挡在你的环境之外,确保它们永远不会到达生产环境,在那里它们可以被非常熟悉如何利用它们的攻击者所滥用。

请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和客户免受其他安全缺陷的蹂躏。你也可以在Secure Code Warrior 培训平台上尝试演示这个IaC挑战,以保持你的所有网络安全技能得到磨练和更新。


显示资源
显示资源

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

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

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

好了,这就是它(目前)。我们的基础设施即代码系列已经结束了。我们希望你在征服Docker、Ansible、Kubernetes、Terraform和CloudFormation中的安全问题时感到愉快。不过在我们结束之前,我们还有一个漏洞需要你掌握:业务逻辑错误。

你认为你现在准备好测试你的技能了吗?试试最后的游戏化挑战。

如果你对一些事情还不清楚,请继续阅读。

我们今天要关注的漏洞是业务逻辑缺陷。当编码员未能正确地实现业务逻辑规则时,就会出现这些漏洞,如果恶意用户选择利用它们,就会使他们的应用程序容易受到不同种类的攻击。根据每个应用程序的目的和实现的功能,业务逻辑缺陷可能允许特权升级、不适当的资源使用或任何数量的非预期的业务流程被执行。

与许多漏洞不同的是,业务逻辑规则的不正确实现可能出乎意料地微妙。它们需要特别警惕,以确保它们不会潜入应用程序和代码。

业务逻辑缺陷的例子有哪些?

作为诱发业务逻辑缺陷的一个例子,请考虑下面这个用Docker Compose文件定义的Docker环境中的例子。为了准备容器执行功能,开发者可能会使用一个标准的资源策略,在Docker Compose文件中定义,就像下面这个例子。

部署:
资源。
limits:
cpus:"0.5"
reservations:
cpus:"0.5"

虽然这在表面上看起来很好,但这个容器的资源策略并没有正确限制资源的使用。攻击者可以利用业务逻辑的缺陷来实施拒绝服务(DoS)攻击。

为了尝试限制用户占用过多的资源,开发者可能会尝试更好地定义每个容器可以支持的内容。因此,新的代码可能包括一个放置限制。

部署:
资源。
limits:
cpus:"0.5"
reservations:
cpus:"0.5"
placement:
constraints:
- "node.labs.limit_cpu == 100M"
- "node.labs.limit_memory == 0.5"

乍一看,这似乎可以解决业务逻辑的缺陷。然而,新的放置约束并不影响Docker容器服务的资源使用限制。它只是用来选择一个节点来安排容器。在这种情况下,DoS攻击仍然是可能的。攻击者需要先破坏一个Docker容器,但之后就可以无限制地消耗资源。

正如你所看到的,思考商业逻辑的缺陷并通过编程来消除它们可能是一项棘手的工作。

消除业务逻辑缺陷

对于业务逻辑缺陷,关键是要知道它们的存在。在编写新的代码时,你需要保持警惕,不让它们出现在你的环境中。业务规则和最佳实践应该被明确定义,并在应用程序开发过程的所有阶段进行检查,包括设计、实施和测试。

例如,为了防止业务逻辑缺陷导致DoS攻击,比如上面的例子,一个最佳做法是限制你创建的每个Docker容器可以使用的资源量。具体来说,限制部分必须指定一个Docker容器可以使用的CPU数量和内存数量。一个例子是。

部署:
资源。
limits:
cpus:"0.5"
memory: 100M
reservations:
cpus:"0.5"
内存。50M

使用像上面的例子那样的代码作为一个策略,可以从环境中消除一个主要的业务逻辑缺陷,并防止DoS攻击。即使攻击者破坏了其中一个Docker容器,这也是可行的。在这种情况下,攻击者仍然无法利用他们的立足点来耗尽资源。

威胁建模可以通过定义不同攻击的发生方式,并确保使用业务逻辑规则来防止和限制它们,从而起到帮助作用。基于合规规则和已知滥用案例的测试也可以帮助捕捉漏网之鱼的业务逻辑缺陷。

业务逻辑缺陷是一些可以潜入应用程序的最微妙的漏洞,但其危险性并不亚于其他更引人注目的风险。了解它们是如何发生的,并使用最佳实践可以在应用开发过程中把它们挡在你的环境之外,确保它们永远不会到达生产环境,在那里它们可以被非常熟悉如何利用它们的攻击者所滥用。

请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和客户免受其他安全缺陷的蹂躏。你也可以在Secure Code Warrior 培训平台上尝试演示这个IaC挑战,以保持你的所有网络安全技能得到磨练和更新。


观看在线研讨会
开始吧
了解更多

请点击以下链接下载此资源的PDF文件。

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

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

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

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

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

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

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

好了,这就是它(目前)。我们的基础设施即代码系列已经结束了。我们希望你在征服Docker、Ansible、Kubernetes、Terraform和CloudFormation中的安全问题时感到愉快。不过在我们结束之前,我们还有一个漏洞需要你掌握:业务逻辑错误。

你认为你现在准备好测试你的技能了吗?试试最后的游戏化挑战。

如果你对一些事情还不清楚,请继续阅读。

我们今天要关注的漏洞是业务逻辑缺陷。当编码员未能正确地实现业务逻辑规则时,就会出现这些漏洞,如果恶意用户选择利用它们,就会使他们的应用程序容易受到不同种类的攻击。根据每个应用程序的目的和实现的功能,业务逻辑缺陷可能允许特权升级、不适当的资源使用或任何数量的非预期的业务流程被执行。

与许多漏洞不同的是,业务逻辑规则的不正确实现可能出乎意料地微妙。它们需要特别警惕,以确保它们不会潜入应用程序和代码。

业务逻辑缺陷的例子有哪些?

作为诱发业务逻辑缺陷的一个例子,请考虑下面这个用Docker Compose文件定义的Docker环境中的例子。为了准备容器执行功能,开发者可能会使用一个标准的资源策略,在Docker Compose文件中定义,就像下面这个例子。

部署:
资源。
limits:
cpus:"0.5"
reservations:
cpus:"0.5"

虽然这在表面上看起来很好,但这个容器的资源策略并没有正确限制资源的使用。攻击者可以利用业务逻辑的缺陷来实施拒绝服务(DoS)攻击。

为了尝试限制用户占用过多的资源,开发者可能会尝试更好地定义每个容器可以支持的内容。因此,新的代码可能包括一个放置限制。

部署:
资源。
limits:
cpus:"0.5"
reservations:
cpus:"0.5"
placement:
constraints:
- "node.labs.limit_cpu == 100M"
- "node.labs.limit_memory == 0.5"

乍一看,这似乎可以解决业务逻辑的缺陷。然而,新的放置约束并不影响Docker容器服务的资源使用限制。它只是用来选择一个节点来安排容器。在这种情况下,DoS攻击仍然是可能的。攻击者需要先破坏一个Docker容器,但之后就可以无限制地消耗资源。

正如你所看到的,思考商业逻辑的缺陷并通过编程来消除它们可能是一项棘手的工作。

消除业务逻辑缺陷

对于业务逻辑缺陷,关键是要知道它们的存在。在编写新的代码时,你需要保持警惕,不让它们出现在你的环境中。业务规则和最佳实践应该被明确定义,并在应用程序开发过程的所有阶段进行检查,包括设计、实施和测试。

例如,为了防止业务逻辑缺陷导致DoS攻击,比如上面的例子,一个最佳做法是限制你创建的每个Docker容器可以使用的资源量。具体来说,限制部分必须指定一个Docker容器可以使用的CPU数量和内存数量。一个例子是。

部署:
资源。
limits:
cpus:"0.5"
memory: 100M
reservations:
cpus:"0.5"
内存。50M

使用像上面的例子那样的代码作为一个策略,可以从环境中消除一个主要的业务逻辑缺陷,并防止DoS攻击。即使攻击者破坏了其中一个Docker容器,这也是可行的。在这种情况下,攻击者仍然无法利用他们的立足点来耗尽资源。

威胁建模可以通过定义不同攻击的发生方式,并确保使用业务逻辑规则来防止和限制它们,从而起到帮助作用。基于合规规则和已知滥用案例的测试也可以帮助捕捉漏网之鱼的业务逻辑缺陷。

业务逻辑缺陷是一些可以潜入应用程序的最微妙的漏洞,但其危险性并不亚于其他更引人注目的风险。了解它们是如何发生的,并使用最佳实践可以在应用开发过程中把它们挡在你的环境之外,确保它们永远不会到达生产环境,在那里它们可以被非常熟悉如何利用它们的攻击者所滥用。

请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和客户免受其他安全缺陷的蹂躏。你也可以在Secure Code Warrior 培训平台上尝试演示这个IaC挑战,以保持你的所有网络安全技能得到磨练和更新。


目录

下载PDF文件
显示资源
您还有兴趣吗?

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

了解更多

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

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

开始所需的资源

其他投稿
资源中心

开始所需的资源

其他投稿