业务逻辑攻击是什么,如何有效进行防护

想象一下:您的开发团队刚推出了一款令人惊叹的全新应用程序,它具有顶级的API安全性,通过客户端保护对其进行了强化,甚至还设置了针对机器人攻击的防御措施。你感到这款产品很有安全保障,自己的团队出色地完成了工作。

但有一点要特别之处的是,尽管您付出了很多努力,但您的应用程序仍然可能面临受到攻击的风险。事实上攻击甚至可能不会触发单个安全警报,这种攻击风险来自于业务逻辑。如果您尚未将业务逻辑攻击 (BLA) 作为威胁建模的一部分进行评估,那么您应该立即重新评估您的产品。

随着各类前后端框架的成熟和完善,传统的SQL注入、XSS等常规漏洞在Web系统里逐步减少,而攻击者更倾向于使用业务逻辑漏洞来进行突破。业务逻辑漏洞,具有攻击特征少、自动化脆弱性工具无法扫出等特点,也为检测和软件的安全性保障带来了一定的难度。

什么是业务逻辑?

业务逻辑通常由一组规则或者算法来描述业务流程,涉及到数据的处理、存储、分析和展示等方面,它是一个抽象的概念,在软件开发中占据着重要的地位。在面向对象编程中,业务逻辑通常被封装在对象的方法中,以此来实现对数据的操作和处理。在Web应用程序中,业务逻辑通常会包含在Controller层中,用于处理用户请求和响应结果。因此,业务逻辑是程序中最核心的部分,决定了整个程序的运行流程和结果。

业务逻辑本质上就是对真实业务的映射与抽象,实际上,我们口口声声的业务逻辑,只是用代码实现的真实业务的规则映射。

什么是业务逻辑漏洞?

业务逻辑漏洞是一类特殊的安全漏洞,业务逻辑漏洞属于设计漏洞而非实现漏洞,是业务逻辑设计不严谨导致的漏洞。

业务逻辑漏洞通常是由于无法预期可能发生的异常应用程序状态,因此无法安全处理它们所导致的。这些缺陷通常对那些没有明确寻找它们的人来说是不可见的,因为它们通常不会在应用程序的正常使用中暴露出来。但是,攻击者可以通过开发人员从未想过的方式与应用程序进行交互来利用这些漏洞。常见的业务逻辑漏洞如:参数篡改、重放攻击、流程漏洞等。


什么是业务逻辑攻击

业务逻辑攻击是一种网络攻击,网络攻击者利用应用程序的预期功能和流程,而不是其技术漏洞。他们操纵工作流程,绕过传统安全措施,并滥用合法功能来获得未经授权的访问或造成损害,而不触发安全警报。


业务逻辑漏洞产生的核心原因:

编程时,只考虑了常规的操作流程(如在A情况下,就会出现B,此时执行C即可)没有考虑当用户执行了意料之外的X时会发生什么。这种对于异常情况的欠考虑,最终导致了安全漏洞的产生。

业务逻辑漏洞的主要特点:

独特性:通常与特定应用程序的业务流程密切相关。
难以检测:由于它们与应用程序的正常功能密切相关,因此使用常规的自动化工具难以发现。
非技术性:往往与逻辑流程和业务决策有关,而不是技术实现。


逻辑漏洞主要产生的位置

①.登录处    
②.业务办理处    
③.验证码处    
④.支付处    

登录处存在的逻辑漏洞

1.可以暴力破解用户名或密码

没有验证码机制,没有根据用户名限制失败次数,没有根据ip限制失败次数等等

2.session没有清空

登出后服务器端的session内容没有清除,因此客户端重新带回登出前的session,也能够达到重新登录


业务办理处存在的逻辑漏洞

1.水平越权

通常说的越权一般是修改get或者post参数,导致的查看到他人的业务信息,一般看订单处,个人信息处等位置的参数

2.篡改手机号

在需要手机号的短信验证处,抓包修改手机号,可能做到非本账号手机号获取能够编辑本账号的验证码


验证码处存在的逻辑漏洞

1.登录验证码未刷新

没有清空session中的验证码信息

2.手机或邮箱验证码可爆破

没有对应的手机号或邮箱,但如果验证码纯数字4,5位左右,没有次数校验,可以爆破

3.手机或邮箱验证码回显到客户端

在发送给手机或者邮箱验证码时,会在response包中有验证码,因此不需要手机和邮箱就可以获取验证码


支付处存在的逻辑漏洞

1.修改商品编号 

如果业务是通过商品编号来判断价格的话,可能存在只修改A商品编号为B商品编号,做到以A商品的价格购买B商品

2.金额修改

金额直接写在了post或者get请求中,对其进行修改达到修改了商品金额的效果

3.商品数量修改

在购买时,如果一个商品为负数,那么它的价格则会是负数,如果购买多种商品,将其中一个设为负数,降低整体的价格


逻辑漏洞的特殊性与重要性

常见的OWASP漏洞,比如SQL注入漏洞,或多或少都具有某些识别特征,都是可以被漏洞扫描工具给自动或半自动化地扫描出来的,但是这样的工具却很难准确捕捉业务逻辑漏洞----这是因为业务逻辑漏洞本质上属于设计漏洞,是结构上的而不是实现上的,每一个业务逻辑漏洞都有它的独特性,很难复制或通过脚本捕获,因此逻辑漏洞大多需要配合代码审计和手工测试才能被发现---逻辑漏洞是工具无法替代手工的一类漏洞。


为什么要重视业务逻辑攻击

1、传统的安全措施还不够

虽然Web应用程序防火墙 (WAF) 对于保护应用程序至关重要,但它无法完全防范业务逻辑攻击。由于 BLA的特质,典型的安全解决方案通常无法检测和阻止这些威胁。

2、数据丢失和财务损失的风险

成功的业务逻辑攻击可能会导致敏感数据被盗,包括个人详细信息和财务信息,从而导致代价高昂的数据泄露甚至财务损失。比较典型的例子是身份验证绕过,攻击者绕过身份验证过程,并可以通过升级权限或访问敏感信息来滥用应用程序内的业务逻辑,这可能会导致关键数据丢失并损害公司声誉。

3、声誉受损的可能性

数据丢失或成功的业务逻辑攻击可能会导致公司的声誉受损。在消费者对其在线安全越来越谨慎的时代,任何攻击都可能迅速损害您的业务,导致客户流失、收入减少或品牌玷污,甚至带来法律后果。解决 BLA 对于维持公众信任和让客户满意至关重要。

4、应用程序和API的复杂性增加

随着应用程序和API变得越来越复杂,与保护它们相关的风险和困难也随之增加。分布式微服务、多云架构以及API使用的快速增长使得理解和解决业务逻辑攻击带来的独特安全挑战变得至关重要。


如何保护应用程序免受 BLA 的侵害

可以采取以下步骤来保护应用程序免受它们的侵害:

1、了解业务逻辑:了解应用程序的工作流程、流程和预期的用户行为,以识别潜在的弱点和漏洞。

2、实施高级应用程序安全性:投资专门用于管理和保护API的高级安全解决方案,例如应用程序安全平台。这将有助于识别破坏授权、机器人攻击等威胁,并防御业务逻辑攻击。

3、监控和分析用户行为:采用可以分析用户行为(包括应用程序使用模式)并检测可能表明潜在BLA的可疑活动的工具和技术。

4、分段和控制访问:限制API的范围并根据用户角色实施访问控制,最大程度地减少攻击成功时的潜在损害。

5.使用代码审计产品:帮助企业从安全角度对应用系统的所有逻辑路径进行测试,通过分析源代码,充分挖掘代码中存在的安全缺陷以及规范性缺陷。找到普通安全测试所无法发现的如二次注入、反序列化、xml实体注入等安全漏洞。主要的内容在于:

1.系统所用开源框架,包含java反序列化漏洞,导致远程代码执行。Spring、Struts2的相关安全。

2.应用代码关注要素,日志伪造漏洞,密码明文存储,资源管理,调试程序残留,二次注入,反序列化。

3.API滥用,不安全的数据库调用、随机数创建、内存管理调用、字符串操作,危险的系统方法调用。

4.源代码设计,不安全的域、方法、类修饰符未使用的外部引用、代码。

5.错误处理不当,程序异常处理、返回值用法、空指针、日志记录。

6.直接对象引用,直接引用数据库中的数据、文件系统、内存空间。

7.资源滥用,不安全的文件创建/修改/删除,竞争冲突,内存泄露。

8.业务逻辑错误,欺骗密码找回功能,规避交易限制,越权缺陷Cookies和session的问题。

9.规范性权限配置,数据库配置规范,Web服务的权限配置SQL语句编写规范。

业务逻辑攻击变得越来越普遍,对应用程序和API的安全构成了重大威胁。为了保护数据、声誉和客户免受潜在损害,多层安全方法至关重要,不要因业务逻辑攻击而措手不及,花时间投资应用程序安全性,才能领先网络攻击者一步来保障自己。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/12077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Java Web应用中下载文件无法打开的问题

在Java Web应用中,文件下载是一个常见的功能。但有时候,即使代码看起来正确,下载的文件却无法正确打开。 问题描述 假设我们有以下代码用于下载文件: response.addHeader("Content-Disposition", "attachment;fi…

服务器通的远程桌面连接不上,关于服务器通畅但远程桌面连接不上问题的专业分析

在日常的企业IT管理中,服务器远程桌面连接是一个重要的操作功能。然而,有时会出现服务器网络通畅,但远程桌面无法连接的情况。 问题分析 1. 防火墙或安全组设置问题:服务器的防火墙或安全组可能阻止了远程桌面连接的端口&#xf…

adobe安装“Error:SyntaxError:JSON Parse error:Unexpec

mac电脑安装Adobe时,会提示错误“Error:SyntaxError:JSON Parse error:Unexpected EOF”,这是怎么回事儿的,不管您是安装AI、PS、PR还是LR,如果也遇到相同的问题,可以参考一下方法解决: 「adobe安装提示错误…

Java RMI反序列化总结篇-01

1.java rmi反序列化 RMI 允许一个应用程序访问另外一个服务器或虚拟机上的对象,方法和服务,它使远程方法调用就像在本地调用一样简单。它为用户屏蔽了底层的网络传输细节,使用的时候只需适当处理异常即可。所以 RMI 是非常容易使用的&#x…

Kubernetes集群安装

Kubernetes集群安装 环境准备 192.168.1.53 k8s-master 192.168.1.52 k8s-node-1 192.168.1.51 k8s-node-2 设置三台机器的主机名: Master上执行: [rootlocalhost ~]# hostnamectl --static set-hostname k8s-masterNode1上执行: [ro…

vue3+vite项目部署服务器,选择非根目录访问

背景 vue3vite项目,需要部署服务器。 但是根目录已经部署了另外一个项目A了,这个时候要在部署另外一个项目B。 问题 比如你的地址是http://test.com 之前直接输入http://test.com即可访问A项目 如果B项目也这么干的话就冲突了 访问A:http…

哪款骨传导耳机最值得入手?精选5款顶尖配置的骨传导耳机,闭眼入也不踩雷!

作为一名有着多年工作经验的数码博主,我见证了无数因盲目追求新颖而引发的听力问题。在此,我必须郑重提醒大家,虽然市面上充斥着众多声称能提供卓越音质和佩戴舒适度的骨传导耳机品牌,但它们之间存在大量劣质产品,这类…

centos7安装zabbix-server

zabbixan-server安装 环境安装zabbix安装zabbix配置apachezabbix-UI前端配置修改zabbix为中文语言 环境 准备: centos7系统、mysql数据库/MariaDB数据库 mysql数据库可参照:https://blog.csdn.net/weixin_61367575/article/details/138774428?spm1001.…

算法-卡尔曼滤波之卡尔曼滤波的第二个方程:预测方程(状态外推方程)

在上一节中,使用了静态模型,我们推导出了卡尔曼滤波的状态更新方程,但是在实际情况下,系统都是动态,预测阶段,前后时刻的状态是改变的,此时我们引入预测方程,也叫状态外推方程&#…

企业为什么进行大数据迁移以及注意事项

在当今数字化时代,数据的迁移成为了企业优化其数据架构、提高数据处理能力、确保业务连续性和数据安全的关键步骤。企业可能出于多种原因,如成本效益、性能提升、系统升级、数据集中管理或云服务集成等,选择将数据从一个存储系统迁移到另一个…

Spring Boot 整合讯飞星火3.5通过接口Api接口实现聊天功能(首发)复制粘贴即可使用,后续更新WebSocket实现聊天功能

程序员必备网站&#xff1a; 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.pom.xml <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.72</version></dependency><depen…

html5关于WebSocket的一些特点与用例

WebSocket通信机制是一种在单个TCP连接上进行全双工通信的协议&#xff0c;它允许服务器主动向客户端推送数据&#xff0c;而无需等待客户端的请求。以下是WebSocket通信的主要机制&#xff1a; 握手协议&#xff1a;WebSocket通信的第一步是通过HTTP协议进行握手。当客户端发…

C++ QT设计模式:访问者模式

基本概念 访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许你在不改变被访问类的前提下&#xff0c;定义对其进行操作的新操作。 实现的模块有&#xff1a; ObjectStructure&#xff08;对象结构&#xff09;&#xff1a;用于存储…

轻松拿下指针(5)

文章目录 一、回调函数是什么二、qsort使用举例三、qsort函数的模拟实现 一、回调函数是什么 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被⽤来调⽤其所指向的函数 时&#x…

计算模型的边界

https://github.com/libigl/libigl.git 这是几何计算库&#xff0c;可以计算出模型的边界 #define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <igl/boundary_loop.h>#include <igl/list_to_matrix.h>int main(){std::vector<std::vector<…

肺部营养“救星”,让每次呼吸更自由

​#肺科营养#朗格力#班古营养#复合营养素#肺部营养# 正常的健康人,每天自由幸福的呼吸。但是对于肺病患者来说,特别是慢阻肺人群,每一次呼吸都可能是一场挑战,每一口气都显得弥足珍贵。 肺病患者号称沉默的“呼吸杀手”,它虽然沉默,但不代表它没能力,除了引起肺功能下降,氧气…

云商店如何让更多企业摘到技术普惠的“果实”?

文 | 智能相对论 作者 | 沈浪 现阶段&#xff0c;越是工业体系发达的地区&#xff0c;越需要加速技术普惠的步伐。比如&#xff0c;在苏州&#xff0c;华为云就在联合当地政府、企业伙伴打造以华为云云商店为重要链接的智能化商业增长底座。 华为云云商店以“电商式”的购物…

Git学习——迁移单一仓库至其他代码托管平台

Git学习——迁移单一仓库至其他代码托管平台 简介流程总结 简介 因需迁移单一代码仓库至其他代码托管平台&#xff0c;要迁移的包括仓库内容以及所有历史记录和推送日志。 本文中的方法同样适用于在同一代码托管平台中克隆仓库。 流程 1. 创建新仓库&#xff1a; 在目的平台…

软件需求规格文档 (SRS) 模版

文章目录 软件需求规格文档 (SRS) - 范例1. 引言1.1 目的1.2 范围1.3 定义、缩写和术语1.4 参考文献1.5 总体描述 2. 系统概述2.1 系统环境2.2 系统功能概述2.3 用户特性2.4 假设与约束 3. 功能需求3.1 用户身份验证模块3.1.1 总体概述3.1.2 具体需求3.1.2.1 登录功能描述3.1.2…

OpenAI春季发布会-免费多模态GPT4O-简介

前言 2024.5.14&#xff0c;OpenAI宣布即将发布一款性能更为强大的大模型GPT4o&#xff0c;虽然没有爆出些超级酷炫无敌吊炸天的新玩意&#xff0c;但是这次的多模态模型&#xff0c;大家可以免费用了~~&#xff08;但是&#xff09; 虽然是免费使用&#xff0c;但官方发布会上…