Fomo3D二轮大奖开出,黑客获奖,机制漏洞成游戏没落主因

栏目: 软件资讯 · 发布时间: 6年前

内容简介:北京时间 9 月 24 日深夜 11 点 32 分,Fomo3D 第二轮最终大奖由地址 0x18a0 获得,奖金为 3,264.668 Ether。与此前第一轮游戏相比,这轮游戏持续 33 天,无论是从入场资金、持续时长,亦或是最终大奖奖金额来说,相比上轮均大幅缩水。回首两月之前,Fomo3D第一轮游戏入场资金一度超过 40,000 Ether,第一轮游戏最终大奖奖金额超过 10,000 Ether,游戏参与者众多,类似的资金盘游戏也如雨后春笋般相继冒出,一时间好不热闹。

北京时间 9 月 24 日深夜 11 点 32 分,Fomo3D 第二轮最终大奖由地址 0x18a0 获得,奖金为 3,264.668 Ether。 安比(SECBIT)实验室分析发现,此轮游戏获奖技巧与第一轮如出一辙,均为黑客“阻塞交易”攻击。

与此前第一轮游戏相比,这轮游戏持续 33 天,无论是从入场资金、持续时长,亦或是最终大奖奖金额来说,相比上轮均大幅缩水。

回首两月之前,Fomo3D第一轮游戏入场资金一度超过 40,000 Ether,第一轮游戏最终大奖奖金额超过 10,000 Ether,游戏参与者众多,类似的资金盘游戏也如雨后春笋般相继冒出,一时间好不热闹。

然而,自 9 月以来,随着市场整体的大萧条,类 Fomo3D 游戏也几近没落。以 Fomo3D 和 Last Winner 为代表的几款较活跃的游戏,热度明显下降。而大部分的同类合约由于无人开启下轮游戏,都处在搁置状态。

因而到如今,Fomo 3D第二轮大奖已经开出,黑客获奖几无悬念,游戏的热度已不可同日而语。

安比(SECBIT)实验室针对这一变化展开分析,分析结果表明,不久前连续揭露的游戏空投机制漏洞[1]和“阻塞交易”攻击事件[2],尽管在短时间内将该类游戏的关注度推上了新的高度,但本质上也是导致游戏没落的主要原因。

繁华 vs 凉凉?

曾经多火爆,如今就多冷清

游戏热度全景

7 月 20 日, 资金盘游戏 Fomo3D 在国内迅速传播开来,引起了广泛的关注。随后,一系列类似 Fomo3D 的游戏陆续上线。8 月 6 日,另一款类 Fomo3D 游戏 Last Winner 部署上线。在其团队的大力推广下, Last Winner 迅速火爆起来,甚至一度造成以太坊拥堵和 Gas 费用暴涨。但在游戏第一轮结束后,各个游戏的热度都开始持续下降。

Fomo3D二轮大奖开出,黑客获奖,机制漏洞成游戏没落主因

图一:Fomo3D 玩家参与度与入场资金状况

上图展示了「Fomo3D 玩家参与度与入场资金状况」。红色代表调用合约参与游戏的人次,蓝色则代表进入游戏合约的资金量。图左侧出现数据曲线最高峰,对应时间分别是 7 月 20 日和 7 月 21 日。这两天恰好大量媒体疯狂报道 Fomo3D 这一现象级游戏。当时众多玩家跟风入场,游戏合约的参与次数和入场资金均达到了最高峰,入场资金量超过 40,000 Ether,而参与次数最高超过 18,000 次。而曲线的最高点则对应着 Fomo3D 游戏第一轮最高峰。

高峰过后,Fomo3D 游戏热度骤降,于 8 月 22 日前后结束第一轮,并随即进入第二轮,但游戏热度已然无法恢复。

Fomo3D二轮大奖开出,黑客获奖,机制漏洞成游戏没落主因

图二:Last Winner 玩家参与度与入场资金状况

类似地,上图展示了「Last Winner 玩家参与度与入场资金状况」。Last Winner 针对 Fomo3D 游戏做了部分修改,降低了游戏时间上限,因此每轮结束得更快。第一轮高峰出现在 8 月 8 日,此后有多个局部波峰,代表着不同轮次的开启,但显然调用次数和入场资金一轮不如一轮。

奖池资金

下图为 Fomo3D 合约中 Ether 余额的变化情况。Fomo3D 游戏在迅速火爆后,合约内 Ether 余额一度上升到峰值,第一轮游戏结束后,合约中的余额立即呈断崖式下跌,至今还处在缓慢减少的过程。

Fomo3D二轮大奖开出,黑客获奖,机制漏洞成游戏没落主因

图三:Fomo3D 合约 Ether 余额变化状况

无独有偶,Last Winner 合约中的余额也曾在短时间内迅速增长,而后随着几轮游戏的迭代而逐步下降,至今所剩的余额更是不足 5,000 Ether。

Fomo3D二轮大奖开出,黑客获奖,机制漏洞成游戏没落主因

图四:Last Winner 合约 Ether 余额变化状况

最终大奖

8 月 17 日,安比(SECBIT)实验室与 Anchain.ai 团队联合揭露了黑客团队 BAPT-LW20 利用空投机制漏洞,攫取大量奖金的攻击事件。同一天,Last Winner 游戏第一轮结束,最终大奖的获得者也是 BAPT-LW20 团队。据统计,该黑客团队从 Last Winner 首轮游戏中获利累计达 12,948 Ether。

在 Last Winner 已完成的前 9 轮游戏中,黑客团伙持有的账户 0x5167 共夺得 4 次最终大奖。

Fomo3D二轮大奖开出,黑客获奖,机制漏洞成游戏没落主因

仔细观察每轮游戏的最终大奖金额和持续时间,不难发现,奖金数量衰减非常快,而每轮也结束得越来越快。这与上面的游戏参与数据图十分吻合。

类似地,Fomo3D 游戏首轮和第二轮大奖分别于 8 月 22 日和 9 月 24 日开出,奖金额分别为 10,469.66 和 3,264.66 Ether。除了奖金数额锐减之外,安比(SECBIT)实验室还发现大奖获得者均使用了相同的攻击技巧。

反思

机制漏洞是游戏没落的主因

除了市场萎靡以及玩家热情降低,安比(SECBIT)实验室认为“阻塞交易”攻击(针对最终大奖)[3]和空投漏洞攻击[4]打破了合约机制设计中的关键部分。这才是使游戏变冷的主要原因。

Fomo3D二轮大奖开出,黑客获奖,机制漏洞成游戏没落主因

图五:Fomo3D 游戏合约被攻击状况

上图是「Fomo3D 游戏合约被攻击状况」,第一轮游戏高峰前后以及第二轮开始后,有黑客疯狂地利用空投漏洞进行攻击,攫取高额收益。而在第一轮临近结束,以及第二轮倒计时快结束之际,有黑客疯狂尝试“阻塞交易”攻击,目标在于夺取巨额的最终大奖。

北京时间 9 月 24 日深夜 11 点 32 分,Fomo3D 第二轮最终大奖由地址 0x18a0451Ea56Fd4FF58f59837e9EC30f346ffDCa5 获得,奖金达 3,264.668 Ether。安比(SECBIT)实验室发现 Fomo3D 第二轮大奖获得者 0x18a0 创建了攻击合约 0x705203fc06027379681AEf47c08fe679bc4A58e1,并发起大量攻击交易,连续堵塞 10 余个区块,时间长达 2 分钟以上。这一系列攻击,在上图的游戏被攻击监控数据中展露无疑。

Fomo3D二轮大奖开出,黑客获奖,机制漏洞成游戏没落主因

图六:Last Winner 游戏合约被攻击状况

上图是「Last Winner 游戏合约被攻击状况」,与 Fomo3D 类似,黑客攻击规模在游戏热度高时十分巨大。

“阻塞交易”攻击

Fomo3D 游戏巧妙地设计了一个环节,最后一个参与游戏的人将获得奖池中一半的 Ether 做为奖励。开发者想通过此设计保持大量的玩家陆续进场,任何人都有可能成为那个“幸运儿”。但是在黑客利用“阻塞交易”攻击[5]来加快游戏结束成为受益人后,这个吸引玩家的设计被打破了。因此后进场的普通玩家只能成为被割的韭菜,自然很难再吸引玩家参与。

“空投漏洞”攻击

除了最后的大奖,游戏中还设计了空投奖励机制,玩家有一定的概率获得空投奖励,这也是吸引玩家参与的一个重要原因。但是由于空投机制存在随机数漏洞,黑客可以通过一定的技巧持续高概率地拿走奖励,而普通玩家几乎不可能成功。这样空投奖励的公平性也同样受到了挑战。

对策与展望

dApp 还有很长的路要走

这样一类红极一时的爆款游戏,必定会成为 dApp 游戏发展史上的一个重要里程碑。但是过快的萧条速度也给我们带来了很多的反思。对于类 Fomo3D 游戏,甚至是所有的 dApp 游戏,还有很长的路要走。要及时从黑客攻击的案例中吸取教训,并做好防御措施。

“空投漏洞”攻击是类 Fomo3D 游戏遭受攻击次数最多的一个破绽。黑客可低成本持续地攫取奖池中的资金。

一方面,Fomo3D 游戏的空投机制利用随机数来控制中奖概率,但是由于随机数的来源都是区块或者交易中特定的一些公开参数,如交易发起者地址、区块时间戳、区块难度等,所有以太坊智能合约都可以很容易的预测随机数[6]。因此在涉及到随机数的场景下,安比(SECBIT)实验室建议开发者应尤为慎重,或通过一定的手段来增加随机源的预测难度。如开发者可通过使用多次提交再披露、或延迟若干个区块开奖的方法来规避随机数被预测的风险。

另一方面,为了防止合约自动化攻击,Fomo3D 游戏合约对调用者是普通账户还是合约账户做了检测,但由于检测方式存在漏洞,黑客可以利用一些技巧绕开检测。因此项目方在对参与 dApp 游戏的玩家的身份做检测的时候,也应采用更加可靠的方式。例如,通过判断该笔交易最初的发起者(tx.origin)与当前合约的调用者(msg.sender)是否为同一地址。

前文提到的“阻塞交易”攻击,也是类 Fomo3D 游戏面临的另一重大挑战。

黑客通过高额手续费吸引矿工优先打包,并利用合约自动判断游戏进行状态,以之作为是否采取攻击的依据。黑客最终能够以较低成本堵塞区块,每个区块中仅打包很少的交易(降低他人交易被打包的可能性),使得游戏快速结束,并提高自己获得最终大奖的概率。

其实这一问题不止会威胁类 Fomo3D 游戏。所有类似机制,即需要玩家抢在某个时间范围内完成某种竞争操作的智能合约,都会受此威胁。要杜绝这一问题,安比(SECBIT)实验室建议游戏开发者,从游戏机制入手,切断游戏最终胜利(获得某个巨额大奖)和倒计时结束(最后一个交易被打包)之间的必然联系,从而使黑客的攻击获利概率和攻击意愿都降到最低。

类 Fomo3D 游戏中黑客利用了以太坊共识协议的特点,找到游戏机制的漏洞进而发起攻击。这也提醒我们,dApp 应用中的机制设计是一项极其复杂的工程,除了技术本身,还涉及到平台外部环境,博弈论等方面问题,这也是容易被黑客攻击的环节。因此,dApp 项目在机制设计过程中应尤为慎重。

正如安比实验室创始人郭宇所说:“新世界有生命,就有捕食者。有交易者,就有黑客。区块链上的应用在进化,攻击者也同样”。在技术和财富的交汇处,黑客永远保持着最灵敏的嗅觉。黑客的一次次攻击,给了我们很多的反思和改进的机会,这也是应用不断进化的催化剂。

参考文献

[1] Pwning Fomo3D Revealed: Iterative, Pre-Calculated Contract Creation For Airdrop Prizes!, https://peckshield.com/2018/07/24/fomo3d/

[2] 智能合约史上最大规模攻击手法曝光,盘点黑客团伙作案细节 https://zhuanlan.zhihu.com/p/42318584

[3] Fomo3D 千万大奖获得者“特殊攻击技巧”最全揭露 https://zhuanlan.zhihu.com/p/42742004

[4] Péter Szilágyi 提出的空投漏洞利用 POC,https://www.reddit.com/r/ethereum/comments/916xni/how_to_pwn_fomo3d_a_beginners_guide/, 2018/07/23

[5] 区块律动:8万笔交易「封死」以太坊网络,只为抢夺Fomo3D大奖?https://mp.weixin.qq.com/s/5nrgj8sIZ0SlXebG5sWVPw

[6] Predicting Random Numbers in Ethereum Smart Contracts https://blog.positive.com/predicting-random-numbers-in-ethereum-smart-contracts-e5358c6b8620

本文由安比(SCBIT)实验室提供,安比实验室致力于解决区块链全生态的安全问题,共建共识、有序、可信的区块链经济体。

(作者:SECBIT实验室,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

A Philosophy of Software Design

A Philosophy of Software Design

John Ousterhout / Yaknyam Press / 2018-4-6 / GBP 14.21

This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first ......一起来看看 《A Philosophy of Software Design》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换