博客

程序员征服安全:分享与学习系列 - 业务逻辑问题

March 28, 2019
Jaap Karan Singh

与本系列课程中介绍的其他大多数漏洞不同,业务逻辑问题并非直接由编码错误引起。虽然编码问题可能是原因之一,但业务逻辑错误通常源于应用程序在初始设计阶段存在的缺陷或不正确的逻辑假设。

当用户在使用应用程序时采取了非预期的操作,就可能引发业务逻辑问题。这种情况多种多样,例如意外取消订单、多次使用同一优惠券代码,或者仅仅是跳过某个预期步骤,执行了应用程序无法处理的操作。利用业务逻辑缺陷甚至不需要任何专业培训,只需一个心怀恶意且善于打破常规思考的用户即可。

在本期节目中,我们将学习:

  • 攻击者如何利用业务逻辑缺陷
  • 为什么存在业务逻辑缺陷的应用程序具有危险性
  • 预防业务逻辑错误的技巧。

攻击者如何利用业务逻辑问题?

与大多数漏洞不同,我们无法指出导致此类问题的具体代码字符串。相反,它归结为用户采取了未被预期的操作,而程序又不知道如何处理这些操作。举个例子,假设一个银行应用程序允许用户向其他账户转账。但恶意用户没有发送正数金额,而是尝试发送负数金额。银行应用程序会如何反应?它会崩溃吗?它会拒绝转账吗?还是为了平衡这个负数,反而向发起转账的用户发送资金?

电子商务网站尤其容易受到业务逻辑缺陷的影响(尽管并非唯一受害者),因为它们的设计初衷是供大量用户交互,且包含许多组件。用户意外取消订单、尝试多次使用单次优惠券,甚至超载购物车,都可能使应用程序面临未曾预料的情况。当程序面对未知状况时,确实无法预知其反应。最好的情况可能是生成一条错误消息,但无法保证应用程序不会采取更糟糕的行动,例如免费提供商品。

为什么业务逻辑问题很危险?

业务逻辑问题极其危险,因为任何人都可以利用它们,即使是没有任何编程或黑客背景的人。这实际上只需要实验和时间,通过不断点击并尝试发现应用程序设计响应方式中的漏洞。一旦恶意用户发现了网站业务逻辑中的缺陷,可以肯定他们会尽可能地利用它。

最大的危险通常是经济损失,例如用户在不付款的情况下购买了 20 台大屏幕电视,诸如此类。但业务逻辑缺陷也可能导致其他问题。例如,如果保护网站的密码功能不知道在用户不断点击“取消”时该如何处理,它可能会让用户完全绕过登录过程。

确实无法预料业务逻辑问题会造成多大的损害。通常,在用户利用这些问题很久之后,我们才会发现问题的迹象。

修复业务逻辑问题

遗憾的是,使用漏洞扫描器等常用工具无法识别或修复业务逻辑问题,因为针对业务逻辑问题的测试很难实现自动化。避免此类问题的最佳方法是在应用程序开发过程中实施良好的规划、错误处理和负面测试用例。这首先需要一套定义明确的业务规则,涵盖应用程序设计中所有可能和预期的操作。

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

最后,利用威胁建模来帮助在设计、实施和测试阶段识别业务逻辑中的缺陷。作为故障保护措施,应为程序在遇到任何未明确预期的状况时设定应采取的操作。这可以很简单,例如拒绝该操作并向管理员发出有关所遇问题的警报。

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

如需深入了解,请参阅 OWASP 关于 业务逻辑问题 的页面。您还可以通过 免费演示 来测试您新掌握的防御知识,该平台旨在将网络安全团队培养成顶尖的网络战士。如需了解更多关于攻克此漏洞及其他各类威胁的信息,请访问 Secure Code Warrior 博客。

准备好立即寻找并消除业务逻辑漏洞了吗?前往平台测试您的技能: [立即开始]

标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。