第23章:DeFi 安全

  • Tiny熊
  • 发布于 1天前
  • 阅读 61

DeFi 协议管理着大量资产,但智能合约的不可变性使其成为黑客攻击的目标。常见的攻击包括重入攻击、整数溢出、访问控制漏洞、预言机操纵和闪电贷攻击。防范措施包括代码审计、安全工具、经济模型优化以及用户安全教育。随着DeFi规模扩大,提升安全水平,平衡创新与安全至关重要。

DeFi 协议管理着数百亿美元的资产,但其开放性也带来了独特的安全挑战。从 2016 年的 The DAO(重入攻击,$60M)到 2022 年的 Ronin Bridge(跨链桥权限管理不当,$625M),再到 2023 年的 Euler Finance(闪电贷攻击,$197M)、Multichain( 跨链桥漏洞,$126M)以及 2025 年初的 Bybit(多签签名欺骗,$1.5B),DeFi 领域持续面临严峻的安全威胁,累计损失已超过数百亿美元。

DeFi 安全的独特挑战

DeFi 的安全威胁与传统软件系统有本质区别:

代码公开透明:智能合约代码完全公开,攻击者可以充分研究代码逻辑,寻找任何可能的漏洞。一旦发现漏洞,可以编写自动化脚本立即发起攻击。

不可逆性:智能合约一旦部署就难以修改,且由于区块链的不可逆性,资产一旦被盗几乎无法追回。

可组合性风险:协议间的可组合性带来便利,但也放大了风险。一个协议的漏洞可能影响依赖它的所有其他协议。例如,某个借贷协议使用的预言机出现问题,可能导致多个依赖该价格的协议被攻击。

理解 DeFi 的安全风险、攻击手法和防护措施,对于开发者和用户来说都至关重要。本章将重点介绍几种最常见的 DeFi 攻击方式。

重入攻击

什么是重入

重入(Reentrancy)是指在一个函数执行完成之前,该函数被再次调用的现象。

在智能合约中,当合约 A 向外部地址转账 ETH 时(如使用 call() 函数转账),如果目标是另一个合约 B,那么合约 B 的 receive()fallback() 函数会被触发执行。在这个函数中,合约 B 可以再次调用合约 A 的函数,形成"重入"。

image-20260111154742779

攻击统计调用流程示例

1. 用户调用合约 A 的 withdraw() 函数
2. withdraw() 向用户地址转账
3. 如果用户是合约 B,B 的 receive() 被触发
4. receive() 中再次调用合约 A 的 withdraw()
5. 此时回到步骤 2,但合约 A 的余额可能还未更新
6. 重复提取资金

正常情况下,如果合约 A 在转账前先更新了余额,重入就不会造成问题。但如果余额更新在转账之后,攻击者就可以利用重入来重复提取资金。

典型的漏洞代码模式:

function withdraw() public {
    uint amount = balances[msg.sender];
    // ❌ 漏洞:先转账,后更新状态
    msg.sender.call{value: amount}("");  // 调用 receive() 
    balances[msg.sender] = 0;  // 状态更新在转账之后
}

攻击者的合约可以在 receive() 函数中再次调用 withdraw(),由于余额尚未清零,可以重复提取资金。

真实案例:The DAO 攻击(2016年)

2016 年 6 月,The DAO 项目遭受重入攻击,成为以太坊历史上最著名的安全事件。

  • 背景:The DAO 是一个去中心化投资基金,通过众筹募集了约 1.5 亿美元(当时占以太坊总供应量的 14%)
  • 攻击过程:攻击者发现 splitDAO 函数存在重入漏洞。该函数在转账后才更新用户余额,攻击者反复调用该函数,在单笔交易中多次提取资金
  • 损失:约 360 万个 ETH(当时价值约 5000 万美元)
  • 后果:这次攻击引发了以太坊社区的激烈辩论,最终导致了以太坊硬分叉(Ethereum 和 Ethereum Classic 的分裂)

防护措施

现代智能合约开发已建立了完善的防护模式:

  1. Checks-Effects-Interactions 模式:先检查条件、再更新状态、最后与外部交互

    function withdraw() public {
    uint amount = balances[msg.sender];
    require(amount > 0, "No balance");
    balances[msg.sender] = 0;  // ✓ 先更新状态
    msg.sender.call{value: amount}("");  // 后外部调用
    }
  2. 重入锁(ReentrancyGuard):使用 OpenZeppelin 的标准库

    
    import "@openzeppelin/contracts/security/ReentrancyGuard.sol";

function withdraw() public nonReentrant { // 函数逻辑 }


## 价格操纵

价格操纵是指攻击者通过各种手段人为改变资产价格,然后利用被操纵的价格在 DeFi 协议中获利。DeFi 协议依赖价格数据进行借贷抵押率计算、清算触发、衍生品定价等关键操作,如果价格被操纵,协议就会做出错误的决策。

最常见的价格操纵方式是利用价格来源的缺陷。早期许多协议直接使用单一 DEX 的即时价格,攻击者可以通过大额交易短暂改变价格,在协议中完成操作后再恢复价格。

早期常见的漏洞设计:
```solidity
// ❌ 漏洞:直接使用 DEX 即时价格
function getPrice() public view returns (uint) {
    uint reserve0 = pair.reserve0();
    uint reserve1 = pair.reserve1();
    return reserve1 / reserve0;  // 即时价格,易被操纵
}

典型的价格操纵攻击流程:

  1. 借入大量代币 A(通过闪电贷)
  2. 在 DEX 用代币 A 大量购买代币 B,将 B 的价格推高
  3. 在目标协议中,以被操纵的高价格作为抵押品借出资产
  4. 在 DEX 卖出代币 B,恢复价格
  5. 归还闪电贷,保留借出的资产

整个过程在一个区块内完成,成本仅为 Gas 费和手续费。

案例:Harvest Finance 攻击(2020年)

2020 年 10 月,Harvest Finance 遭受价格操纵攻击。

  • 背景:Harvest Finance 是一个收益聚合器,将用户资金存入 Curve 等协议赚取收益
  • 攻击过程
    1. 攻击者从 Uniswap 和 Cream 借入 5000 万 USDC 和 1780 万 USDT
    2. 在 Curve 的 USDC/USDT 池子中大额兑换(如用 USDC 换 USDT),操纵两种稳定币的价格比例
    3. Harvest 的金库份额价值计算依赖 Curve 池子的资产比例。当比例被操纵时,Harvest 计算的份额价值出现偏差
    4. 攻击者利用这个偏差套利:
      • 价格被压低时,在 Harvest 中存入资产,以低价买入金库份额
      • 反向操纵价格(用 USDT 换回 USDC),恢复或推高比例
      • 价格被抬高时,从 Harvest 中提取资产,以高价卖出金库份额
      • 每次操纵价格的来回都能从价差中获利
    5. 重复步骤 2-4 多次,累积利润后归还闪电贷
  • 损失:约 3400 万美元
  • 技术要点:攻击者利用了 Curve 稳定币池的价格计算机制。虽然 Curve 使用稳定币兑换,价格理论上应该接近 1:1,但大额交易仍会造成瞬时偏差

案例:Mango Markets 攻击(2022年)

2022 年 10 月,Solana 上的去中心化交易平台 Mango Markets 遭受价格操纵攻击。

  • 背景:Mango Markets 支持杠杆交易,使用链上订单簿获取价格
  • 攻击过程
    1. 攻击者使用两个账户,在 Mango Markets 和其他交易所同时操作
    2. 账户 A 在 Mango Markets 做多 MNGO 代币永续合约
    3. 账户 B 在现货市场大量买入 MNGO,将价格从 0.03 美元推高至 0.91 美元(涨幅 30 倍)
    4. Mango Markets 的价格机制更新,账户 A 的抵押品价值暴涨
    5. 账户 A 借出平台上几乎所有资产(USDC、SOL、BTC 等)
    6. 停止买入 MNGO,价格回落,但攻击者已提走资产
  • 损失:约 1.17 亿美元
  • 后续:攻击者提出治理提案,归还部分资金以换取不被起诉,但仍保留了约 4700 万美元的利润。攻击者后来在波多黎各被捕并引渡到美国

防护措施

现代 DeFi 协议采用多层防护:

  1. 时间加权平均价格(TWAP):使用一段时间内的平均价格,而非即时价格

    // Uniswap V2 TWAP 示例
    uint32 blockTimestamp = uint32(block.timestamp % 2**32);
    uint32 timeElapsed = blockTimestamp - blockTimestampLast;
    price0Average = FixedPoint.uq112x112(
    uint224((price0Cumulative - price0CumulativeLast) / timeElapsed)
    );
  2. 多数据源聚合:使用 Chainlink 等专业预言机服务,聚合多个独立数据源,避免依赖单一价格来源

  3. 价格变动限制:设置单次更新的最大变动幅度,异常波动时暂停操作

  4. 延迟更新机制:关键操作(如清算、铸造)使用延迟价格,给套利者时间纠正异常价格

闪电贷攻击

闪电贷(Flash Loan)是 DeFi 的创新金融工具,最初由 Aave引入,后被大多数借贷协议采用(如 dYdX、Uniswap V2 等)。它允许用户在单个交易内借入大量资金而无需抵押,只要在交易结束前归还即可。如果交易执行失败或未归还资金,整个交易会回滚。

闪电贷本身是中性的金融工具,但它为攻击者提供了巨大的资金杠杆,能够放大其他漏洞的影响。攻击者无需任何初始资金,只需支付少量手续费,就能调动数千万甚至上亿美元的资金。

典型的闪电贷攻击流程:

1. 从 Aave/dYdX 借入大量资产(如 1 亿 USDC)
2. 执行攻击操作:
   - 操纵 DEX 价格
   - 利用协议漏洞
   - 触发异常清算
3. 从攻击中获利(如借出 1.1 亿 USDC 等值资产)
4. 归还闪电贷本金 + 手续费
5. 保留利润

闪电贷攻击

整个过程在一个原子交易中完成,要么全部成功,要么全部回滚。

真实案例:bZx 攻击(2020年)

2020 年 2 月,去中心化借贷协议 bZx 连续遭受两次闪电贷攻击。

第一次攻击(2月15日)

  • 攻击步骤
    1. 从 dYdX 借入 10,000 ETH
    2. 在 Compound 存入 5,500 ETH 作为抵押
    3. 在 bZx 借入 112 WBTC,同时做空 WBTC(开杠杆空头仓位)
    4. bZx 自动在 Uniswap 买入 WBTC 执行做空订单,推高价格
    5. 在其他 DEX 以较低价格买入 WBTC
    6. 归还 Compound 贷款和 dYdX 闪电贷
  • 损失:约 35 万美元
  • 关键漏洞:bZx 使用 Uniswap 单一价格源,且在一个交易内既改变价格又依赖该价格

第二次攻击(2月18日)

  • 攻击步骤
    1. 从 bZx 借入大量 sUSD(合成美元)
    2. 在 Kyber 和 Uniswap 用 sUSD 兑换 ETH,操纵 sUSD/ETH 价格
    3. 利用被操纵的价格在 bZx 借出更多资产
  • 损失:约 63 万美元

案例:Cream Finance 攻击(2021年)

2021 年 10 月,Cream Finance 遭受史上最大的闪电贷攻击之一。

  • 背景:Cream Finance 是多链借贷协议,支持多种资产作为抵押品
  • 攻击过程(高度复杂,涉及多个协议):
    1. 攻击者借入大量 ETH 闪电贷
    2. 利用 Cream Finance 对 yUSD(Yearn 的稳定币)的定价漏洞
    3. yUSD 的价格计算依赖其底层资产,攻击者通过复杂的套娃操作(在多个协议间存取款)放大抵押品价值
    4. 以被放大的抵押品在 Cream Finance 借出大量资产
    5. 攻击者重复操作 17 次,每次都利用价格计算缺陷提取价值
  • 损失:约 1.3 亿美元(包括 ETH、DAI、USDC、USDT、WBTC 等多种资产)
  • 技术细节:攻击利用了 Cream Finance 对某些 LP 代币和收益代币的定价机制缺陷,这些代币的价值计算依赖其底层资产,攻击者通过闪电贷操纵底层资产的供应量,从而操纵派生资产的价格

防护措施

无法直接禁止闪电贷(它们是开放金融的一部分),但可以通过以下方式降低风险:

  1. 使用可靠的预言机:避免依赖单一 DEX 的即时价格,使用 TWAP 或 Chainlink

  2. 限制单笔交易影响:设置单笔交易对协议状态的最大影响范围

  3. 多区块操作:关键操作(如大额借贷、清算)需要分多个区块完成

  4. 异常检测:实时监控异常大额交易和价格波动,自动暂停协议

  5. 审慎的资产支持:对于支持的抵押资产,特别是 LP 代币、收益代币等派生资产,需要仔细审查其定价机制

治理攻击

许多 DeFi 协议采用链上治理机制,代币持有者可以通过投票决定协议的关键参数、合约升级、资金分配等事项。如果攻击者能够获得足够的治理代币(通常需要超过法定人数或多数票),就可以通过恶意提案控制协议。

治理攻击的两种主要方式:

  1. 市场收购:在二级市场大量购买治理代币,获得投票权
  2. 闪电贷投票:临时借入大量治理代币,在投票期间掌握多数票,投票后归还

案例:Beanstalk Farms 攻击(2022年)

Beanstalk 是一个算法稳定币协议,采用完全链上治理,STALK 代币持有者可以通过投票决定协议升级 2022 年 4 月,算法稳定币协议 Beanstalk Farms 遭受了治理攻击。

  • 攻击过程
    1. 攻击者从 Aave 借入 10 亿美元的闪电贷(包括 USDC、USDT、DAI、LUSD 等)
    2. 将借入资金在 Beanstalk 中存款,获得大量 STALK 治理代币(闪电贷获得的投票权)
    3. 立即发起并通过恶意提案 BIP-18(Beanstalk Improvement Proposal 18)
    4. 提案内容:将协议金库中的资金转移到攻击者控制的地址
    5. 由于 Beanstalk 没有时间锁,提案立即执行
    6. 攻击者提取协议资金,归还闪电贷,保留利润
  • 损失:约 7600 万美元(几乎清空了协议金库)

由于 Beanstalk 没有时间锁,攻击者可以在一个交易内完成闪电贷和治理投票,导致了严重的损失。

现代治理机制的标准防护措施

  1. 投票权快照(Snapshot):在提案创建时记录代币持有情况,防止闪电贷投票

    function propose() public returns (uint) {
    uint votingPower = getPriorVotes(msg.sender, block.number - 1);
    // 使用历史区块的投票权,而非当前区块
    }
  2. 时间锁(Timelock):提案通过后延迟执行(通常 2-7 天),给社区反应时间

    
    // Compound、Uniswap 等使用的 7 天时间锁
    uint public constant DELAY = 7 days;

function executeProposal(uint proposalId) public { require(block.timestamp >= proposal.eta, "Timelock not expired"); // 执行提案 }


3. **合理的提案门槛**:
   - 提案创建:需要持有总供应量的 1-2%
   - 法定人数:需要至少 4-10% 的代币参与投票
   - 通过阈值:需要 50-66% 的票数支持

4. **多签紧急停止**:由多签控制的紧急暂停机制,可在发现恶意提案时立即中止

5. **治理守护者(Guardian)**:具有否决权的多签地址,可以否决明显恶意的提案

6. **分级治理**:重要决策需要更高的门槛和更长的时间锁

## MEV

区块链的透明性使得交易在被打包进区块前就对外可见(在内存池 mempool 中)。攻击者(通常称为  MEV 搜索机器人)可以实时监控待处理的交易,通过支付更高的 Gas 费或直接与验证者合作,让自己的交易优先执行,从中获利。

这种行为被称为 **MEV(Maximal Extractable Value,最大可提取价值)**,之前称为 Miner Extractable Value(矿工可提取价值),在[以太坊](https://learnblockchain.cn/learn/21)转向 PoS 后改为 Maximal Extractable Value。

MEV 严格来说不是一种攻击,而是获利方式,但是当套利机器人套利的对象是我们时,我们也可以认为是被 MEV 攻击了。

MEV 的主要形式:

**1. 抢跑(Front-running)**

机器人检测到有利可图的交易,提交相似交易并支付更高 Gas 费,让自己的交易先执行。

**场景 1:清算抢跑**
  1. 某个借贷协议中的抵押仓位达到清算线
  2. 用户 A 提交清算交易到 mempool
  3. MEV 机器人检测到这笔清算交易
  4. 机器人提交相同的清算交易,但支付更高 Gas 费
  5. 机器人的交易先执行,获得清算奖励(通常为抵押品的 5-10%)
  6. 用户 A 的交易失败或空跑

场景 2:NFT 抢购

1. 某个热门 NFT 项目开启公开销售
2. 用户提交购买交易
3. MEV 机器人检测到 mempool 中的购买交易
4. 机器人立即提交相同的购买请求,支付极高 Gas 费(有时高达几十 ETH)
5. 机器人抢先购得 NFT

2. 三明治攻击(Sandwich Attack)

在目标交易前后各插入一笔交易,这是 MEV 中最常见的攻击方式:

交易 1(机器人):买入资产,推高价格
交易 2(受害者):按更差的价格成交
交易 3(机器人):卖出资产,获利

以下是三明治攻击的运作方式示意:

图片

以下是在 Uniswap 上使用 Ampleforth 的治理代币 (FORTH) 发生的三明治攻击的实际案例:

图片

3. 后跑(Back-running)

在目标交易之后立即执行交易,利用目标交易造成的市场状态变化获利。

场景 1:DEX 套利

1. Uniswap 上有用户执行大额交易,将 ETH/USDC 价格从 2000 推高至 2005
2. MEV 机器人检测到这笔交易
3. 机器人在该交易后立即执行套利:
   - 在 Uniswap 以 2005 价格卖出 ETH
   - 在 Sushiswap 以 2000 价格买入 ETH
   - 获得价差利润

场景 2:预言机套利

1. Chainlink 预言机更新 ETH 价格从 2000 提升到 2010
2. MEV 机器人检测到预言机更新交易
3. 机器人在更新交易后立即执行:
   - 在依赖该预言机的 DEX 中,按旧价格买入 ETH
   - 在其他市场按新价格卖出
   - 获得价差利润

4. 清算狙击

监控借贷协议中接近清算线的仓位,一旦可以清算就立即抢先执行,获得清算奖励。

案例 1:jaredfromsubway.eth(2023年)

2023 年,一个名为 "jaredfromsubway.eth" 的 MEV 机器人成为以太坊上最活跃的三明治攻击者。

  • 活动时间:2023年2月至今
  • 总收入:超过 3400 万美元(截至 2023 年底)
  • 攻击方式:专门针对 Uniswap V2/V3 等 DEX 上的用户交易进行三明治攻击
  • 特点
    • 使用极其复杂的智能合约优化 Gas 效率
    • 每天执行数千笔三明治攻击
    • 支付的 Gas 费总额超过 500 万美元
    • 成为区块构建者的主要收入来源之一

案例 2:0xbadc0de MEV 机器人(2021年)

2021 年,一个清算机器人在单笔交易中获利 670 万美元。

  • 事件经过
    1. Compound 协议中一个 COMP 抵押仓位接近清算线
    2. COMP 价格下跌触发清算条件
    3. MEV 机器人立即提交清算交易,支付 87 ETH(约 25 万美元)的高额 Gas 费, 确保交易在同一区块的第一位被执行,击败了所有其他竞争者。
    4. 成功清算获得价值 670 万美元的抵押品折扣

用户在 DEX 交易时,三明治攻击会导致:

  • 滑点增加:实际成交价格比预期更差
  • 损失:平均每笔被三明治攻击的交易损失 0.5-3%
  • 隐蔽性:用户通常只看到"滑点过大",不知道是被 MEV 机器人攻击

MEV 保护方案的演进

2021-2024 年间,以太坊上提取的 MEV 总价值超过 10 亿美元。为应对日益严重的 MEV 攻击,DeFi 生态演化出多种保护方案:

1. Flashbots MEV-Boost

2022 年推出,将 MEV 提取透明化和民主化。验证者可以通过 MEV-Boost 接收来自多个构建者(Builder)的区块提案,选择最优方案。这使得 MEV 价值能够部分回流给验证者和用户,而非完全被机器人获取。

2. CoW Swap 批量拍卖

将一个区块内的所有交易收集后统一定价执行,消除了交易顺序的影响。用户提交意图(Intent)而非直接交易,求解器(Solver)在链下计算最优执行路径。通过批量撮合,CoW Swap 能够提供优于传统 AMM 的价格,同时避免三明治攻击。

3. 1inch Fusion 私有订单流

订单不广播到公开内存池,而是直接发送给可信的解析器(Resolver)网络,避免被 MEV Bot 监控。解析器竞争提供最优执行价格,用户无需担心被抢跑或三明治攻击。

4. Uniswap X

类似 1inch Fusion,将交易路由外包给专业的填充者(Filler),在链下竞争最优价格。填充者承担执行风险,用户只需签署意图,无需支付 Gas 费(除非交易失败)。

5. JIT(Just-In-Time)流动性攻击防护

除了传统的三明治攻击,市场还出现了 JIT 流动性攻击等新手法:MEV Bot 在大额交易前瞬间添加流动性,交易后立即撤出,赚取手续费的同时避免无常损失风险。这使得 MEV 保护成为现代 DEX 设计的重要考量,部分协议开始限制单区块内的流动性变动或采用延迟生效机制。

用户层面的防护措施

  1. 使用私密交易池:Flashbots Protect、MEV Blocker 等服务隐藏交易,直接发送给验证者

    传统流程:交易 → 公开 mempool → 被 MEV 机器人看到 → 被攻击
    私密流程:交易 → 直接发送给验证者 → 不公开 → 避免攻击
  2. 设置严格的滑点保护:限制可接受的最大价格滑点(如 0.5%)

  3. 使用聚合器:1inch、Cowswap 等聚合器提供 MEV 保护

  4. 使用订单簿 DEX:dYdX、Vertex 等订单簿式 DEX 没有公开 mempool

以上是 DeFi 中最常见的几种攻击方式。除此之外,还有许多其他安全风险,例如跨链桥漏洞(Ronin Bridge $625M、Wormhole $326M)、用户层面的钓鱼攻击、私钥管理不当、代币授权滥用等,这些问题同样会造成严重损失,但本章不一一详述。

面对如此复杂的安全威胁,安全审计成为 DeFi 协议上线前的必要环节。

安全审计与工具

随着 DeFi 的发展,智能合约安全审计已成为项目上线的标准流程。专业的审计公司会对代码进行人工审查和自动化测试,识别潜在的安全问题。

主流的审计公司包括 Trail of Bits、OpenZeppelin、ConsenSys Diligence、CertiK、PeckShield、GoPlus 等。一次全面的审计通常需要数周时间,费用从数万到数十万美元不等。审计报告会列出发现的问题及其严重程度,项目方需要在上线前修复关键和高危问题。

但需要明确的是,审计不能保证绝对安全。审计只能发现已知的漏洞模式,新型的攻击方式或复杂的经济模型缺陷可能被遗漏。即使是经过多次审计的协议,也可能因为后续升级引入新问题或在实际运行中暴露问题。

除了人工审计,还有很多自动化安全工具可以辅助检测。Slither、Mythril 等静态分析工具可以扫描常见的代码模式问题。Echidna、Foundry 的模糊测试功能可以自动生成测试用例发现边界条件错误。Certora 等形式化验证工具可以数学证明代码的某些属性,提供更强的安全保证。

Bug Bounty(漏洞赏金计划)是另一种重要的安全机制。项目方在 ImmunefiHackerOne 等平台发布赏金,邀请白帽黑客测试系统安全。发现严重漏洞可以获得高额奖励(有时达到数百万美元),这激励了安全研究者持续关注协议安全,并倾向于负责任地披露漏洞而非利用漏洞攻击。

安全最佳实践

对于开发者,遵循安全开发规范可以大幅降低风险。使用经过验证的代码库(如 OpenZeppelin)而非自己实现基础功能,可以避免重复造轮子带来的风险。编写全面的单元测试和集成测试,覆盖各种边界情况和异常场景。使用静态分析工具在开发阶段就发现潜在问题。

代码应该保持简洁明了,避免过度复杂的逻辑。复杂的合约更容易隐藏漏洞,也更难审计。将系统拆分为多个职责单一的合约,降低单点风险。对外部调用保持警惕,假设外部合约可能是恶意的。

上线前进行充分的审计和测试。可以先在测试网运行一段时间,或以有限规模上线(设置资金上限),逐步放开限制。部署后持续监控协议运行状况,建立异常检测和紧急暂停机制。使用时间锁和多签控制关键操作,避免单点控制。

小结

DeFi 的开放性带来了创新,也带来了独特的安全挑战。本章介绍了五种最常见的攻击方式:

  • 重入攻击:利用外部调用时的执行流程漏洞重复提取资金(The DAO $60M)
  • 价格操纵:通过大额交易短暂改变价格,欺骗协议做出错误决策(Harvest Finance $34M、Mango Markets $117M)
  • 闪电贷攻击:利用无抵押贷款放大其他漏洞的影响(Cream Finance $130M)
  • 治理攻击:通过闪电贷或市场收购获得投票权,控制协议(Beanstalk $76M)
  • MEV:监控 mempool 中的交易,通过抢跑、三明治攻击、后跑等方式获利(年提取额超 20 亿美元)

这些攻击的共同特点是利用协议设计缺陷、价格来源漏洞、治理机制弱点或区块链透明性。防护措施包括使用 Checks-Effects-Interactions 模式、重入锁、TWAP 价格预言机、投票权快照、时间锁等。

安全审计是项目上线前的必要环节,但审计无法保证绝对安全。新型攻击方式、经济模型缺陷、升级引入的问题,都可能导致损失。漏洞赏金计划、形式化验证、实时监控等工具可以补充审计的不足。

从 2016 年的 The DAO 到 2025 年的 Bybit,DeFi 累计损失已超过数百亿美元。安全不是一次性达成的目标,而是需要持续投入的过程。

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Tiny熊
Tiny熊
0xD682...E8AB
登链社区发起人 通过区块链技术让世界变得更好而尽一份力。