LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > EIDOS 挖矿众生相:「抬价、阻塞、攻击」让 EOS 主网不堪重负

EIDOS 挖矿众生相:「抬价、阻塞、攻击」让 EOS 主网不堪重负

2019-11-12 区块律动BlockBeat 来源:区块链网络

原文标题:《EIDOS 挖矿众生相:「抬价、阻塞、攻击」让 EOS 主网不堪重负》
原文来源:PeckShield



11 月 01 日,enumivo 团队上线新空投项目,用户发送任意数额的 EOS 到 eidosonecoin 账户,就能免费获得项目方空投的 EIDOS 代币。截至目前,项目上线一周以来,引发了持续的 EIDOS 挖矿热潮。受此影响,EOSIO 主网的 CPU 资源消耗进入了高度饱和状态,用户需要抵押更多的 EOS 拥有更多 CPU 资源(成本飙升),才能正常使用 EOS 网络。


区块链安全公司 PeckShield 监控并分析了期间 EOSIO 主网上的交易,以及 REX 租赁模式和 CPU 资源消耗机制,发现了一些有趣的事情。


抬升 CPU 价格,让普通用户无法使用 EOS 主网


11 月 01 日下午 16 时,我们启动了一个程序,可以向 eidosonecoin 无限发送 0.0001 个 EOS,用来监控参与此次挖矿的羊毛党实时挖矿情况。我们首先发现,eidosonecoin 账户中没有足够的 RAM,导致新矿工无法参与挖矿。幸运的是,RAM 危机在 10 分钟内便得到解决。

下午 16:30 左右,我们部署的程序耗尽了所有 CPU 时间。如图所示,CPU 资源的价格提升到 0.2ms/EOS,这意味着用户抵押 1 个 EOS 仅能获得 200 us 的 CPU 资源。但是正常情况下转账一次所要消耗的 CPU 资源都不止这些。在空投开始的两个小时内,CPU 资源价格提高到每个 EOS 0.1 ms。与图 2 中最近 4 周的 CPU 价格相比,一度达到了最近 7 天的历史最高水平。



CPU 时间(ms)/EOS  


CPU 资源的价格飙升将会对 EOSIO 主网的用户产生较大影响。如图所示,根据 DAppTotal.com 数据显示,EOS 主网的日活跃用户从 8 万跌到了仅 2 万人(蓝色线)。很显然,这是由于 CPU 价格被拉升后,不少用户没办法正常使用网络所致。



最近30天三大公链活跃用户情况


然而,如图所示,我们发现 EOS 主网的交易次数却在持续攀升。这让人非常不解,为何 EOS 主网活跃用户越来越少而交易次数却越来越高了呢?在分析了这段时间每个交易之后,我们发现,这些交易大多数参与 EIDOS 挖矿的用户发起的薅羊毛行为,他们占据了大部分的 CPU 资源,导致普通用户根本无法正常使用网络。



最近30天三大公链日交易次数情况


正如图所呈现的那样,11 月 06 日,与 EIDOS 相关的操作消耗了总 CPU 资源的 56%。在承担不起较高 CPU 价格的情况下,用户就不再抵押 EOS 到 REX 平台上,取而代之的是开始租赁平台上的 CPU/NET 资源。特别是,排名前 5 的 EIDOS 矿机已经租用了数百万 EOS 等值的 CPU 资源。吊诡的是,这些头部挖矿服务商在空投开始前就租用了大量 CPU,这让他们在空投开始时就租用了相对便宜的 CPU(1 个 EOS 可以租用 3000 个 EOS 的 CPU 资源,且可续用 30 日)。



EOS 主网 CPU 资源消耗分布图  


掏空 EOSREX 系统,让 EOS 租赁市场几近崩溃


对普通用户而言,尽管他们可以从 EOSREX 平台租赁 CPU 资源,但只有很少数的人知道如何操作。这样一来,EIDOS 矿工和掌握丰富 CPU 资源的服务提供商就成了 EOSIO 主网上仅剩的「活跃用户」了。如图所示,租 CPU 或者 NET 的话,用户需要抵押一些 EOS 代币进入 REX 基金池内,进而执行租赁操作。这对普通用户而言是一件较为复杂的事,以至于很多人还是没办法通过租赁 CPU 以正常使用 EOS 主网。



EOSREX 操作流程图


随着越来越多的新矿工加入租赁 CPU,CPU 资源变成稀缺品,最高价格涨至 1 个 EOS 仅能租赁 180 个 EOS。这对参与 EIDOS 挖矿的矿工而言并不是一个好兆头。更糟糕的是,REX 系统于 11 月 04 日,其 CPU 资源池里的可租用 EOS 已经耗光了。如图所示:



EOSREX 平台无法正常租赁 


根据 REX 智能合约中的程序,可租赁 EOS 的计算公式如下:

available_unlent = total_unlent - 2 * total_lent / 10 It means all rentcpu actions are suspended when around 83 % of the pool is consumed: available_unlent = 16.66666666% pool - 2 * 83.33333333% pool / 10 = 0 


这意味着当 REX 资金池中资产消耗至 83% 时,一切租赁 CPU 的请求都将宣告暂停。我们需要抵押更多 EOS 进入资金池,以便 REX 系统能够正常运转。 


攻击窃取平台 CPU 资源,危机蔓延至整个 EOS 网络


当越来越多的人在寻找廉价 CPU 资源时,一些黑客开始尝试从 DApp 中偷取 CPU 资源进行挖矿。由于 BigGame 是为玩家代付 CPU 资源的 DApp 之一,也就成了首个被攻击的对象。黑客是如何实施攻击的呢?具体而言:黑客劫持了用户和 DApp 间的交易信息,在转账通知中嵌入了非法操作,故而可以实现窃取 DApp 代付给用户的免费 CPU 资源,直到 DApp 的可用 CPU 资源被耗尽为止。

转账通知攻击可以发生于任何 EOS 代币的转账过程中。11 月 07 日凌晨 3 时,另一款 DApp 游戏 BetHash 也遭到了同样的攻击。

具体而言:BetHash 的博彩游戏机制,允许玩家可以猜测 0-100 之间的数字和系统给出的随机数比大小,以赢取相应赔率的奖金,投注数字越小赔率会越大。玩家每一次投注,BetHash 的智能合约 dicereceipt()函数都会被调用通知玩家账号。此时,黑客就可以控制恶意程序劫持该通知嵌入内联操作,进而实施攻击行为。尽管每一次攻击,攻击者也需要支付一定的赌注,但只要一直保持 0.1 个 EOS 并且保守投注 97 的点位(高概率),就可以始终获得 0.1011 EOS 的返奖,同时窃取 CPU 资源的攻击行为。如图所示,为一次成功的攻击。



黑客成功实施攻击过程 


直到 11 月 08 日下午 3 时,不仅 BetHash,一些其他的博彩类游戏包括 EOSBet、EOSMMM,Trust-Dice,WinPlay 等等也被相继攻击了。例如,EOSBet 遭到了多个黑客的攻击(hotsexygames, cyscyscys235 和 juyhgdf1234u)等。在分析完关联交易后,我们发现,最近两天 EOSBet 消耗了将近 38s 的 CPU 资源。通常情况下,一次恶意的攻击交易会平均消耗 52 ms 的 CPU 资源,而正常的交易仅消耗 2 ms。尽管 EOSBet 宣称他们将抬升下注金额来增加单次攻击的成本,但实际情况显示 EOSBet 仍在持续遭受攻击。如图所示为 EOSBet 的 CPU 消耗量始终保持在 100%,被消耗殆尽。



EOSBet CPU 消耗情况


11 月 11 日凌晨 3 时以来,作恶开始延伸至 EOSIO 系统的 bidname 短账号竞拍上,甚至可以无限制的使用 EOS 系统的 CPU 资源。具体是怎么做到呢?如果你想竞拍一个短账号,例如:baaa,你开始从 0.0001 个 EOS 起竞拍。当某人出价高出了 10% 的话,你的出价就会被返还。特别是,eosio::bidrefund 将由 EOSIO 系统调用且返还,黑客可以在系统返还的过程中劫持转账通知实施攻击。更糟糕的是,由于 EOSIO 系统拥有无限量的 CPU 资源,黑客就可以持续通过攻击获得 CPU 资源。这将使得黑客在不需要抵押和租赁 CPU 资源的情况下,让 EOSIO 主网运行更繁重的工作。(图片为一次攻击的交易信息。)针对竞拍系统出现的攻击行为,EOS 社区普遍认为,可以通过提高竞拍的最低出价来解决该问题。



黑客利用 EOSIO 系统 CPU 资源情况 


自救指南

PeckShield 建议,在发送 EOS 代币时或接收通知之前应检查目标账户是否为智能合约。现在 EOSIO 网络上的智能合约中并没有检查 EOS 账户状态的 API。建议 DApp 合约开发者可以采用类似 DAppShield 安全盾工具提供的过滤合约账户服务,并请求第三方安全公司协助。



原文链接:https://mp.weixin.qq.com/s/_m_5H7fWDsl2Z0wFOXjS7Q

—-

编译者/作者:区块律动BlockBeat

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

知识 EIDOS
LOADING...
LOADING...