欢迎访问启迪网!

启迪网

您现在的位置是:启迪网 > 专栏 >

专栏

DeFi真的安全吗?复盘DeFi中常见的三类攻击逻辑

发布时间:2021-07-08专栏评论
摘要更加多的人期望通过攻击智能合约来窃取资金,他们正在借用当智能合约组合在一块时出现的漏洞进行攻击。2020年,对的攻击中,被套取或盗取的总金额已经达到了3600万美元。但因

在ETH早期,大部分攻击都是基于找到个别漏洞,让攻击者有能力冻结或耗尽智能合约。2016年臭名昭著的DAO黑客事件就是这样,1.6亿USD的以太币失窃,ETH最后因此分叉。同样,2017年的Parity多签袭击让黑客盗取了3000万USD,Parity钱包中1.5亿USD被冻结,都是这种漏洞导致的后果。

合约将用户在合约中的资金发送给用户。

一天后,Balancer遭受了第二个漏洞问题,同样是因为与其他智能合约交互的意料之外行为导致的。Compound的代币分发需要用户通过与Compound的智能合约交互来领取我们的COMP。想要同时获得COMP和BAL(通过提供流动性赚取的Balancer代币)的用户要用COMP创建流动性池,如此他们就有资格获得这两种代币。

合约检查用户在合约中是不是有资金。

买选票可以用于敌意回收,让有敌意的一方购买另一个项目的多数投票权更实惠。比如,一个借贷协议可以向另一个借贷协议的代币持有者提供打折,让他们供应另一协议的代币来换取协议我们的代币。

一个长期遭受此类问题困扰的协议是Synthetix。从2019年9月到2020年2月,这个协议的套利机器人不断地在预言机更新之前运行。在Synthetix中,买卖不是交易双方通过匹配进行买卖,而是针对预言机提供的价格反馈进行买卖,流动性由SNX代币持有者提供。

第三类攻击涉及借助区块链本身的属性。

ERC777代币的一个显著特征是可以公告将接收或发送资金的智能合约–并允许合约依据这部分信息采取行动。如允许用户从合约中提取所有资金,这个例子就展示了合约为什么容易遭到重入攻击。

敌意回收的例子已经发生在Steemit上。当这个社交媒体平台背后的团队将Steemit供应给Tron时,社区试图让Tron拥有些代币投票权失效,但这种努力最后被和Binance等大型交易平台的投票权所消除。

与传统的互联网犯罪相比,区块链上的信息对攻击者来讲更有价值,由于对智能合约的成功攻击可以带来直接的经济回报。传统被黑客攻击的信息,如失窃取的个人信息,还需要通过供应来挣钱,但智能合约上是直接存有资产的。

总的来讲,目前的安全性有所提升,尤其是那些关注度比较高的项目。它们的安全性提高是因为用户对审计的期望和围绕测试的工具改进推进的。近期去中心化的金融中最大的安全问题是dForce2500万USD的数字资产在借贷市场中失窃。然而,因为攻击者的IP地址被发现并与新加坡警方共享,因此这部分资金被退了回去。

与ETH早期相比,每次黑客攻击的平均损失价值已经明显降低。在2020年的10次攻击中,有8次的攻击金额低于100万USD。

愈加多的人期望通过攻击智能合约来窃取资金,他们正在借助当智能合约组合在一块时出现的漏洞进行攻击。

伴随项目从开发团队的集中控制转向代币持有者社区的去中心化治理,治理攻击的问题可能会变得愈加常见。理论上,区块链可能成为一个通过链上买选票来达成贿赂的绝佳工具。

攻击者意识到,Balancer流动性池中的资产所产生的新COMP并不是其他人,所以攻击者可以进入一个池中,获得这部分可用的COMP代币,然后再携带比他们放入流动性池更多的钱离开。就像目前发现的漏洞状况一样,攻击者借助闪电贷来最大化我们的资本,然后获得最大回报。

借助区块链的独特属性来进行攻击

这个原理被用来攻击dForce,当合约觉得用户在持续增加im比特币抵押品数目的时候–然后合约就会允许用户从系统中借到更多资金。攻击者将他们假的im比特币抵押品增加到远远超越2500万USD,然后以借贷买卖的方法提取出dForce中的所有流动资金。

通过可组合性(composability)进行黑客攻击

3月12日的时候因为以太币价格忽然下跌超越50%,不少资金库进入清算程序。与此同时,ETH的互联网变得很拥堵,gas暴涨至400gwei或正常价格的20倍,这致使大部分keepers没办法即时价格。有一位keeper持续触发清算,并以0USD的推广竞价取得了可用的以太币。

以后存在的治理攻击?

合约自行更新用户在合约中没资金。

用户调用合同,筹备从合同中提取所有些资金。

伴随去中心化的金融中工具的改进,攻击者的“工具箱”也变得愈加高级。闪电贷让任何拥有必要专业常识的人都可以攻击其中的一个系统,并获得更多的资本来达成收益最大化。

区块链上的智能合约是基于去信赖(permissionless)来和用户与其他智能合约交互的。对于那些设计智能合约的人来讲,非常难考虑到将来有人可能与他们的合约进行交互的每一种方法。别的人可以构建一种智能合约,以一种原作者不期望看到的方法与合约进行交互。

想象一下,一个合约有以下四个提现步骤:

近期6月18日针对Balancer的攻击,就是一个类似的在特定市场中借助非标准编程模式的例子。STA是一种ERC20代币,有一种额外的通缩模型,即从每次转账中抽取1%的成本。攻击者用智能合约在单笔买卖中自动实行多个操作将W以太币与STA代币来回交换24次,耗尽了其中一个Balancer流动性池中的STA代币,直到池中只剩下0.000000000000000001STA。Balancer池没意识到STA的通缩模型,并依据1weiSTA为其资产设定了一个新的价格。之后攻击者对池中的W以太币、LINK、SNX和W比特币进行了买卖。通过这次攻击,使两个池子的资金损失超越了50万美金。

与dForce案例不一样的是,Uniswap的开发团队在这并没真的的责任,他们几乎不可能阻止大家落入这类的陷阱。即便Uniswap团队确保他们的交互界面不允许用户将流动性添加到一个可能被耗尽的池中,他们也没办法阻止其他交互界面打造在允许它的智能合约之上。事实上,这种特殊的攻击方法在多年前就已经被广泛讨论过。

一个用户用在dForce攻击中基于ERC-777标准的相同漏洞,从im比特币-以太币Uniswap池中抽走了22万USD。在Uniswap的案例中,攻击者从以太币-im比特币代币池中移出了以太币,但im比特币代币余额并没增加。如此的操作一般会增加以太币的价格。

dForce的攻击也可以觉得是开发团队特别紧急的疏忽导致的结果,由于被借助的漏洞是重入(re-entrancy)。重入攻击是DAO被耗尽是什么原因,这也一直是开发者在与ERC777代币交互时需要考虑的一个大家都知道的问题。

当Synthetix的预言机在链上发布价格反馈时,机器人会通过支付高额的买卖成本,在预言机有机会更新价格之前被纳入ETH区块之中。由于这种抢占先机的套利行为,Synthetix的买卖量在单日最高达到了6900万USD,而现在没套利机会的Synthetix平均买卖量仅为150万USD。

假如说从COMP和BAL代币发行中可以学到一件事,那就是无论什么勉励策略,只须是有利可图,总会有人去钻空子。

2020年,对的攻击中,被套取或盗取的总金额已经达到了3600万USD。但由于dForce的攻击者退还了失窃的2500万USD,所以实质金额大约有1100万USD。

重入漏洞允许恶意用户在合同完全实行之前第三调用合同。在上面的例子中,攻击者可以在第三步和第四步之间重新进入合约,并在用户的余额更新之前第三提取。通过重复这个过程,他们可以从合约中提取所有存在的资金。

摘要

在3月12日,资金库(vault)的所有者在MakerDAO清算中意料之外损失830万USD,买卖成本也是导致这次意料之外是什么原因之一。当MakerDAO的资金库(用户存放抵押品并生成Dai的地方)的抵押品不足时,它们的抵押品就会被拍卖,筹集D人工智能并偿还被清算资金库的债务。一般情况下,拍卖中的中标者会用D人工智能来换取金库中的以太币,然后这部分D人工智能会被销毁掉。一旦债务被还清,资金库的原主人就会收到剩余的以太币。

这种智能合约的漏洞仍不时让人借助。近期,一名攻击者成功地从代币合约中窃取了所有些V以太币,仅通过耗尽V以太币-以太币Uniswap池就获利了90万USD。但这是V以太币导致的一个容易失误,由于V以太币修改ERC20代币标准的方法有逻辑上的错误。

广告位