区块链游戏的发展相较于区块链生态中其它领域(如DeFi)的发展算比较久了。

CryptoKitties[1]是业内公认最早的一款区块链游戏。这款游戏发布于2017年,它打开了区块链游戏发展的大门,为区块链游戏的发展开创了无尽的想象空间。但区块链游戏的发展却在此后的相当长一段时间却并没有取得引入注目的进展。直到AxieInfinity [2]的出现和YGG [3]自2020年开始在东南亚对这款游戏的力推开始,我们才见证了区块链游戏的爆发。

Axie Infinity的成功激励了大量创业团队涌入区块链游戏这个赛道,他们要么直接开发游戏,要么提供辅助游戏的服务或应用。

Axie Infinity之所以能在短时间内迅速火爆,有一个重要的原因是它引入了DeFi的机制,为游戏增加了经济激励。这为区块链游戏和DeFi的结合开创了成功的先例。这种结合游戏和DeFi的模式后来被业内称为GameFi。

自Axie Infinity开始,GameFi生态取得了长足的进展,但关于GameFi生态安全方面的研究却无论在学术界还是在工业界都鲜少涉及。

作为区块链安全公司,Fairyproof团队常年来一直保持着对GameFi生态的研究,并根据自己积累的经验对这个领域的安全问题形成了一套自己的理解和认知,在此我们特借本文与业界同仁和爱好者分享我们对于GameFi生态安全的一些看法和观点,为填补这个空白进行大胆地尝试。

本文的行文思路如下:我们首先用结构框图的形式展现我们对GameFi生态的理解,分析生态中的应用、角色及依赖的技术栈;接下来我们分析罗列每个技术栈中的模块可能涉及的安全隐患和及常见风险点;最后我们分析当审计生态中每个顶层应用时需要考虑的风险领域及注意的风险事项。

1.GameFi生态之架构概览

时至今日,GameFi生态的发展尽管仍然受到一定的质疑并被业内一些专家认为还远远不够成熟,但毫无疑问它已经发展成一个涵盖众多领域,涉及诸多应用及服务的庞大生态。在这个生态中,典型的应用/角色包括游戏游戏公会[4]、游戏开发者辅助游戏的应用及服务

GameFi生态中,游戏主要是指实现游戏规则和游戏逻辑的应用。它是与用户/玩家直接互动的应用。从应用的角度讲,游戏是生态中的核心。CryptoKitties和Axie Infinity就是典型的区块链游戏。

游戏公会是生态中一类特殊的角色。时下流行的区块链游戏通常内嵌了“play to earn”的玩赚机制,对游戏玩家参与游戏进行奖励。为了赢得奖励,玩家需要用到游戏团队开发的各种道具。但这些道具通常都需要购买,并不是每个玩家都有足够的经济实力买这些道具。

这时游戏公会就发挥作用了。

游戏公会扮演着中介的角色,它通常会借给玩家他们所需的道具,然后从玩家获得的游戏奖励中分成,同时收取租借道具的租金。YGG就是当下业内最知名的游戏公会。

游戏开发者在这里并不是指个人开发者,而是指团队、组织甚至DAO(Decentralized AutonomousOrganizations,去中心化自治组织)[5]。他们不仅开发游戏还开发一切与游戏相关的服务或应用。业内知名的游戏开发者有SkyMarvis[6]、Vulcan Verse[7]等。

辅助游戏的应用或服务主要是指有助于增长游戏用户群、帮助游戏成长、进化的应用或服务。典型的此类应用或服务包括OpenSea[8]、SkyMarvis的marketplace[9]、游戏资产或道具租借平台NFTFI[10]等。

2.GameFi生态依赖的技术栈及涉及的风险点

如果我们从技术角度审视前面提到的生态中的各类应用或角色,研究它们所依赖的底层技术栈,我们可以将整个GameFi生态拆解为下列框架图:

上述框架图中的顶层为应用层。应用层包含了生态中的主要应用/角色。应用层之下是基础设施层。基础设施层主要由两类技术栈组成:web 2.0技术/协议和去中心化技术/协议。这两类技术栈通过RPC调用进行通信。

web 2.0技术/协议可被视为由两个架构层组成:一个是C/S基础设施,另一个是基于该基础设施的用户界面和后台服务。

用户界面是应用的前端展示和交互部分。当用户和一个应用交互时,用户直接交互的就是应用的用户界面。

后台服务主要执行用户界面发送来的需求,并将执行结果反馈给用户界面。

去中心化技术/协议可被视为由三个架构层组成:

最底层的是基础设施层,它包括区块链基础设施、去中心化存储协议比如IPFS [11]、Arweave [12]和其它的去中心化协议。

基于区块链基础设施的是通证层,它包括同质化通证和非同质化通证(NFT)。通证层的通证基于各类通证标准实现。

依赖通证层、区块链基础设施、去中心化存储协议和其它去中心化协议的是工具、机制、资产层,它包括通证经济、治理机制、游戏资产或道具、链上逻辑的实现、数据存储方案、其它方案/服务。它主要提供了GameFi生态中各类应用所需要的构件和功能。

3.基础设施层的组件及各组件的典型风险

当我们审视一个应用的安全状况时,我们首先要了解这个应用的工作原理,然后根据它的原理拆解它所依赖的技术和协议,然后分析它所依赖的技术和协议可能引入的潜在问题或风险。

在接下来的这一节,我们将审视GameFi生态中的基础设施层中的每个技术组件在使用时可能引入什么潜在的问题和风险。

3.1 Web 2.0技术/协议

C/S基础设施:这指的是传统互联网应用中常用的工具、协议等。

对于这些工具和协议,全球各地的工程师和专业技术人员已经在此领域耕耘了良久,因此它们总体上已经相当成熟和稳定。即便偶尔某些协议或工具会被爆出漏洞或隐患,相关的专业团队也会在第一时间发布这些漏洞的补丁和解决方案。

因此,当我们审计一个应用时,我们通常不会审计这些工具和协议,但会检查该应用使用的这些工具和协议是否已经装上了最新的补丁,是否出现了公开报道的风险。

用户界面:这是用户和应用交互时直接面对的部分。因此,如果应用程序的用户界面存在漏洞,用户就很容易陷入各种骗局,受到各种攻击。这也是黑客们长期以来关注的重点,并为此开发了大量攻击用户界面的方法。

用户界面典型的漏洞隐患及可能受到的攻击包括XSS攻击、CSRF攻击、CSS注入攻击、会话劫持、使用不安全的第三方代码库、DDoS攻击、功能请求或访问等。

后台服务:通常,一个应用的后台服务负责处理用户界面发送来的请求并将处理的结果返回给界面。

对区块链应用而言,除了通常存在于后台服务和用户界面之间的通信之外,还有后台服务和区块链之间的通信因此区块链安全公司在审视区块链应用时也要关注后者可能存在的问题。而这一点在目前的安全审计中往往重视不够。

后台服务典型的漏洞隐患及可能受到的攻击包括注入风险、认证缺陷、权限控制、数据泄露、不安全的反序列化(insecure deserialization)、服务器XSS攻击等。

3.2去中心化技术/协议

区块链基础设施:这通常包括区块链主链、第二层扩展方案和侧链。区块链基础设施提供了整个GameFi生态系统的安全基础和共识达成,因此它的安全状况对整个生态而言至关重要。

在现有的区块链中,有一些如以太坊等已经经历了较长时间的考验,但大多数区块链上线的时间都不长,仅仅只有一、两年的时间,还没有经历长时间的考验。因此这些还不太成熟的区块链在安全方面还需要我们高度重视。

区块链基础设施典型的漏洞隐患及可能受到的攻击通常有51%攻击、DDoS攻击、女巫攻击、双花攻击、竞态攻击(race attacks)、日蚀攻击(eclipse attacks)、路由攻击、重放攻击等。

去中心化存储协议(IPFS、Arweave ...):这主要指GameFi生态中用于存储的协议。最流行的包括IPFS和Arweave。

去中心化存储协议典型的漏洞隐患及可能受到的攻击包括DDoS攻击、女巫攻击等。

其它的去中心化协议:这主要指未来可能会被开发或引入的协议,对此目前我们暂未罗列相关漏洞隐患,只是作为备选项提及。

同质化通证:现在绝大多数同质化通证都是基于以太坊的ERC-20[13]标准实现的,还有一些是基于Solana’s [14]的通证模板实现的。同质化通证存在的漏洞隐患基本都与智能合约的实现有关。

对ERC-20通证而言,典型的漏洞隐患及可能受到的攻击有重入攻击、过大的管理员权限、整数上溢/下溢、Gas耗尽、不当的回调函数、不当的函数可见性、不当的计算精度、误用tx.origin、假充值、影子变量、通证发行问题、不当的代理设计、不当的Slot用法、合约升级/迁移等。

对Solana上的同质化通证而言,典型的漏洞隐患及可能受到的攻击有缺少ownership检查、缺少signer检查、签名未经验证的程序调用、Solana账户混淆、缺少冻结权限检查、不足的SPL账户验证、缺少rent exemption assertion、尾部截断、计算上溢/下溢、数值精度错误、指令账户检查、潜藏的后门、过时的外部依赖、错误状态无返回、未引用的账户检查、序列化及反序列化检查、账户地址检查、未审计的外部依赖、程序升级检查、账户可变性检查等。

非同质化通证:绝大多数非同质化通证都是基于以太坊的ERC-721[15]或ERC-1155[16]标准实现的,有一些则是基于Solana的通证模板实现的。非同质化通证存在的漏洞隐患基本都与智能合约的实现有关。

对ERC-721或ERC-1155通证而言,典型的漏洞隐患及可能受到的攻击有重入攻击、过大的管理员权限、整数上溢/下溢、不当设置的Nonce值、Gas耗尽、不当的回调函数、不当的函数可见性、误用tx.origin、假充值、影子变量、通证发行问题、不当的代理设计、不当的Slot用法、合约升级/迁移等。

对Solana上的非同质化通证而言,典型的漏洞隐患及可能受到的攻击有缺少ownership检查、缺少signer检查、签名未经验证的程序调用、Solana账户混淆、缺少冻结权限检查、不足的SPL账户验证、缺少rent exemption assertion、尾部截断、计算上溢/下溢、指令账户检查、潜藏的后门、过时的外部依赖、错误状态无返回、未引用的账户检查、序列化及反序列化检查、账户地址检查、未审计的外部依赖、程序升级检查、账户可变性检查等。

通证经济:通证经济(tokenomics)是“通证”和“经济”的合称。它指围绕通证产生的经济活动,通常包括通证的发行、通证的功能、通证设计的目标、通证的分配等。所有这些要素综合起来构成了一个通证的供需特点。好的通证经济会吸引投资和持有。因此对一个通证占重要位置的项目而言,通证经济的好坏对项目的长远发展和成功有着至关重要的作用。对时下热门的“Play to Earn”区块链游戏而言,通证经济扮演着关键的角色。

通证经济中潜藏的风险通常在规则和功能的设计中。这更多的是从经济的角度而非从技术的角度来审视的。糟糕的通证经济设计通常缺乏相应的激励机制,难以吸引外界对通证的投资和长期持有。

通证经济典型的隐患或问题有通证缺乏使用功能、无限的发行量、缺乏流动性等。

治理机制:相较于传统的互联网应用,区块链应用有个重要的特点就是它通常会有自己的项目治理机制。基于这种治理机制,项目通证的持有者能够通过投票的方式参与项目的各类活动和治理,参与项目的决策和发展。治理机制常见的问题存在于治理规则和投票机制的设计。

治理机制典型的问题有不合适的投票规则、不合适的质押规则、不合适的快照规则、不合适的提案规则等。

游戏资产或道具:游戏资产或道具是由智能合约实现的,通常为同质化通证或非同质化通证。这些资产或道具在游戏中具有特定的功用。

游戏资产或道具存在的问题会导致其无法发挥功用。这些问题通常在其功能和逻辑的设计中。

游戏资产或道具典型的问题有合约实现缺陷、设计缺陷、功能缺陷等。

链上逻辑的实现:这主要指区块链应用的商业逻辑。对区块链应用而言,通常项目团队为了追求商业逻辑和规则的不可篡改及抗审查等特点,会将这些逻辑和规则用智能合约实现。

比较常见的链上逻辑实现包括去中心化交易所、借贷协议、质押协议、流动性挖矿协议、NFT碎片化协议等。

链上逻辑的实现存在的典型问题包括不恰当的预言机、缺乏紧急提取通证的接口、不合理的LP价格算法、不安全的通证转账、过大的管理员权限、潜藏的后门、存在风险的合约升级/迁移、实现缺陷、设计缺陷等。

数据存储方案:对区块链应用而言,比较流行的数据存储方案主要是去中心化存储方案。而去中心化存储方案通常基于去中心化存储协议如IPFS、Arweave等。

好的数据存储方案通常能保证数据存储的一致性、稳定性和永久性。这些特点对NFT项目而言尤为重要,因为NFT项目通常需要保证其元数据(metadata)存储的安全、可靠和持久。

数据存储方案一旦出现问题会导致数据丢失或不一致。典型的问题有不可靠的数据存储、缺乏数据备份、缺乏数据一致性保障、不稳定的数据存取方式等。

其它的去中心化方案/服务:这些方案或服务是指基于未来可能引入或使用的协议构建的方案/服务。对此目前我们暂未罗列相关漏洞隐患,只是作为备选项提及。

4. GameFi生态中每类应用涉及的安全检查点

4.1游戏

支撑区块链游戏的技术栈可由下列框图表示:

在上述框图中实心绿色框所代表的组件就是游戏所依赖的组件,空心框所代表的是游戏的可选项。

从上述结构框图看,游戏直接依赖的功能组件包括用户界面、后台服务、通证经济、治理机制、游戏资产或道具、链上逻辑的实现和数据存储方案。其它去中心化方案是可选项。

因此,当我们审计游戏时,就可以按上一节罗列的风险点去考察每个功能组件及其所依赖的技术组件可能潜藏的风险点及可能会受到的攻击。

4.2游戏公会

支撑游戏公会的技术栈可由下列框图表示:

在上述框图中实心绿色框所代表的组件就是游戏公会所依赖的组件,空心框所代表的是游戏公会的可选项。

从上述结构框图看,游戏公会直接依赖的功能组件包括用户界面、后台服务、通证经济和治理机制。游戏资产或道具、链上逻辑的实现、数据存储方案和其它去中心化方案是可选项。

因此,当我们审计游戏公会时,就可以按上一节罗列的风险点去考察每个功能组件及其所依赖的技术组件可能潜藏的风险点及可能会受到的攻击。

4.3游戏开发者

支撑游戏开发者的技术栈可由下列框图表示:

在上述框图中实心绿色框所代表的组件就是游戏开发者所依赖的组件,空心框所代表的是游戏开发者的可选项。

从上述结构框图看,游戏开发者直接依赖的功能组件包括用户界面、后台服务、通证经济和治理机制、链上逻辑的实现和数据存储方案。游戏资产或道具和其它去中心化方案是可选项。

因此,当我们审计游戏开发者时,就可以按上一节罗列的风险点去考察每个功能组件及其所依赖的技术组件可能潜藏的风险点及可能会受到的攻击。

4.4辅助游戏的应用或服务

支撑游戏开发者的技术栈可由下列框图表示:

在上述框图中实心绿色框所代表的组件就是辅助游戏的应用或服务所依赖的组件,空心框所代表的是其可选项。

从上述结构框图看,辅助游戏的应用或服务直接依赖的功能组件包括用户界面、后台服务、通证经济和治理机制和链上逻辑的实现。游戏资产或道具、数据存储方案和其它去中心化方案/服务是可选项。

因此,当我们审计辅助游戏的应用或服务时,就可以按上一节罗列的风险点去考察每个功能组件及其所依赖的技术组件可能潜藏的风险点及可能会受到的攻击。

结论:

在本文,我们探讨了现在的GameFi生态中存在的应用及其依赖的技术栈,罗列这些技术栈可能潜藏的风险和受到的攻击,并汇总了当我们审计这些应用时会考虑的角度及检查的风险点。

我们会继续深入研究和探索,密切关注GameFi的动态和发展,积极捕捉最新的技术动向,为GameFi生态的安全尽我们的绵薄之力。

参考文献:

[1] CryptoKitties, https://www.cryptokitties.co/

[2] Axie Infinity, https://axieinfinity.com/

[3] YGG, https://yieldguild.io/

[4] Crypto VCs Are Making a Big Bet on Gaming Guilds. Why?

https://www.coindesk.com/markets/2021/12/21/crypto-vcs-are-making-a-big-bet-on-gaming-guilds-why/,December 27, 2021

[5] Decentralized autonomous organizations (DAOs), https://ethereum.org/en/dao/

[6] Sky Mavis,https://skymavis.com/,2021

[7] Vulcan Verse,https://vv.vulcanforged.com/,2022

[8] OpenSea, https://opensea.io/

[9] SkyMarvisMarketplace,https://marketplace.axieinfinity.com/

[10] NFTFI,https://www.nftfi.com/

[11] IPFS, https://ipfs.io/

[12] Arweave, https://www.arweave.org/

[13] ERC-20 Token Standard,

https://ethereum.org/en/developers/docs/standards/tokens/erc-20/

[14] Solana, https://solana.com/

[15] ERC-721 Non-fungible Token Standard,

https://ethereum.org/en/developers/docs/standards/tokens/erc-721/

[16] EIP-1155: Multi Token Standard, https://eips.ethereum.org/EIPS/eip-1155

About the author:

Yuefei TAN, CEO of Fairyproof

About Fairyproof:

Fairyproof Tech is a blockchain security company, established in Jan 2021.

It was founded by a team with rich experience in smart contract programming and network security. The team members participated in initiating several draft standards in the Ethereum field, including ERC-1646, ERC-2569, ERC-2794, and EIP-3712, of which ERC-2569 was officially accepted by the Ethereum team.

The team participated in the launch and development of various Ethereum projects, including blockchain platforms, DAO organizations, on-chain data storage, and decentralized exchanges, and conducted security audits of multiple projects which have been deployed on Ethereum. Based on its strong R&D capability and deep understanding of smart contract security, Fairyproof has developed comprehensive vulnerability tracking and security systems and tools.

Fairyproof Tech serves and works closely with customers by providing systematic solutions covering both “code vulnerabilities” and “logic vulnerabilities” and aims to provide customers with the best and most professional services.