编码员征服安全。分享与学习系列--商业逻辑问题

2019年3月28日出版
作者:Jaap Karan Singh
案例研究

编码员征服安全。分享与学习系列--商业逻辑问题

2019年3月28日出版
作者:Jaap Karan Singh
查看资源
查看资源

与我们在本分享与学习系列中所涉及的大多数其他漏洞不同,业务逻辑问题与编码错误没有直接关联。虽然编码问题可能是问题的一部分,但业务逻辑错误最常见的原因是设计缺陷或首次创建应用程序时不正确的逻辑假设。

如果用户在使用一个应用程序时采取了意料之外的行动,就会发生业务逻辑问题。这几乎可以是任何事情--从意外地取消一个订单,应用一个优惠券代码太多次,或者只是跳过一个预期的步骤,采取一个应用程序不知道如何处理的行动。利用商业逻辑缺陷甚至不需要任何培训,只需要一个有好奇心的恶意用户愿意跳出盒子思考。

在这一集里,我们将学习。

  • 攻击者如何利用商业逻辑中的缺陷
  • 为什么存在业务逻辑缺陷的应用程序是危险的
  • 可以防止业务逻辑错误的技术。

攻击者是如何利用商业逻辑问题的?

与大多数漏洞不同,我们无法指出可能导致这一漏洞的具体代码串。相反,它归结为用户采取了未曾预料到的行动,而程序不知道如何处理这些行动。举个例子,假设一个银行应用程序允许用户将钱转到其他账户。但是,一个恶意的用户没有汇款,而是试图向另一个账户发送一个负数。银行应用程序将如何反应?它会崩溃吗?它是否会拒绝转账?或者它可能真的把钱寄回给发起转账的用户,以平衡那个负数?

电子商务网站特别容易受到业务逻辑缺陷的影响,尽管不是唯一的,因为它们被设计成由许多用户进行交互,并且有许多组件。用户意外地取消了订单,试图多次应用单一的优惠券,甚至超载他们的购物车,都会给应用程序带来未曾预料的情况。真的没有办法知道一个程序在面对未知情况时将如何反应。最好的情况可能是生成一条错误信息,但不能保证一个应用程序不会采取更糟糕的行动,如免费提供商品。

为什么商业逻辑问题是危险的?

业务逻辑问题可能是非常危险的,因为它们可以被任何人利用,甚至是没有受过编程或黑客训练的人。这真的只需要实验和时间,点击一下,试图找到一个应用程序设计的响应方式的缺陷。而一旦一个恶意的用户发现了一个网站的商业逻辑的缺陷,你可以打赌他们会尽可能地利用它。

最大的危险通常是财务上的,让一个用户购买20台大屏幕电视而不付钱,或者类似的事情。但商业逻辑的缺陷也会引起其他问题。例如,如果保护网站的密码功能不知道在用户不断点击取消时该怎么做,它可能会让用户完全绕过登录过程。

真的没有办法预料一个商业逻辑问题会造成多大的损失。通常情况下,问题的第一个迹象是在用户利用它们之后很长时间才出现的。

修复业务逻辑问题

不幸的是,使用像漏洞扫描器这样的普通工具并不能帮助识别或修复业务逻辑问题,因为业务逻辑问题的测试不容易自动化。避免这些问题的最好方法是在开发应用程序时,对负面测试案例实施良好的规划、错误处理和测试。这首先需要一套明确定义的业务规则,其中包括应用程序被设计为采取的所有可能和期望的行动。

有了业务规则计划,防止业务逻辑缺陷的最好方法之一是创建一个流程图,显示数据和事务在应用程序中流动的所有可能方式。这包括为用户能够做出选择或输入数据的每个实例建立行为模型。不断地检查以确保流程图中可能的行动与业务规则计划中的功能相匹配。

最后,在设计、实施和测试阶段,使用威胁建模来帮助识别业务逻辑的缺陷。作为一个失败保护措施,创建一个程序在遇到任何没有特别预期的情况时应该采取的行动。这可以是简单的拒绝行动并提醒管理员遇到的问题。

关于商业逻辑问题的更多信息

要进一步阅读,你可以看一下OWASP关于商业逻辑问题的网页。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

准备好现在就去寻找并摧毁商业逻辑漏洞了吗?前往平台,测试你的技能。[从这里开始]

查看资源
查看资源

作者

Jaap Karan Singh

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

编码员征服安全。分享与学习系列--商业逻辑问题

2019年3月28日出版
作者:Jaap Karan Singh

与我们在本分享与学习系列中所涉及的大多数其他漏洞不同,业务逻辑问题与编码错误没有直接关联。虽然编码问题可能是问题的一部分,但业务逻辑错误最常见的原因是设计缺陷或首次创建应用程序时不正确的逻辑假设。

如果用户在使用一个应用程序时采取了意料之外的行动,就会发生业务逻辑问题。这几乎可以是任何事情--从意外地取消一个订单,应用一个优惠券代码太多次,或者只是跳过一个预期的步骤,采取一个应用程序不知道如何处理的行动。利用商业逻辑缺陷甚至不需要任何培训,只需要一个有好奇心的恶意用户愿意跳出盒子思考。

在这一集里,我们将学习。

  • 攻击者如何利用商业逻辑中的缺陷
  • 为什么存在业务逻辑缺陷的应用程序是危险的
  • 可以防止业务逻辑错误的技术。

攻击者是如何利用商业逻辑问题的?

与大多数漏洞不同,我们无法指出可能导致这一漏洞的具体代码串。相反,它归结为用户采取了未曾预料到的行动,而程序不知道如何处理这些行动。举个例子,假设一个银行应用程序允许用户将钱转到其他账户。但是,一个恶意的用户没有汇款,而是试图向另一个账户发送一个负数。银行应用程序将如何反应?它会崩溃吗?它是否会拒绝转账?或者它可能真的把钱寄回给发起转账的用户,以平衡那个负数?

电子商务网站特别容易受到业务逻辑缺陷的影响,尽管不是唯一的,因为它们被设计成由许多用户进行交互,并且有许多组件。用户意外地取消了订单,试图多次应用单一的优惠券,甚至超载他们的购物车,都会给应用程序带来未曾预料的情况。真的没有办法知道一个程序在面对未知情况时将如何反应。最好的情况可能是生成一条错误信息,但不能保证一个应用程序不会采取更糟糕的行动,如免费提供商品。

为什么商业逻辑问题是危险的?

业务逻辑问题可能是非常危险的,因为它们可以被任何人利用,甚至是没有受过编程或黑客训练的人。这真的只需要实验和时间,点击一下,试图找到一个应用程序设计的响应方式的缺陷。而一旦一个恶意的用户发现了一个网站的商业逻辑的缺陷,你可以打赌他们会尽可能地利用它。

最大的危险通常是财务上的,让一个用户购买20台大屏幕电视而不付钱,或者类似的事情。但商业逻辑的缺陷也会引起其他问题。例如,如果保护网站的密码功能不知道在用户不断点击取消时该怎么做,它可能会让用户完全绕过登录过程。

真的没有办法预料一个商业逻辑问题会造成多大的损失。通常情况下,问题的第一个迹象是在用户利用它们之后很长时间才出现的。

修复业务逻辑问题

不幸的是,使用像漏洞扫描器这样的普通工具并不能帮助识别或修复业务逻辑问题,因为业务逻辑问题的测试不容易自动化。避免这些问题的最好方法是在开发应用程序时,对负面测试案例实施良好的规划、错误处理和测试。这首先需要一套明确定义的业务规则,其中包括应用程序被设计为采取的所有可能和期望的行动。

有了业务规则计划,防止业务逻辑缺陷的最好方法之一是创建一个流程图,显示数据和事务在应用程序中流动的所有可能方式。这包括为用户能够做出选择或输入数据的每个实例建立行为模型。不断地检查以确保流程图中可能的行动与业务规则计划中的功能相匹配。

最后,在设计、实施和测试阶段,使用威胁建模来帮助识别业务逻辑的缺陷。作为一个失败保护措施,创建一个程序在遇到任何没有特别预期的情况时应该采取的行动。这可以是简单的拒绝行动并提醒管理员遇到的问题。

关于商业逻辑问题的更多信息

要进一步阅读,你可以看一下OWASP关于商业逻辑问题的网页。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

准备好现在就去寻找并摧毁商业逻辑漏洞了吗?前往平台,测试你的技能。[从这里开始]

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

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。