因安全研究被封禁:逆向工程游戏网络代码的困境

本文讲述了作者因对《使命召唤:现代战争/战区》进行网络代码安全研究而被封禁的经历,探讨了游戏公司对安全研究的态度及反作弊系统对研究者的影响,提出了建立漏洞报告机制的必要性。

因安全研究被封禁

注意:本文观点不代表我的雇主或同事的意见,这项研究是我在个人时间进行的。

大约一周前,动视公司(Activision)因我试图研究《使命召唤:现代战争/战区》(2019)的网络代码安全性而封禁了我的账号。

作为一名用户,我认为当自己可能面临风险时,应当有权研究漏洞。多人游戏涉及大量网络通信,包括用户与厂商之间(例如获取统计数据或用户配置)以及用户之间(在托管私人游戏或通过麦克风通信时)。用户应当能够信任,以典型方式玩游戏不会导致安全问题。初步的背景研究表明,其他安全研究人员像我一样,曾对游戏的先前版本进行逆向工程以发现并报告漏洞。安全风险的有效性以及动视对漏洞报告的开放性已有先例[1, 2, 3, 4]。

为了进行这项研究,我需要逆向工程游戏可执行文件中的网络代码,以便审查代码中的内存损坏漏洞。不幸的是,可执行文件被严重混淆,IDA无法分析它。因此,我必须从运行中的游戏进程内存中转储未混淆的代码。我认为正是在这一点上,开发人员将我标记为疑似作弊者。为了避免影响其他玩家,我在主菜单中尝试了两种读取进程内存的方法。首先,我附加了WinDbg,游戏随即退出(可能是触发标记的事件)。接着,我尝试在转储内存之前暂停进程。我只是在主菜单中转储了游戏的内存映像,然后正常退出。

在花费几天时间审查二进制文件后,我决定这个二进制文件太大且难以处理,因此我将项目搁置以备日后进行。但不幸的是,大约一个月后我被封禁,失去了账号上超过一年的进度。这次封禁在个人层面上让我感到悲伤,因为在疫情期间,我通过玩这款游戏与家人和朋友重新联系。但更重要的是,这发出了一个明确的信号:这项研究不受欢迎。我认为我有合理的期望认为它是受欢迎的。我曾在一场CTF比赛中做过类似的工作,当时我逆向工程并模糊测试了《反恐精英:全球攻势》(CS:GO),而从未面临封禁风险。Valve经常接受错误报告,并在一次案例中向一名研究人员支付了18000美元以报告漏洞。

作弊是在线游戏玩家体验的最大威胁之一。我理解开发人员在防止作弊开发和使用方面承担了巨大的负担。他们需要利用多种信号来检测作弊开发和使用。我猜测,因为他们可能之前没有见过安全研究人员审查他们的平台,他们将任何逆向工程的尝试解释为恶意行为。没有典型玩家会附加调试器到游戏中,因此他们可能认为不需要更多证据就可以发出封禁。让我明确一点:我从未打算开发或使用作弊工具,也从未为其他玩家甚至我自己操纵游戏的任何方面。至今,我不知道究竟是什么导致了封禁,也没有申诉流程。如果作为我工作的一部分使用逆向工具导致我被标记怎么办?这种恐惧在我心中对所有带有反作弊系统的游戏都存在,不仅仅是《战区》。

我们从这里走向何方?显然,如果动视解封我的账号,我会很感激。更重要的是,我认为他们应该为安全研究者在生态系统中提供一个位置,通过为安全研究开辟豁免并建立漏洞报告的联系点(甚至是一个漏洞赏金计划)。在PC平台上管理作弊者的任务在难度和争议性上都在增长——我认为动视应该加入Valve和其他发行商的行列,与安全研究者培养一种共生关系,而不是对抗关系。我们可以共同努力,使游戏更安全,免受作弊者和恶意用户的侵害。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计