返回博客

Loopring (LRC) 协议事件

Code AuditingPhalcon SecurityMetaSleuth
2020年12月3日
阅读约 6 分钟
核心要点
  • Loopring 的 LRC 协议费用金库(sellTokenForLRC)中存在严重的访问控制漏洞,允许任何人触发代币销售,从而实现价格操控

  • 攻击者将闪电贷与未授权的金库兑换相结合,扭曲 Uniswap V1-LRC 的定价,进而进行套利

Hash(ti)(mod2248)=[b0,b1,,b247]T,其中 bi{0,1}\text{Hash}(t_i) \pmod{2^{248}} = [b_0, b_1, \dots, b_{247}]^T, 其中\ b_i \in \{0, 1\}

2020年11月,Loopring的LRC协议费用金库(Protocol Fee Vault)中出现了一个关键漏洞,攻击者利用了访问控制的薄弱环节,并通过闪电贷攻击操纵了代币价格。此事件凸显了强大的访问控制和持续的DeFi安全监控对于防止代价高昂的攻击的重要性。

Loopring (LRC) 协议事件简介

2020年末,包括Pickle Finance和88mph在内的多个基于以太坊的DeFi平台经历了安全事件。为了检测此类漏洞,BlockSec开发了ThunderForecast系统,该系统识别出涉及异常大的交易汇率差异以及同一外部拥有账户(EOA)持续获得以太币的疑似交易。

通过我们的EthScope系统,我们分析了这些交易,并发现了一个针对Loopring金库协议(特别是LRC协议费用金库 LRCPFV)中漏洞的攻击。本博客文章将详细介绍此次攻击、其影响以及为DeFi安全社区带来的经验教训。


LRC协议费用金库概述

Loopring是以太坊上的一个开源去中心化交易所(DEX)协议。其原生代币LRC(ERC-20)在该生态系统中使用。Loopring的金库协议,称为LRC协议费用金库(LRCPFV),存储协议费用并允许将交易费用兑换成LRC代币。

LRCPFV中的漏洞函数是sellTokenForLRC,它允许在没有适当访问控制的情况下将代币兑换成LRC,使得任何人都可以调用它。

function sellTokenForLRC(
    address token,
    uint amount
)
    external
    nonReentrant
{
    require(amount > 0, "ZERO_AMOUNT");
    require(token != lrcAddress, "PROHIBITED");

    address recipient = tokenSellerAddress == address(0) ? owner : tokenSellerAddress;

    if (token == address(0)) {
        recipient.sendETHAndVerify(amount, gasleft());
    } else {
        token.safeTransferAndVerify(recipient, amount);
    }

    require(
        tokenSellerAddress == address(0) ||
        ITokenSeller(tokenSellerAddress).sellToken(token, lrcAddress),
        "SELL_FAILURE"
    );

    emit TokenSold(token, amount);
}

由于此函数缺乏访问控制,攻击者可以反复调用它来操纵代币价格并从套利机会中获利。


攻击详情

我们分析了一个代表性的攻击交易:0x00b2c...。攻击涉及六个关键步骤:

  1. 闪电贷: 从闪电贷提供商(0xEB7e...)借入3,773.88 ETH。
  2. 初始兑换: 在Uniswap V1-LRC上将3,773.88 ETH兑换成5,014.68 LRC,汇率为1 ETH = 1.32878 LRC。
  3. 费用金库兑换: 通过调用有漏洞的sellTokenForLRC函数,将LRCPFV中存储的0.231 ETH费用兑换成0.000219 LRC。此未经授权的调用操纵了Uniswap上的LRC价格,使其相对于ETH的价值急剧增加(1 ETH = 0.00094 LRC)。
  4. 盈利兑换: 在Uniswap V1-LRC上将5,014.68 LRC兑换回3,774.09 ETH,由于操纵的价格,额外获得了0.215 ETH。
  5. 贷款偿还: 偿还3,773.88 ETH的闪电贷。
  6. 利润转移: 将0.215 ETH的利润发送到攻击者的EOA。

此漏洞利用了闪电贷攻击,结合价格操纵和金库合约中缺乏访问控制。


攻击的影响和规模

分析的交易发生在2020年10月13日。根据CoinGecko的数据,当时LRC的价格约为0.0005175 ETH。

我们的调查发现:

  • 恶意合约: 攻击者部署了3个(0xa896...0x414a...0xd91d...)。
  • 攻击量: 自LRCPFV部署的区块9,644,449以来,攻击者的EOA(0x81e8...)发起了90笔交易。
  • 最高利润: 一笔交易(0x33eab...)产生了9.89 ETH的利润。
  • 总利润: 约80.97 ETH(截至2020年10月1日,约合48,849美元)。

根本原因是sellTokenForLRC函数缺少访问控制,使得重复利用成为可能。


开始使用Phalcon Security

检测所有威胁,警报重要事件,并阻止攻击。

立即免费试用

经验教训与结局

随着以太坊DeFi生态系统的发展,访问控制漏洞等安全挑战变得越来越关键。虽然引人注目的攻击常常吸引眼球,但不太显眼的漏洞也会造成重大的经济损失,正如此次事件所示。

Loopring因这次漏洞损失了约80.97 ETH,这凸显了进行严格的智能合约审计和持续安全监控的必要性。

对于DeFi协议而言,实施严格的访问控制,利用BlockSec的智能合约审计Phalcon Security等工具,以及主动的风险管理,对于保护数字资产至关重要。


探索MetaSleuth调查

追踪资金流并为调查建立证据

立即免费试用

事件时间线

  • 2020/11/30: ThunderForecast检测到可疑交易。
  • 2020/12/01: 使用EthScope完成详细分析。
  • 2020/12/02: 向Loopring团队报告漏洞。
  • 2020/12/03: 确认漏洞;实施修复。
  • 2020/12/03: 公开披露事件详情。
  • 2021/01/03: 为该漏洞分配CVE-2020-35962。

参考和进一步阅读

订阅最新动态
约940万美元损失:Injective、Aquifer遭利用攻击 | BlockSec Weekly
Security Insights

约940万美元损失:Injective、Aquifer遭利用攻击 | BlockSec Weekly

过去一周(2026/08/31-2026/09/06),Injective、Solana、Ethereum和Flow EVM上发生四起安全事件,损失约940万美元。最大的是Injective漏洞,保险基金标识符与二元期权市场标识符冲突,结算路径未比较其面额,损失约480万美元;Solana上的Aquifer因交换路径调用未验证的调用者提供的Token Program,损失约247万美元;Ethereum上的Notional Finance V1因未检查的uint128转换将债务估值为零,损失约173万美元。Flow EVM上的Ankr FLOW因质押入口跳过暂停保护并按过时比率铸币,损失约41万美元。

超越智能合约:Web3中的域名与DNS运营安全
Security Insights

超越智能合约:Web3中的域名与DNS运营安全

合约审计只审合约本身。我们对DefiLlama TVL前100协议背后的100个域名进行了8项基于SEAL的DNS和注册商检查,共800项检查,只有一个域名全部通过。以下是大多数项目缺失的四项关键控制措施,以及它们在用户入口处为何至关重要。

Web3攻击面:渗透测试概览

Web3攻击面:渗透测试概览

加密机构承载所有传统攻击面,并叠加资金处理链。本文提供系统的实用抽象:应用、授权与签名、区块链交互、基础设施四组件模型,说明各自职责、代表实现及继承的攻击面,并将web3特有覆盖细分为五大攻击面:生产与自动化运维、签名意图、审批与提现链、资金逻辑及链上交易与已部署合约。

Web3 最佳安全审计方

在上线之前验证设计、代码与业务逻辑,对标业内最高安全标准。

BlockSec 审计

用 Phalcon Security 获得实时防护

光靠审计还不够。Phalcon Security 实时发现攻击,并在攻击执行途中将其拦下。

Phalcon Security

用 MetaSleuth Investigation 深入追查

用 BlockSec 的 MetaSleuth Investigation 扩展你的数字货币合规能力——首个用于追踪资金、绘制交易网络、揭示隐藏链上关联的平台。

借助清晰的可视化洞察与可直接取证的工作流,在整个数字资产生态中更快地从发现问题走到解决问题。

MetaSleuth Investigation