文章

DeFi 安全综述

DeFi 安全的重要性

DeFi 的安全问题一直以来都非常关键,自 2021 年以来,DeFi 因为黑客、钓鱼诈骗、地毯式撤资等行为造成了非常多损失。

2020-2023-loss-in-hacks 来源

诸多攻击中,针对智能合约漏洞的黑客攻击是造成资产损失最多的方式,统计 2021 年至 2023 年上半年,总共造成了550 亿美元的损失,平均损失金额占据了 DeFi 市场的 4%。

Web3 领域的攻击涉及多个部分,包括:区块链、钱包、NFT、DAO 等。其中,DeFi 项目的被攻击次数远超其它部分。

loss-amount&type-by-project-type 来源

常见的攻击行为

重入攻击

重入攻击,是指利用智能合约先对外交互、后改变自身状态的漏洞,重复执行某一函数,直至耗尽资源。

reentrant-attack 来源

例如,2022 年 7 月,Curve Finance 因为所使用的 Vyper 语言的特定版本,存在重入锁上的漏洞,使得编译时的存储区域(Storage Slots)发生了变化,从而无法防止重入攻击的入侵。

具体来看,当某个状态变量被锁上的时候,实际上是某个存储槽不允许改变。但是如果状态变量和存储槽的对应关系发生改变,那么原先预期被锁住的变量将不会被锁住,从而能够被改变。

三明治攻击

三明治攻击是指,在一笔大额交易发生之后,立刻以更高的手续费发起一笔交易,从而在买入即将被大额买入的资产,并在大额交易处理后,立刻卖出赚取差价。

sandwich-attack 来源

例如,David 希望通过 ETH-DAI 流动池,将 200000 ETH 兑换为 100 ETH。

这一交易信息在发送到公共的内存池(mempool)后,被 Roger 发现。于是,Roger 立刻发起了一笔资金量同样为 200000 DAI 甚至更多的交易,并且让手续费高于 David 的手续费,从而让自己的交易被优先处理。

在完成 Roger 的交易后,由于交易滑点的存在,交易池中 ETH 和 DAI 的兑换比例降低了,David 实际获得的 ETH 可能只有 95 ETH. 而且,由于 David 的购入,交易滑点继续产生,200000 DAI 只能够兑换91 ETH.

此时,Roger 再发起 ETH 兑换为 DAI 的交易,从而将之前兑换的 100 ETH 换成了大约 220000 DAI,赚取了 20000 DAI 的利润。

参考资料

  1. 文章:
    1. Breaking: Curve Finance pools exploited by over $47M due to reentrancy vulnerability
    2. A Beginner’s Guide to Sandwich Attacks in DeFi
  2. 数据:Footprint × Beosin H1 2023 Web3 Security Report
  3. 视频:DeFi安全與監管.mp4
  4. 对话:DeFi中的rug pull
本文由作者按照 CC BY 4.0 进行授权

热门标签