EST:简析以太坊矿池拒绝打包攻击原理

本文发布于NEST爱好者,作者:Yuheng&Yuyi。

与单纯基于可信任第三方的中心化预言机不同,NEST分布式预言机希望能够让尽可能多的链上用户参与到价格转换关系确定的过程中来,从而进一步提升预言机输出数据结果的可靠性以及整个预言机系统的安全性。

而正是因为这种特性,分布式预言机往往会遇到数据无法得到有效验证的问题,比如有恶意矿工提供恶意报价来影响价格。为了解决这种问题,NEST设计了报价—吃单的提交验证机制,即允许验证者根据报价的价格进行交易得到报价者所抵押的资产,并重新提出一个报价进行修正。通过这种方式,NEST分布式预言机能够在一定程度上有效地对恶意报价进行限制,同时也能够及时地对恶意报价进行修正。

安全团队:Rubic被攻击事件简析:金色财经报道,据区块链安全审计公司Beosin旗下Beosin EagleEye安全风险监控、预警与阻断平台监测显示,Rubic项目被攻击,Beosin安全团队分析发现RubicProxy合约的routerCallNative函数由于缺乏参数校验,_params可以指定任意的参数,攻击者可以使用特定的integrator来让RubicProxy合约可以几乎零成本的调用自己传入的函数data。攻击者通过调用routerCallNative函数,把所有授权给RubicProxy合约的USDC全部通过transferFrom转入了0x001B地址,被盗资金近1100个以太坊,通过Beosin Trace追踪发现被盗资金已经全部转入了Tornado cash。[2022/12/25 22:06:32]

然而,这种针对于价格修正方式的顺利运行基于的是吃单交易以及新的报价交易能够在验证期内及时地出现在链上的新区块当中。众所周知,目前整个区块链网络中的矿工群体早已不是像最开始那样单独工作了,为了保证收益的稳定性,矿工们会组织在一起形成矿池来达到算力的整合,因为在工作量证明的共识下,更大的算力也就代表着获得收益的概率越高。

Beosin:Skyward Finance项目遭受攻击事件简析:金色财经报道,根据区块链安全审计公司Beosin旗下Beosin EagleEye 安全风险监控、预警与阻断平台监测显示,Near链上的Skyward Finance项目遭受漏洞攻击,Beosin分析发现由于skyward.near合约的redeem_skyward函数没有正确校验token_account_ids参数,导致攻击者5ebc5ecca14a44175464d0e6a7d3b2a6890229cd5f19cfb29ce8b1651fd58d39传入相同的token_account_id,并多次领取了WNear奖励。本次攻击导致项目损失了约108万个Near,约320万美元。Beosin Trace追踪发现被盗金额已被攻击者转走。[2022/11/3 12:12:36]

矿池的出现所引发的本质问题是其对交易打包权的垄断。因为在公有链中只有挖到区块的矿工或者矿池能够决定下一个区块中应该包含哪些交易,而矿池相较于单一的个体矿工又往往具有压倒性的算力优势,在这种情况下那些具有算力规模更大的矿池会选择打包一些对自己有利的或者交易费较高的交易,即使这些交易可能并不是最先被公布到链上的。

Beosin:ULME代币项目遭受黑客攻击事件简析:金色财经报道,10月25日,据Beosin EagleEye 安全预警与监控平台检测显示,ULME代币项目被黑客攻击,目前造成50646 BUSD损失,黑客首先利用闪电贷借出BUSD,由于用户前面给ULME合约授权,攻击者遍历了对合约进行授权的地址,然后批量转出已授权用户的BUSD到合约中,提高价格ULME价格,然后黑客卖掉之前闪电贷借出的ULME,赚取BUSD,归还闪电贷获利离场。Beosin安全团队建议用户用户取消BUSD对ULME合约的授权并及时转移资金减少损失。[2022/10/25 16:38:21]

而当这种情况出现在NEST分布式预言机中时,则会导致提交的新报价无法在验证期内得到及时地验证,最终会导致NEST输出错误的价格数据,从而使得部分矿池捕捉到套利机会,进而威胁到整个DeFi生态的环境安全。本文接下来会具体介绍这种针对NEST分布式预言机的矿池拒绝打包攻击的详细内容。

Grim Finance 被黑简析:攻击者通过闪电贷借出 WFTM 与 BTC 代币:据慢雾区情报,2021 年 12 月 19 日,Fantom 链上 Grim Finance 项目遭受攻击。慢雾安全团队进行分析后以简讯的形式分享给大家。

1. 攻击者通过闪电贷借出 WFTM 与 BTC 代币,并在 SpiritSwap 中添加流动性获得 SPIRIT-LP 流动性凭证。

2. 随后攻击者通过 Grim Finance 的 GrimBoostVault 合约中的 depositFor 函数进行流动性抵押操作,而 depositFor 允许用户指定转入的 token 并通过 safeTransferFrom 将用户指定的代币转入 GrimBoostVault 中,depositFor 会根据用户转账前后本合约与策略池预期接收代币(预期接收 want 代币,本次攻击中应为 SPIRIT-LP)的差值为用户铸造抵押凭证。

3. 但由于 depositFor 函数并未检查用户指定转入的 token 的合法性,攻击者在调用 depositFor 函数时传入了由攻击者恶意创建的代币合约地址。当 GrimBoostVault 通过 safeTransferFrom 函数调用恶意合约的 transferFrom 函数时,恶意合约再次重入调用了 depositFor 函数。攻击者进行了多次重入并在最后一次转入真正的 SPIRIT-LP 流动性凭证进行抵押,此操作确保了在重入前后 GrimBoostVault 预期接收代币的差值存在。随后 depositFor 函数根据此差值计算并为攻击者铸造对应的抵押凭证。

4. 由于攻击者对 GrimBoostVault 合约重入了多次,因此 GrimBoostVault 合约为攻击者铸造了远多于预期的抵押凭证。攻击者使用此凭证在 GrimBoostVault 合约中取出了远多于之前抵押的 SPIRIT-LP 流动性凭证。随后攻击者使用此 SPIRIT-LP 流动性凭证移除流动性获得 WFTM 与 BTC 代币并归还闪电贷完成获利。

此次攻击是由于 GrimBoostVault 合约的 depositFor 函数未对用户传入的 token 的合法性进行检查且无防重入锁,导致恶意用户可以传入恶意代币地址对 depositFor 进行重入获得远多于预期的抵押凭证。慢雾安全团队建议:对于用户传入的参数应检查其是否符合预期,对于函数中的外部调用应控制好外部调用带来的重入攻击等风险。[2021/12/19 7:49:04]

攻击流程及分析

为了方便讲解这种攻击方式,我们首先假设所有参与挖矿的成员都是矿池,各个矿池具有不同大小的算力占比,且彼此之间都知道各自的算力占比。

首先在发动攻击之前,恶意矿池可以通过闪电贷等方式预先囤积好之后用于套利的加密货币。例如,恶意矿池会预先囤积大量的ETH,紧接着操纵ETH和USDT之间的价格比例来实现套利。

接下来,恶意矿池会向NEST提出一个报价,该报价会和当前的实际市场价格存在着巨大的差别。由于该报价和实际市场价格之间存在着巨大的差别,也就代表着存在着巨大的套利空间。因此在持续时间为S个区块的验证期内,根据NEST本身的吃单验证的协议,必然会有验证者提出吃单的交易并对该报价进行最合理的修正以获得最大的收益。

而此时,在组装每一个验证期的区块时,所有的挖矿矿池面对着两个相同抉择,将该交易打包进自己组装的下一个正在组装区块当中或者不将该报价打包进下一个正在组装的区块中。由于各个矿池都知道彼此之间的算力占比以及彼此之间所能够采取的策略选择,因此在验证期内,每个矿池是否选择对该报价进行修正实际上可以看成所有矿池所一起进行的多次相互独立的完全信息静态博弈。而能够决定整博弈最终结果的,也就是所谓的纳什均衡点,则是每个参与者在各种决策组合情况下的收益,因为每个参与者都会选择在各种情况下自己收益都最大化的决策。囚徒困境就是一种典型的完全信息静态博弈。

如果一个矿池选择对于该报价进行修正,那么很明显该矿池能够立即得到收益,我们假设修正报价对应的收益为a。而如果一个矿池不选择对于一个报价进行修正,看似该矿池无法立刻得到收益,但是该矿池也可以根据该恶意报价所涉及到的加密货币进行囤积,最终在报价成立之后进行套利,我们可以设这个最终的收益为b并且通常有b>a。

但是我们需要注意到,在区块链中只有挖到新区块的矿池能够获得记账权,也就是说即使一个矿池选择立刻修正该恶意报价,它也只能在一定概率下获得a的收益,并且这个概率是和该矿池的算力成正比的,因此我们可以将一个矿池选择修正报价的收益表示为Pia。同样的如果不修正报价,在报价成立之后,一个矿池所能够得到的收益也为Pib。但是由于一旦报价被修正,那么之后的博弈也就不再存在,意味着所有的矿池都不会获得b收益,因此实际上在验证期矿池决定每个区块的交易内容时,其所考虑的两种收益实际如下:

其中T代表矿池的决策,Y代表修改该报价,N代表不修改该报价;Pn代表接下来所有验证期区块都不会出现修改报价的概率。

在组装验证期内对应的每一个区块时,所有的矿池都会比较这两种收益来选择自己的决策。最后根据自己的算力占比,以及两种收益a、b之间的比例关系选择是否对于该报价进行修正,从而最终达到纳什均衡状态。

分析总结

正如上述所说,矿池有可能会凭借着自身算力的优势对于报价的修正更新进行延迟和阻碍,从而利用NEST预言机进行套利。但是这也不仅仅是NEST预言机所面临的问题,实际上整个区块链的去中心化理念都在受到矿池这一现象的冲击,因此如何解决好矿池所带来的问题,是我们在走向真正的去中心化道路中不可避免的一个挑战。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:31ms0-0:886ms