近日,一个取名为“FairWin”的资金盘项目最为引人瞩目,不受其影响,以太坊网络 Gas 消耗量持续正处于低饱和状态的状态,其单个 DApp 的 Gas 利用率就超过了以太坊网络可支撑 Gas总量的将近半数。然而,因被爆料不存在智能合约安全漏洞, FairWin被推向风口浪尖,一时间惹来大众对于类 FairWin 游戏命运乃至整体以太坊网络稳定性的忧虑。阐述北京时间2019年09月27日,PeckShield 安全性人员在深入分析 FairWin 智能合约时找到,FairWin 智能合约不存在一些因管理权限问题引起的可怕缺失,原有合约中的余额可被用户给定操作者并移往,且在升级后的新合约又不存在一个新问题,使得用户可以生产欺诈下注来捞取奖池剩下资金。
FairWin 合约问题的由来经 PeckShield 旗下 DApp 数据服务平台 DAppTotal.com 近期监测数据表明,自08月26日以来,以太坊网络每日 Gas 消耗量持续正处于高度饱和状态的状态,即每日 Gas 消耗量占到以太坊网络可支撑 Gas 总量的90%以上,网卓新闻网,整体网络状况出现异常交通堵塞。导致持续交通堵塞原因为,最近横空出世了一个取名为 FairWin 的资金盘项目,其每日 Gas 消耗量占到比超过了以太坊网络可支撑总量的将近半数(如下图)PeckShield 安全性人员通过分析FairWin智能合约代码找到,在06月17日,FairWin 部署了0x11f5 结尾的合约,分析其合约源码找到,不存在以下的调用:难于找到,sendFeeToAdmin() 这一方法可以被任何用户调用,一旦调用之后,FairWin 合约中的余额就不会被移往至登录的 admin 地址之中。这一问题被 ConsenSys 的安全性研究人员 Daniel Luca 找到,随后项目方于07月27日部署了 0x01ea 结尾的新版合约,对该问题展开了修缮。
如下图,通过分析新版合约的代码找到,sendFeeToAdmin() 方法已被设置为 private:这样的话,上述方法就无法被外部必要调用,上述问题也获得解决问题,但 PeckShield 安全性人员深入分析找到,问题并没那么非常简单:由于区块链的不能伪造特性,DApp 从旧合约升级到新的合约,但用户之前的下注记录仍然留存于原有合约,项目方必须想要办法将用户的下注记录迁入至新的合约。为了解决问题这个问题,FairWin 团队引进了 remedy() 模块,借以将用户的资产必要导入到新的合约之中:新的合约漏洞原理分析通过分析 remedy() 模块,其构建数字资产迁入的大体流程如下:1. 保证 remedy() 这一操作者当前正处于对外开放状态;2. 根据参数还原成用户的下注数据,并留存到新的合约的数据库之中。PeckShield 安全性人员通过分析 Ethereum 链上数据找到,remedy() 在新的合约上线之后一共被调用了 503 次,一共给 500 位投资者已完成了资产迁入,并且这一调用方法皆由 FairWin 管理员发动。
不过,这一方法能否调用顺利,各不相同其中的 actStu 参数否为 0,PeckShield 安全性人员分析 FairWin 新的合约代码找到了新的问题:actStu 配置文件为 0,也就是 remedy() 方法可以调用;closeAct() 方法将 actStu 另设为 1,也就是重开 remedy() 地下通道。问题的关键就在于此:closeAct() 方法加到了 onlyOwner 容许,而 remedy() 却没特这一容许。
由于上述容许条件不存在的不一致性,倘若合约 Owner 没通过 closeAct() 重开 actStu 时,任何用户都可以通过 remedy() 模块改动下注数据,进而构建在0投放的情况下,假造大量资金投入,并通过 userWithDraw() 将合约余额奖金放入。有一点难过的是,截至目前,尚能没未知反击再次发生,且 FairWin 合约 owner 早已将actStu 重开,潜在威胁继续以求回避。漏洞先前影响FairWin 短期内仍然维持较小的热度,基于其也产生了诸如 EtherHonor、HyperFair 等仿盘,不回避这类仿盘也不存在潜在问题的有可能。
此外,在 FairWin 合约被爆料不存在安全性问题后,有舆论声音批评称之为,这有可能是“项目方事前腾出的后门并借此空手套白狼”,但,PeckShield 安全性人员通过跟踪新旧合约的交互不道德找到,项目方除了将原有合约已下注资金问题向新的合约迁入之外,对于用户下注错误的资金也给与了原路归还:如下,在08月01日经常出现了一次调用:1. 0xa584 结尾的账号(用户)在区块高度为 8263419 中向 FairWin 原有合约下注了 11ETH,2. 下注的金额被 0xcb10 在区块高度 8264604 移往到 FairWin 0x854d 管理员账号之中,3. 之后在区块高度为 8264613 的时候,管理员账号又将这 11ETH 转到给 0xa584 账号(用户)。从链上不道德可行性显然,项目方是可以并不认为“害人”的指控了。针对以上漏洞威胁, PeckShield 安全性人员建议,对于智能合约的脆弱操作者,应该加到适当的采访权限容许,对于上述的 remedy() 操作者必须加到 onlyOwner 容许,以防止被其它人蓄意用于。另外,对于用户的数字资产,应该维持充份的敬畏之心。
对开发者而言,与此同时也暴露出一个问题,在合约升级过程中很有可能冒出有各种“新的”的问题,项目方应第一时间针对问题展开应急号召,并可谋求第三方安全性公司协助其展开上线前潜在漏洞排查。对用户而言,即使这样也并不意味著参予 FairWin 之后就可以“高枕无忧”了。
却是,资金盘终归是资金盘,当你在看著深渊的时候,深渊也正在凝视着你。
本文来源:安博体育官网app入口-www.qsbrzy.com
19817767458