漏洞的分类
漏洞的分类
当前游戏漏洞方面还没有权威的定义和分类方法,不同的人可能会有不同的分类方式,比如有些人喜欢按游戏玩法模块来划分漏洞,把漏洞分为任务系统漏洞、战队系统漏洞、对战系统漏洞等等。游戏安全实现室定位还是希望走纯技术交流的专业路线。所以这里所说的分类方法主要是从技术角度来分析漏洞形成的原因,进行归纳总结出来的分类方法,仅供大家参考。
1.外挂功能漏洞
外挂功能漏洞主要是指对游戏核心玩法的游戏平衡会带来影响的漏洞。游戏开发初期由于选择的网络架构(网络同步方式)不合理,导致了部分关键逻辑被放在客户端处理,这种做法就会带来相应外挂风险。由于网络架构设计改动起来工作量大,一旦运营就很少在改动。所以外挂功能漏洞一般具有很难修复的特点,只能通过加强校验或者依赖游戏保护方案来进行运营对抗。
不同类型的游戏特点决定了对应的常见外挂功能漏洞也不同。在ACT游戏中,玩家必须操控游戏角色,根据周遭环境的变化,做出快速响应。由于ACT游戏非常注重手感和用户体验,操作指令发出后需要第一时间体现出来,这种高实时性要求导致了对服务端要求太高,所以很多游戏为了手感体验就把关键逻辑放到客户端来进行。这种处理方式决定了常见的ACT游戏外挂功能包括瞬移、全屏、无CD、无敌、秒怪等。在FPS中,其特点是能够进行远距离攻击,地图的空间范围大。由于地图场景复杂,移动逻辑放在服务端处理则要求服务端有全量的地图信息,要求相对较高,为节省服务端开销所以很多游戏吧坐标处理逻辑放到了客户端进行,所以常见的FPS类游戏会有:飞天、遁地、透视、无后坐力等功能。
2.服务端校验疏忽漏洞
服务端校验疏忽漏洞主要是指服务端能够获取到足够多的信息、理论上可以校验,但由于程序员开发过程中一时疏忽而忘记校验的逻辑BUG。这类漏洞一般对游戏产生较大影响、利用后能获取较多的虚拟财产收益。但修复也相对简单,开发商一旦发现理论上可以快速做出响应彻底修复漏洞。
服务器是整个游戏的大脑,负责大部分的游戏逻辑处理、响应和数据的存储等功能。例如在某个ACT游戏中,正常情况下玩家需要达到60级才能进入某个生化禁区的副本,通过挖掘发现,在一定的条件下,我们可以绕过这个级别限制,从而达到随意进入该高级副本。
3.兼容性漏洞
兼容性漏洞主要是指由于协议各字段边界值考虑不周全,程序在处理协议时导致崩溃的漏洞。兼容性漏洞一般会导致服务端崩溃,从而实现炸房、炸频道、炸服等类型的服务端拒绝服务;或者导致周围玩家崩溃或者掉线。这类漏洞从利用者角度来讲并没有带来太多收益,但是对开放商来讲却是致命的漏洞。在程序开发过程中,很多时候都只考虑了正常情况而忽略了特殊边界值。所以兼容性漏洞也是几乎每个游戏都会曾在的漏洞,这类漏洞需要在上线前进行大量的测试排查。
兼容性漏洞最典型的例子就是某ACT游戏外网曾经出现过的一个技能漏洞,在PK场外网作弊玩家无意间修改出了一个非法技能,该技能的技能等级为0。人类看待数值一般从1开始,而程序处理一般从0开始,获取技能属性的方式是从数组中获取,1级技能对应属性为数组下标为0。外挂构造出了0级技能(正常情况下不存在)所以程序没有校验直接访问了数组下标为-1的数组元素,下标越界从而导致程序处理过程中崩溃。外挂使用后的表现就是一旦使用这个畸形的技能,那么同PK场的其他玩家都会收到一个技能等级为0的技能数据包,处理过程就会导致同PK场的其他玩家客户端崩溃。
4、性能漏洞
性能漏洞是指由于某些操作对性能消耗比较大时,被恶意玩家利用来达到破坏游戏的目的。常见的性能漏洞一般会利用服务端瓶颈或者客户端瓶颈来达到目的。
服务端瓶颈主要是指服务端某些操作比较消耗性能,客户端大量发起该操作导致服务端处理不过来从而产生拒绝服务的效果。比如查看拍卖行操作可能会导致游戏服务端查询数据库等行为,如果玩家短时间内通过发送刷新拍卖行的协议就会导致服务端处理不过来,其他玩家在刷新拍卖行就无法响应,导致拍卖行功能无法使用。
客户端屏一个典型的例子就是某赛车游戏出现过的炸房外挂,不同赛车切换对客户端来讲也是一个性能消耗很大的行为。外挂通过快速切换赛车到服务端,服务会把该行为同步到周围其他玩家,其他玩家短时间内大量加载资源释放资源消耗大量CPU导致卡死。