编码员征服安全。分享与学习系列--商业逻辑问题
与我们在本分享与学习系列中所涉及的大多数其他漏洞不同,业务逻辑问题与编码错误没有直接关联。虽然编码问题可能是问题的一部分,但业务逻辑错误最常见的原因是设计缺陷或首次创建应用程序时不正确的逻辑假设。
如果用户在使用一个应用程序时采取了意料之外的行动,就会发生业务逻辑问题。这几乎可以是任何事情--从意外地取消一个订单,应用一个优惠券代码太多次,或者只是跳过一个预期的步骤,采取一个应用程序不知道如何处理的行动。利用商业逻辑缺陷甚至不需要任何培训,只需要一个有好奇心的恶意用户愿意跳出盒子思考。
在这一集里,我们将学习。
- 攻击者如何利用商业逻辑中的缺陷
- 为什么存在业务逻辑缺陷的应用程序是危险的
- 可以防止业务逻辑错误的技术。
攻击者是如何利用商业逻辑问题的?
与大多数漏洞不同,我们无法指出可能导致这一漏洞的具体代码串。相反,它归结为用户采取了未曾预料到的行动,而程序不知道如何处理这些行动。举个例子,假设一个银行应用程序允许用户将钱转到其他账户。但是,一个恶意的用户没有汇款,而是试图向另一个账户发送一个负数。银行应用程序将如何反应?它会崩溃吗?它是否会拒绝转账?或者它可能真的把钱寄回给发起转账的用户,以平衡那个负数?
电子商务网站特别容易受到业务逻辑缺陷的影响,尽管不是唯一的,因为它们被设计成由许多用户进行交互,并且有许多组件。用户意外地取消了订单,试图多次应用单一的优惠券,甚至超载他们的购物车,都会给应用程序带来未曾预料的情况。真的没有办法知道一个程序在面对未知情况时将如何反应。最好的情况可能是生成一条错误信息,但不能保证一个应用程序不会采取更糟糕的行动,如免费提供商品。
为什么商业逻辑问题是危险的?
业务逻辑问题可能是非常危险的,因为它们可以被任何人利用,甚至是没有受过编程或黑客训练的人。这真的只需要实验和时间,点击一下,试图找到一个应用程序设计的响应方式的缺陷。而一旦一个恶意的用户发现了一个网站的商业逻辑的缺陷,你可以打赌他们会尽可能地利用它。
最大的危险通常是财务上的,让一个用户购买20台大屏幕电视而不付钱,或者类似的事情。但商业逻辑的缺陷也会引起其他问题。例如,如果保护网站的密码功能不知道在用户不断点击取消时该怎么做,它可能会让用户完全绕过登录过程。
真的没有办法预料一个商业逻辑问题会造成多大的损失。通常情况下,问题的第一个迹象是在用户利用它们之后很长时间才出现的。
修复业务逻辑问题
不幸的是,使用像漏洞扫描器这样的普通工具并不能帮助识别或修复业务逻辑问题,因为业务逻辑问题的测试不容易自动化。避免这些问题的最好方法是在开发应用程序时,对负面测试案例实施良好的规划、错误处理和测试。这首先需要一套明确定义的业务规则,其中包括应用程序被设计为采取的所有可能和期望的行动。
有了业务规则计划,防止业务逻辑缺陷的最好方法之一是创建一个流程图,显示数据和事务在应用程序中流动的所有可能方式。这包括为用户能够做出选择或输入数据的每个实例建立行为模型。不断地检查以确保流程图中可能的行动与业务规则计划中的功能相匹配。
最后,在设计、实施和测试阶段,使用威胁建模来帮助识别业务逻辑的缺陷。作为一个失败保护措施,创建一个程序在遇到任何没有特别预期的情况时应该采取的行动。这可以是简单的拒绝行动并提醒管理员遇到的问题。
关于商业逻辑问题的更多信息
要进一步阅读,你可以看一下OWASP关于商业逻辑问题的网页。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。
准备好现在就去寻找并摧毁商业逻辑漏洞了吗?前往平台,测试你的技能。[从这里开始]
Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。
预定一个演示Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。


与我们在本分享与学习系列中所涉及的大多数其他漏洞不同,业务逻辑问题与编码错误没有直接关联。虽然编码问题可能是问题的一部分,但业务逻辑错误最常见的原因是设计缺陷或首次创建应用程序时不正确的逻辑假设。
如果用户在使用一个应用程序时采取了意料之外的行动,就会发生业务逻辑问题。这几乎可以是任何事情--从意外地取消一个订单,应用一个优惠券代码太多次,或者只是跳过一个预期的步骤,采取一个应用程序不知道如何处理的行动。利用商业逻辑缺陷甚至不需要任何培训,只需要一个有好奇心的恶意用户愿意跳出盒子思考。
在这一集里,我们将学习。
- 攻击者如何利用商业逻辑中的缺陷
- 为什么存在业务逻辑缺陷的应用程序是危险的
- 可以防止业务逻辑错误的技术。
攻击者是如何利用商业逻辑问题的?
与大多数漏洞不同,我们无法指出可能导致这一漏洞的具体代码串。相反,它归结为用户采取了未曾预料到的行动,而程序不知道如何处理这些行动。举个例子,假设一个银行应用程序允许用户将钱转到其他账户。但是,一个恶意的用户没有汇款,而是试图向另一个账户发送一个负数。银行应用程序将如何反应?它会崩溃吗?它是否会拒绝转账?或者它可能真的把钱寄回给发起转账的用户,以平衡那个负数?
电子商务网站特别容易受到业务逻辑缺陷的影响,尽管不是唯一的,因为它们被设计成由许多用户进行交互,并且有许多组件。用户意外地取消了订单,试图多次应用单一的优惠券,甚至超载他们的购物车,都会给应用程序带来未曾预料的情况。真的没有办法知道一个程序在面对未知情况时将如何反应。最好的情况可能是生成一条错误信息,但不能保证一个应用程序不会采取更糟糕的行动,如免费提供商品。
为什么商业逻辑问题是危险的?
业务逻辑问题可能是非常危险的,因为它们可以被任何人利用,甚至是没有受过编程或黑客训练的人。这真的只需要实验和时间,点击一下,试图找到一个应用程序设计的响应方式的缺陷。而一旦一个恶意的用户发现了一个网站的商业逻辑的缺陷,你可以打赌他们会尽可能地利用它。
最大的危险通常是财务上的,让一个用户购买20台大屏幕电视而不付钱,或者类似的事情。但商业逻辑的缺陷也会引起其他问题。例如,如果保护网站的密码功能不知道在用户不断点击取消时该怎么做,它可能会让用户完全绕过登录过程。
真的没有办法预料一个商业逻辑问题会造成多大的损失。通常情况下,问题的第一个迹象是在用户利用它们之后很长时间才出现的。
修复业务逻辑问题
不幸的是,使用像漏洞扫描器这样的普通工具并不能帮助识别或修复业务逻辑问题,因为业务逻辑问题的测试不容易自动化。避免这些问题的最好方法是在开发应用程序时,对负面测试案例实施良好的规划、错误处理和测试。这首先需要一套明确定义的业务规则,其中包括应用程序被设计为采取的所有可能和期望的行动。
有了业务规则计划,防止业务逻辑缺陷的最好方法之一是创建一个流程图,显示数据和事务在应用程序中流动的所有可能方式。这包括为用户能够做出选择或输入数据的每个实例建立行为模型。不断地检查以确保流程图中可能的行动与业务规则计划中的功能相匹配。
最后,在设计、实施和测试阶段,使用威胁建模来帮助识别业务逻辑的缺陷。作为一个失败保护措施,创建一个程序在遇到任何没有特别预期的情况时应该采取的行动。这可以是简单的拒绝行动并提醒管理员遇到的问题。
关于商业逻辑问题的更多信息
要进一步阅读,你可以看一下OWASP关于商业逻辑问题的网页。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。
准备好现在就去寻找并摧毁商业逻辑漏洞了吗?前往平台,测试你的技能。[从这里开始]

与我们在本分享与学习系列中所涉及的大多数其他漏洞不同,业务逻辑问题与编码错误没有直接关联。虽然编码问题可能是问题的一部分,但业务逻辑错误最常见的原因是设计缺陷或首次创建应用程序时不正确的逻辑假设。
如果用户在使用一个应用程序时采取了意料之外的行动,就会发生业务逻辑问题。这几乎可以是任何事情--从意外地取消一个订单,应用一个优惠券代码太多次,或者只是跳过一个预期的步骤,采取一个应用程序不知道如何处理的行动。利用商业逻辑缺陷甚至不需要任何培训,只需要一个有好奇心的恶意用户愿意跳出盒子思考。
在这一集里,我们将学习。
- 攻击者如何利用商业逻辑中的缺陷
- 为什么存在业务逻辑缺陷的应用程序是危险的
- 可以防止业务逻辑错误的技术。
攻击者是如何利用商业逻辑问题的?
与大多数漏洞不同,我们无法指出可能导致这一漏洞的具体代码串。相反,它归结为用户采取了未曾预料到的行动,而程序不知道如何处理这些行动。举个例子,假设一个银行应用程序允许用户将钱转到其他账户。但是,一个恶意的用户没有汇款,而是试图向另一个账户发送一个负数。银行应用程序将如何反应?它会崩溃吗?它是否会拒绝转账?或者它可能真的把钱寄回给发起转账的用户,以平衡那个负数?
电子商务网站特别容易受到业务逻辑缺陷的影响,尽管不是唯一的,因为它们被设计成由许多用户进行交互,并且有许多组件。用户意外地取消了订单,试图多次应用单一的优惠券,甚至超载他们的购物车,都会给应用程序带来未曾预料的情况。真的没有办法知道一个程序在面对未知情况时将如何反应。最好的情况可能是生成一条错误信息,但不能保证一个应用程序不会采取更糟糕的行动,如免费提供商品。
为什么商业逻辑问题是危险的?
业务逻辑问题可能是非常危险的,因为它们可以被任何人利用,甚至是没有受过编程或黑客训练的人。这真的只需要实验和时间,点击一下,试图找到一个应用程序设计的响应方式的缺陷。而一旦一个恶意的用户发现了一个网站的商业逻辑的缺陷,你可以打赌他们会尽可能地利用它。
最大的危险通常是财务上的,让一个用户购买20台大屏幕电视而不付钱,或者类似的事情。但商业逻辑的缺陷也会引起其他问题。例如,如果保护网站的密码功能不知道在用户不断点击取消时该怎么做,它可能会让用户完全绕过登录过程。
真的没有办法预料一个商业逻辑问题会造成多大的损失。通常情况下,问题的第一个迹象是在用户利用它们之后很长时间才出现的。
修复业务逻辑问题
不幸的是,使用像漏洞扫描器这样的普通工具并不能帮助识别或修复业务逻辑问题,因为业务逻辑问题的测试不容易自动化。避免这些问题的最好方法是在开发应用程序时,对负面测试案例实施良好的规划、错误处理和测试。这首先需要一套明确定义的业务规则,其中包括应用程序被设计为采取的所有可能和期望的行动。
有了业务规则计划,防止业务逻辑缺陷的最好方法之一是创建一个流程图,显示数据和事务在应用程序中流动的所有可能方式。这包括为用户能够做出选择或输入数据的每个实例建立行为模型。不断地检查以确保流程图中可能的行动与业务规则计划中的功能相匹配。
最后,在设计、实施和测试阶段,使用威胁建模来帮助识别业务逻辑的缺陷。作为一个失败保护措施,创建一个程序在遇到任何没有特别预期的情况时应该采取的行动。这可以是简单的拒绝行动并提醒管理员遇到的问题。
关于商业逻辑问题的更多信息
要进一步阅读,你可以看一下OWASP关于商业逻辑问题的网页。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。
准备好现在就去寻找并摧毁商业逻辑漏洞了吗?前往平台,测试你的技能。[从这里开始]
与我们在本分享与学习系列中所涉及的大多数其他漏洞不同,业务逻辑问题与编码错误没有直接关联。虽然编码问题可能是问题的一部分,但业务逻辑错误最常见的原因是设计缺陷或首次创建应用程序时不正确的逻辑假设。
如果用户在使用一个应用程序时采取了意料之外的行动,就会发生业务逻辑问题。这几乎可以是任何事情--从意外地取消一个订单,应用一个优惠券代码太多次,或者只是跳过一个预期的步骤,采取一个应用程序不知道如何处理的行动。利用商业逻辑缺陷甚至不需要任何培训,只需要一个有好奇心的恶意用户愿意跳出盒子思考。
在这一集里,我们将学习。
- 攻击者如何利用商业逻辑中的缺陷
- 为什么存在业务逻辑缺陷的应用程序是危险的
- 可以防止业务逻辑错误的技术。
攻击者是如何利用商业逻辑问题的?
与大多数漏洞不同,我们无法指出可能导致这一漏洞的具体代码串。相反,它归结为用户采取了未曾预料到的行动,而程序不知道如何处理这些行动。举个例子,假设一个银行应用程序允许用户将钱转到其他账户。但是,一个恶意的用户没有汇款,而是试图向另一个账户发送一个负数。银行应用程序将如何反应?它会崩溃吗?它是否会拒绝转账?或者它可能真的把钱寄回给发起转账的用户,以平衡那个负数?
电子商务网站特别容易受到业务逻辑缺陷的影响,尽管不是唯一的,因为它们被设计成由许多用户进行交互,并且有许多组件。用户意外地取消了订单,试图多次应用单一的优惠券,甚至超载他们的购物车,都会给应用程序带来未曾预料的情况。真的没有办法知道一个程序在面对未知情况时将如何反应。最好的情况可能是生成一条错误信息,但不能保证一个应用程序不会采取更糟糕的行动,如免费提供商品。
为什么商业逻辑问题是危险的?
业务逻辑问题可能是非常危险的,因为它们可以被任何人利用,甚至是没有受过编程或黑客训练的人。这真的只需要实验和时间,点击一下,试图找到一个应用程序设计的响应方式的缺陷。而一旦一个恶意的用户发现了一个网站的商业逻辑的缺陷,你可以打赌他们会尽可能地利用它。
最大的危险通常是财务上的,让一个用户购买20台大屏幕电视而不付钱,或者类似的事情。但商业逻辑的缺陷也会引起其他问题。例如,如果保护网站的密码功能不知道在用户不断点击取消时该怎么做,它可能会让用户完全绕过登录过程。
真的没有办法预料一个商业逻辑问题会造成多大的损失。通常情况下,问题的第一个迹象是在用户利用它们之后很长时间才出现的。
修复业务逻辑问题
不幸的是,使用像漏洞扫描器这样的普通工具并不能帮助识别或修复业务逻辑问题,因为业务逻辑问题的测试不容易自动化。避免这些问题的最好方法是在开发应用程序时,对负面测试案例实施良好的规划、错误处理和测试。这首先需要一套明确定义的业务规则,其中包括应用程序被设计为采取的所有可能和期望的行动。
有了业务规则计划,防止业务逻辑缺陷的最好方法之一是创建一个流程图,显示数据和事务在应用程序中流动的所有可能方式。这包括为用户能够做出选择或输入数据的每个实例建立行为模型。不断地检查以确保流程图中可能的行动与业务规则计划中的功能相匹配。
最后,在设计、实施和测试阶段,使用威胁建模来帮助识别业务逻辑的缺陷。作为一个失败保护措施,创建一个程序在遇到任何没有特别预期的情况时应该采取的行动。这可以是简单的拒绝行动并提醒管理员遇到的问题。
关于商业逻辑问题的更多信息
要进一步阅读,你可以看一下OWASP关于商业逻辑问题的网页。你还可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。
准备好现在就去寻找并摧毁商业逻辑漏洞了吗?前往平台,测试你的技能。[从这里开始]
资源
安全技能基准测试:简化企业安全设计
寻找有关 "按设计确保安全 "计划成功与否的有意义的数据是众所周知的难题。首席信息安全官(CISO)在试图证明投资回报率(ROI)和安全计划活动在人员和公司层面上的商业价值时,往往会面临挑战。更不用说,企业要深入了解自己的组织是如何以当前的行业标准为基准的,更是难上加难。美国总统的《国家网络安全战略》向利益相关者提出了 "通过设计实现安全和弹性 "的挑战。让 "按设计保证安全 "计划发挥作用的关键不仅在于为开发人员提供确保代码安全的技能,还在于向监管机构保证这些技能已经到位。在本演讲中,我们将分享大量定性和定量数据,这些数据来自多个主要来源,包括从超过 25 万名开发人员那里收集的内部数据点、数据驱动的客户洞察力以及公共研究。利用这些数据点的汇总,我们旨在传达一个跨多个垂直领域的 "按设计保证安全 "计划的现状。报告详细阐述了这一领域目前未得到充分利用的原因、成功的技能提升计划对降低网络安全风险的重大影响,以及消除代码库中各类漏洞的潜力。