黑客盗走五十万美元加密货币,解析 Defi 危机

就在几天前,有报道称,Balancer 遭受到了黑客攻击并损失了约合价值 $500,000 美金。本文将简单复盘此次的攻击经过并分析其背后的原理,介绍其中所提到的技术并且展望我们目前可以预见的关于去中心化金融的潜在危机。

分散式金融(DeFi)流动性提供商 Balancer Pool 承认其被黑客利用了一个系统漏洞,诱使该系统释放了价值 500,000 美元的加密货币

Balancer Pools 是一家类似 Uniswap 的多维自动做市商(AMM)。它们拥有多种资产,使用算法来平衡通过其系统运行的每个加密货币的数量从而保持市场流动性。

这次攻击是由一个黑客组织使用智能合约在单个交易中自动执行。第一步,攻击者从 dYdX 获得了 104k WETH 的闪电贷(Flash Loan)。WETH 是一种可以直接与其他币种交易的 ETH 衍生品。这个黑客使用资金在 WETH 与 STA token 来回交换了 24 次,使得池中 STA 余额耗尽,并变成 1 weiSTA (0.000000000000000001 STA)。STA token 是 Stratera 发行的一种代币。STA 是通货紧缩的 token,意味着每笔交易价值的 1%都会被销毁(burn)。此次攻击是因为 Balancer Pool 合约跟踪了智能合约中的代币余额,并且 STA 代币具有通货紧缩模型,收取了接收者 1%的转让费,从而导致 transfer() 和 transferFrom() 行为不当。因此,每当攻击者将 WETH 交换给 STA 时,Balancer 池收到的 STA 就会比预期的少 1%。

然后,攻击者多次将 1 weiSTA 交换到 WETH。由于 STA 转让费机制,Balancer 池从未收到 STA,反而发放了 WETH。由于攻击者进行了大量交易,因此该 STA 很快变得一文不值。黑客然后用这个几乎毫无价值的 STA 换回了 WETH

最后,攻击者向 dYdX 偿还了 104k WETH 的闪电贷。黑客通过存入一些 weiSTA,迅速增加了自己在 Balancer Pool 中的份额。然后,他通过 Uniswap V2 将收集的 Balancer Pool 代币交换到 136k STA,然后再次将 136k STA 交换到 109 WETH。

除 WETH 之外,攻击者还使用 WBTC,LINK 和 SNX 对 Statera 进行了相同的攻击。

最终,Balancer Pool 损失了近 50 万美元,而黑客获得了近 42 万美金的代币,其中包括:

  • 455 WETH ($100k worth)

  • 2.4m STA ($100k worth) and converted it to 109 WETH ($25k worth)

  • 11.36 WBTC ($100k worth)

  • 60.9k SNX ($100k worth)

  • 22.6k LINK ($100k worth)

那么,这个 hacker 是怎么做到的呢,是什么样的条件以及契机造就了他的成功呢,我们从中得到了怎么样的关于 DeFi Crisis 的启发呢。

什么是 Flash Loan

在这次黑客攻击中,我们首先看到的黑客运用的手段就是闪电贷。那么什么是闪电贷呢?

闪电贷是一种无抵押贷款,但是仅在一次交易中有效。在以太坊虚拟机(EVM)中,即使有一些交易的条件不满足,也是可以完成交易的。快速贷款的操作如下:一方创建一个智能合约,通过该合约取出贷款,执行某些操作后立即偿还贷款。

闪电贷的存在同时也解锁了闪电攻击(Flash Attack),这是一种通过闪电贷获得资助的资本密集型攻击。正因为闪电贷的特殊设定,这样的攻击不需要冻结任何抵押资产,理论上来讲,黑客可以在不用缴纳任何抵押资产的情况下借到闪电贷。只要闪电贷的资金池中还有充足的资金流动性,尽管是一个没有任何资本的黑客,交一些 gas fee,大概 $15 美金,从而就可以以闪电贷为资本实施攻击。

在这次的攻击中,没有放入抵押的攻击者在 dXdY 平台上瞬间借了数十万美元的 ETH,通过一系列易受攻击的链上协议将其上传到链上,提取了数十万美元的被盗资产,然后偿还了等同于借贷金额的 ETH 贷款。所有这一切都是在单个以太坊交易中瞬间发生的

区块链是依靠预言机(Oracle)从外部来源获取信息的。在 DeFi 中,对预言机依赖最大的就是价格。以太坊区块链本身并不能决定 ETH 的价格,这是由市场决定。因此,价格数据是使用预言机输入的。交易者可以通过足够大的交易来操纵预言机提供的价格信息。交易所的流动性越少,操纵价格越容易。然后,交易者可以在经操纵过的价格上进行第二次杠杆交易,以确保他们获得最大的利润。

闪电贷对攻击者尤其有吸引力的主要原因有两个:

  1. 很多攻击需要大量前期资金,例如使用预言机操纵攻击

  2. 闪电贷可以最小化对攻击者的影响

如果我有个用 1000 万美元 ETH 操纵预言机的想法,即便是我拥有这么多 ETH,我也可能不会用自己的资本进行冒险。如果我是用个人资产进行恶意攻击,我的 ETH 就会有污点,交易所可能会拒绝我的存入,并且很难洗白。不过,如果我通过 Flash Loan 借来价值 1000 万美元的 ETH 实施攻击,那么,没有人会在乎这笔资产。尽管 dYdX 的抵押池是我贷款的来源,这也不会对 dYdX 有很大的影响。

由于以太坊领域中的包括 STA 代币在内的很多一部分加密货币都具有通货紧缩的独特机制,从而保证其币种尽可能小的受通货膨胀的影响而贬值,所以在这一次的攻击中,这名黑客将 104k ETH 与 STA 进行了 24 次的交换,抽空了 STA 的流动性池。每一次交换,黑客手中的 STA 就会损失掉 1% 的实际价值,由于 STA 智能合约的这种特性,从而使 STA 代币变得近乎没有任何价值可言。但是就是通过这个没有价值的 STA 代币,这名黑客从 Balancer 资金池中获得了与之前 STA 代币价值相同的 ETH,不仅偿还了 10.4 万个 ETH 的闪电贷款,还获得了大量余额。不仅仅是 ETH,攻击者同时还与其他不同的币种进行了交换,包括 WBTC, LINK and SNX 来换取 STA 代币并从中获利。

从中我们可以看出来,由于 Balancer 的智能合约存在的漏洞,并没有准确的判断出所兑换的币种是否拥有其真实价值,而发放了相对应的金额款项。那么从类似于这样的智能合约漏洞,我们可以看到一些怎么样的去中心化金融的危机呢?而在其中扮演重要角色的 DeFi Protocols 又是什么呢?

DeFi Protocols

DeFi 是一个去中心化的对等金融模式,并利用基于区块链的智能合约来确保其完整性和安全性

DeFi 协议主要出现在诸如借贷,去中心式交易和其他衍生产品的用途上。

就像传统的金融协议一样,DeFi 协议并不是孤立存在的。它的开放性质允许开发人员通过将现有协议组合在一起来创建新协议。这样,通过一种协议借贷所获得的资产可以以任何形式用作其他协议中的抵押品。这就造就了一个复杂且相互交织的资产和债务系统。而且,被用作其他协议中保留资产的协议如果失败,对其他协议也将具有连锁效应,就如同多米诺骨牌一样。

比如说,在 Maker 中创建的资产同时可用作其他协议中的抵押品,例如 Compound,dYdX 或 Uniswap 上的流动性池。确实,DeFi 的可组合性定义了开放式金融的属性,即在加密资产之上构建复杂的多组件金融系统的能力。但是,如果基础抵押资产失败,则所有关联协议都将受到影响

这些协议的核心不是由某个机构及其员工来管理,而是由代码或智能合约的编写规则。一旦将智能合约部署到区块链,DeFi dApps 即可在很少有人干预的情况下自动运行

像任何计算机代码一样,智能合约可能容易因为意外的编程错误而出现漏洞并且受到恶意黑客的攻击。

智能合约漏洞就是 DeFi 的黑天鹅。如果黑客发现并利用了 dApp 的开源代码中的错误,那么数百万美元可能会立即被盗取或耗尽。

治理(Governance)是 DeFi 协议的另一个关键方面,治理的过程依赖于代币的数量,参与者的投票权与其在投票系统中锁定的代币的数量成比例。

通过行政投票,参与者可以在系统上加注(即锁定)代币来选择执行合约,从而定义一套规则来管理系统。行政投票是连续的,参与者可以随时更改其投票,并且只要获得多数票,就可以重新选举新的合约。当选的合约是唯一允许操纵抵押资金的实体。如果要选择恶意合约,它可能会窃取所有作为抵押的资金。

保护行政投票的防御机制也是存在的。例如,治理安全模块将成功选出的合同封装一段时间。等时间过后,成功选举的合约才能控制系统,从而降低攻击载体。“紧急关机”功能使一组拥有足够代币的参与者可以暂停系统。但是,此操作需要一定容量的代币池。

假设现在有一个理性的对手(Adversary,密码学中用来泛指想攻破系统的人),这个对手只有在潜在回报高于成本的情况下才会进行攻击。在攻击中,这个对手为了竞选他的合约作为执行合约所必须支付的金额就是他的攻击成本。收益是如果合约一旦被选,他的合约窃取和产生的金额就是他的回报。选择对抗性的执行合约可以使这个对手通过两种方式获得经济效益。首先,此合约可以将所有 ETH 抵押品转移到对手的地址。其次,合约可以铸造新的 DAI 代币并将其转移给对手。然后可以交易 DAI 代币,直到 DAI 价格崩溃为止。

一方面,通过投票实施的管理机制允许一定程度的去中心化,从而多个协议参与者可以影响协议的未来方向。根据代币的分布,这或许可以减少其中一方产生恶意的风险。但是,这也为攻击投票系统创造了可能性。另一方面,掌控管理机制的“仁慈独裁者”也可以防止攻击。然而,这需要相信该中央实体不会丢失或暴露他的控制智能合约协议访问的私钥,并且该这个独裁者不能接受贿赂然后进行恶意攻击行为。

我们已经看到了智能合约黑客以及 DeFi 协议可组合性和交换机制带来的负面影响。智能合约可以在几秒钟内损失大量资金,我们仍需要更多的审核和保护,以增加其安全性。

点击链接,查看更多精彩文章

ZK-Rollup 在 Layer 2 拓展性中的应用 ZK-Rollup 在 Layer 2 拓展性中的应用

2020-06-22

黑客盗走五十万美元加密货币,解析 Defi 危机

[

共识协议:从 PoW 到 PoS,区块链的根基演变的内在逻辑

2020-05-22

黑客盗走五十万美元加密货币,解析 Defi 危机

](http://mp.weixin.qq.com/s?__biz=MzI0MTE5MjY4OA==&mid=2247484449&idx=1&sn=b16da1a55213337244f125ba5df674a3&chksm=e90e1fbede7996a8078cee044a63e174c2e7a1ad31f1b82fcff55ef389503b89ebd45a4e7f0b&scene=21#wechat_redirect)

从拓展性出发:认识 Optimistic Rollup 与 ZK-Rollup

2020-07-08

黑客盗走五十万美元加密货币,解析 Defi 危机

黑客盗走五十万美元加密货币,解析 Defi 危机

来源链接:mp.weixin.qq.com