这轮牛市是 Defi 的繁荣起点,随着该行业的崛起成为人们关注的焦点,攻击者也相应地将注意力转向了这一领域。

作者:Jonas@Foresight Ventures

封面:Photo by Clint Patterson on Unsplash

在加密行业的黑暗森林里,Defi 已成为黑客的提款机,今年迄今损失总金额已超过 30 亿美元。一是因为 Defi 平台持有大量资金,攻击成功的回报很高。二是因为大多数 Defi 协议代码都是开源,更易受到网络安全威胁。三是因为 Defi 通常生态互连,放大攻击的便利性。Token Terminal 报告显示,Defi 大约 50% 的漏洞发生在跨链桥上,其次为借贷,交易所和机枪池。

图片
发生时间项目类型损失金额原因
22 年 10 月MangoDEX1.1 亿美元价格操纵
22 年 10 月Binance Bridge跨链1 亿美元合约漏洞
22 年 8 月Nomad Bridge跨链1.9 亿美元合约漏洞
22 年 6 月Harmony Bridge跨链1 亿美元私钥泄漏
22 年 4 月Beanstalk稳定币8000 万美元闪电贷投票
22 年 3 月Ronin Network侧链5.5 亿美元私钥泄漏
22 年 1 月Wormhole跨链3.3 亿美元合约漏洞
22 年 1 月Qubit Bridge跨链8000 万美元合约漏洞
21 年 12 月Vulcan Forged链游1.4 亿美元私钥泄漏
21 年 12 月Badger DAO跨链1.2 亿美元合约漏洞
21 年 12 月Grim Finance机枪池3000 万美元合约漏洞
21 年 11 月bZx借贷5500 万美元私钥泄漏
21 年 11 月MonoX Finance自动做市商3100 万美元合约漏洞
21 年 10 月Compound借贷1.5 亿美元合约漏洞
21 年 10 月Cream Finance借贷1.3 亿美元价格操纵
21 年 9 月Vee Finance借贷3500 万美元预言机操纵
21 年 8 月Poly Network跨链6.1 亿美元合约漏洞
21 年 5 月PancakeBunny机枪池4500 万美元价格操纵
21 年 3 月Meerkat Finance借贷3100 万美元合约漏洞

对 Defi 的经济模型攻击更有研究价值,特别是一些机制在极端情况下的走向,很有利于我们理解代币经济学。某种意义上,如果黑客通过钓鱼、撞库等社会工程学手段来盗取资产,算是不义之财。而类似地通过 Defi 的规则来套利,就堪称明火执仗地赚钱,手段高明但无可置喙。

币价操纵,通过合约变现

价格操纵是 Defi 中最早和最常见的漏洞。而随着链上衍生品兴起,攻击的盈亏比变得很高。

案例 1:MANGO

22 年 10 月 Solana 链去中心化合约平台 Mango 遭遇攻击。

成功要素:山寨币合约仓位没有限制

攻击流程:

a) 建仓:攻击者首先向 Mango 交易平台 A、B 地址分别各转入 500 万美元。而后黑客通过 A 地址在 Mango 上利用合约做空代币 MANGO;同时在 B 地址上做多 MANGO。多空双开的原因在于,虽然 Mango 平台对山寨币合约仓位没有限制,但是深度较差,如果不和自己作对手盘,仓位就很难开到这么高。

b) 操纵价格:攻击者使用更多资金购买 MANGO 代币,在 10 分钟内将其价格从 2 美分升至 91 美分。因为 MANGO 是一种流动性低的代币,这使得攻击者能够快速操纵价格。

c) 变现:此时攻击者的多头仓位收益为 4.2 亿美元,再利用账户净资产从 Mango 平台进行借贷,好在流动性不足最终只借出 1.1 亿美元。

案例 2:GMX

22 年 9 月 Arbitum 链去中心化合约平台 GMX 遭遇攻击。

成功要素:0 滑点机制,攻击成本低

攻击流程:

a) 建仓:攻击者在 GMX 上反复开大量代币 AVAX 多头和空头的头寸。

b) 操纵价格:由于 GMX 是 0 滑点,因此预言机的喂价约等于执行价,但是 GMX 上的大额头寸会影响到其它交易所的 AVAX/USD 价格,然后预言机才反应过来并喂价给 GMX。0 滑点意味着攻击者在任何时刻都拥有无限流动性。举个极端例子,如果在 GMX 上做多 10 亿美金的 AVAX,照理说这么大的资金量会拉高实际交易的价格,但 GMX 的机制是 0 滑点,所以还是按照预言机的喂价来开仓。但这个体量的交易会拉高其它交易所 AVAX 的价格,假设涨了 20%,预言机才会把最新的价格反馈到 GMX 上,此时就可以按 AVAX 涨了 20% 的价格来平仓,并把赚到的 AVAX 提取到其它交易所卖出。

c) 变现:此时攻击者平仓盈利,攻击者赚到的 AVAX,就是 GLP 持有者亏损的 AVAX。

图片

利用预言机错误,通过抵押借贷变现

这类攻击执行起来非常复杂,但其模式类似,即依赖价格喂价的系统会临时操纵喂价以扭曲协议的内部核算。然后将资金以优惠的利率进行存入,然后在将预言机重置为正常值后立即以另一种货币或同一种货币提走。

案例 3:ANKR

22 年 12 月 Bsc 链借贷协议 Helio 遭遇攻击。

成功要素:预言机喂价不及时

攻击流程:

a) 预言机错误:Bsc 链质押项目 Ankr 被黑客直接利用合约漏洞,凭空铸造 10 万亿个 aBNBc,导致 aBNBc 价格几近归零。而借贷协议 Helio 预言机喂价是采用 6 小时平均加时权重的设置。

b) 建仓:攻击者使用 10 个 BNB 买了 Ankr 超发的 18 万个 aBNBc,之后将 aBNBc 交换为 Hello 的 hBNB。

c) 抵押借贷:攻击者以 hBNB 为抵押品在 Helio 中进行借贷,借贷出 1644 万稳定币 HAY。

d) 变现:攻击者将稳定币 HAY 交换成 BNB 和 USDC 等约 1500 万美元等值资产,进行提现。

案例 4:XVS

22 年 5 月 Bsc 链借贷协议 Venus 遭遇攻击。

成功要素:预言机喂价不及时

攻击流程:

a) 预言机错误:LUNA 增发崩盘时,Chainlink 对 LUNA 的价格反馈达到价格下限,被以 0.107 美元价格暂停。但 Bsc 链上借贷协议 Venus 的 LUNA 市场却在继续运行,喂价正是来自 Chainlink。当 LUNA 价格约为 0.01 美元时,团队才暂停协议。

b) 建仓:套利者从二级市场大量增发后的 LUNA,并提到 Bsc 链。

c) 抵押借贷变现:套利者在 Venus 上以 LUNA 为抵押品进行借贷,借贷出约 1400 万美元等值资产,进行提现。

案例 5:BZRX

20 年 5 月 Bsc 链借贷协议 bZx 遭遇攻击。

成功要素:预言机价格来源单一

攻击流程:

a) 建仓:首先攻击者通过闪电贷从去中心化合约平台 DYDX 借出 1 万个 ETH,使用其中 5500 个 ETH 在借贷平台 Compound 借出 112 个 WBTC。

b) 预言机错误:bZx 是保证金交易协议,用户可以抵押一种币作为保证金,在杠杆借出另一种币,这两个币的浮动汇率,bZx 需要预言机来喂价,并单一依赖 Uniswap 上价格。攻击者使用 1300 个 ETH 到 bZx 上开了 5 倍 ETH 空单(即使用其中 5637 个 ETH 兑换 WBTC),由于 Uniswap 池子可兑换的 WBTC 有限,WBTC 价格被拉高至正常值的 3 倍。

c) 变现:攻击者再把从 Compound 借到的 112 个 WBTC 卖出,共获利 36 万美元。

预言机操纵始终是 Defi 攻击的重灾区,相似案例还有 Vee Finance、 Harvest Finance、Value Defi、Warp Finance 等等、此处就不一一列举了。

做空 Defi 杠杆,导致死亡螺旋

熊市中流动性逐渐匮乏,非主流资产价格深度不足、波动变大。大规模做空可能是由 Defi 杠杆清算和资本做空共同推动的。

案例 6:LUNA

22 年 5 月 Terra 链的稳定币 UST 遭遇攻击。

成功要素:资金盘在熊市遇到流动性挤兑

攻击流程:

a) 建仓:攻击者认为 LUNA-UST 机制无法长期维持。Terra 通过 Anchor 给出的高收益率是一种引流的策略,吸引用户更多使用 UST。但是 20% 的收益率是不可持续的。当利率水平从 20% 下降至 7-12% 之间,会有价值约 90 亿美元的 LUNA 离开,但是由于 LUNA/UST 的流动性并不够好,估计约有 50 亿美元的 UST 会遭遇退出困境。如果想让 50 亿美元的 UST 兑换成 LUNA 并安全离开市场,可能需要 400 亿美元的 LUNA 市值,而当时 LUNA 的最大市值才不过 400 亿美元。似乎 Terra 方面已经耗尽了储备,没钱维持 UST 的稳定,或者是放弃了维持 UST 的稳定。因此观察是否还可持续的窗口,是 Curve 上的 UST Pool 是否出现不平衡的情况。因此当 Terra 从 Curve 移除 1.5 亿美元流动性,为 4pool 做准备时,较小的流动性池规模意味着 UST 出售对价格的影响比平时更大。攻击者开始抛售价值 2.85 亿美元的 UST,令稳定币开始脱锚。

坊间传言攻击者 Alameda 在 UST 崩溃前从 Voyager 借了 9 位数的 BTC,砸盘做空 BTC 以阻击 Terra 储备金。同时 Genesis Trading 向 Alameda 提供 10 亿美元 UST,为针对 UST 脱锚的攻击提供了子弹。

b) 杠杆循环清算:

UST 是算法稳定币,使用简单的铸造和销毁机制来保持稳定性。要铸造 UST,必须销毁等价值的 LUNA;同样用户也可以通过销毁 UST 来兑换等值的 LUNA。随着 UST 的下跌,假设的死亡螺旋成为现实,投资者以越来越低的价格销毁 UST 换取 LUNA,从而使未偿还的 LUNA 供应过度膨胀。事实上,LUNA 的供应量在短短几天内就从不到 3.5 亿枚增加到 6.5 万亿枚以上。

同时 UST 在 Abracadabra 遭到大规模清算。去年 11 月,Abracadabra 为 UST 启动了 Degenbox 策略,用户抵押 UST 借贷 MIM,通过循环抵押可以极大提高收益率。只要 UST 维持在 1 美元,这个策略基本上是无风险的,然而一旦 UST 脱钩,用户的抵押品价值降低面临被清算的风险。UST 价格到 0.97 会爆一批,低于 0.9 能爆掉 50% 以上用这个策略的人。循环往复,UST 价格越低,爆仓的人越多。

案例 7:CRV

22 年 11 月以太坊链去中心化稳定币交易平台 Curve 遭遇攻击。

成功要素:借贷协议可抵押长尾资产

攻击流程:

a) 建仓:Curve 的代币锁仓机制加上贿选机制,造成流动性严重不足。攻击者先在交易所开 CRV 高倍率空单。

b) 借贷做空:攻击者前后在 AAVE 共抵押 6360 万个 USDC,借出 9200 万个 CRV 砸盘做空。由于 CRV 价格暴跌,借贷协议 AAVE 上的 USDC 抵押物可以继续借出更多的 CRV 做空。

c) 杠杆循环清算:由于 CRV 本身是借贷协议抵押品,价格的快速下跌也引发了大量 CRV 被清算,或将引起死亡螺旋的连锁反应。攻击者意图击穿 CRV 创始人抵押仓位清算线,将其爆仓。虽然后来在创始人和社区联合下做空失败爆仓,但操作思路还是值得学习借鉴。

闪电贷治理攻击

Defi 攻击已不仅限于操纵价格了,若协议防线不足,治理机制漏洞也可能被攻击者利用。

案例 8:BEAN

22 年 4 月以太坊链去中心化稳定币 Beanstalk 遭受攻击。

成功要素:未对可投票资金添加时间锁

攻击流程:

a) 提案:攻击者在攻击前一天发布恶意提案,提案通过以后将会从 Beanstalk 合约中提取资金。

b) 建仓:攻击者通过闪电贷获得了 3.5 亿个 DAI、5 亿个 USDC、1.5 亿个 USDT、3200 万个 BEAN 和 1100 万个 LUSD 作为资金储备,从而积累了大量该协议的治理代币。

c) 投票:攻击者用 BEAN3CRV-f 和 BEANLUSD-f 来对提案发起投票,从而导致提案通过。攻击者获得 24830 个 ETH 和 3600 万个 BEAN 稳定币,获利约 8000 万美元。

图片

虽然是熊市,但是 Defi 市场仍保持一定的活力。从锁仓量来看,如果加密市场以原生资产 ETH 而非美元计价,那么 22 年 Maker DAO、Lido 等头部项目的 TVL 仍将实现正增长。即使以美元计算,Defi 市场仍然保持 400 亿美元以上的 TVL,比 21 年前要好得多,这意味着 Defi 市场已成为加密市场不可或缺一部分。

这轮牛市是 Defi 的繁荣起点,随着该行业的崛起成为人们关注的焦点,攻击者也相应地将注意力转向了这一领域。从上面的攻击中可以清楚地看出,攻击 Defi 协议并没有单一的方法,而是一些常见的攻击向量,导致一些年轻的 Defi 项目沦为了牺牲品。到目前为止,这些日益增长的攻击造成的损失还不是灾难性的。然而,随着生态系统的持续发展和总锁仓量的增长,涉及的资金将变得更多,攻击将更有利可图,未来将会看到更复杂的 Defi 攻击。实践出真知。

免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。文章内的信息仅供参考,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。