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. Game Fi生態之架構概覽
時至今日,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] SkyMarvis'Marketplace, 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.