【漏洞分析】Li.Fi攻击事件分析:缺乏关键参数检查的钻石协议

背景信息

2024 年 7 月 16日,Li.Fi 协议遭受黑客攻击,漏洞成因是钻石协议中 diamond 合约新添加的 facet 合约没有对参数进行检查 ,导致 call 函数任意执行。且 diamond 合约拥有用户的 approve,所以攻击者可以构造恶意参数对用户资金进行转移。

攻击交易 https://app.blocksec.com/explorer/tx/eth/0xd82fe84e63b1aa52e1ce540582ee0895ba4a71ec5e7a632a3faa1aff3e763873

相关合约

  1. 钻石协议 LiFiDiamondhttps://etherscan.io/address/0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae#code
  2. 逻辑合约 GasZipFacethttps://etherscan.io/address/0xf28a352377663ca134bd27b582b1a9a4dad7e534#code

钻石协议

钻石协议的提案是 EIP-2535 :https://eips.ethereum.org/EIPS/eip-2535 ,想详细了解的读者可以阅读提案的具体内容。简单理解一下就是变种的 proxy 形式,根据不同的函数调用不同的 implement 合约。

Trace 分析

攻击者调用 LiFiDiamond.depositToGasZipERC20 函数,Diamond 合约 delegatecall Facet 合约

GasZipFacet.depositToGasZipERC20

LibSwap.swap 函数

_swap.callTo.call{value: nativeValue}(_swap.callData)函数中,攻击者构造恶意参数,导致实际上调用的是 USDT.transferFrom() 函数。

ERC20 授权

由于在 LibAsset 中需要用到 transferFrom 函数转移用户的 ERC20 代币,所以需要用户对 LiFiDiamond 合约进行代币授权。这是攻击发生的第二个条件。

相关推荐
阿菜ACai8 天前
20250918 - NGP Token 攻击事件:价格维持机制为攻击者做了嫁衣
漏洞分析
阿菜ACai10 天前
20250917 - WETToken 攻击事件:价格操控产生的套利空间
漏洞分析
阿菜ACai11 天前
Morpheus 审计报告分享3:StETH 的精度丢失转账机制
漏洞分析
阿菜ACai13 天前
Morpheus 审计报告分享2:ChianLink 数据源有着不同的“心跳”
漏洞分析
阿菜ACai18 天前
Morpheus 审计报告分享:AAVE 项目 Pool 合约地址更新导致的组合性风险
漏洞分析
墨染 殇雪22 天前
文件上传漏洞基础及挖掘流程
网络安全·漏洞分析·漏洞挖掘·安全机制
阿菜ACai2 个月前
20250730 - AnyswapV4Router 授权漏洞: 绕过了不存在的 permit 函数
漏洞分析
阿菜ACai2 个月前
20250709 - GMX V1 攻击事件: 重入漏洞导致的总体仓位价值操纵
漏洞分析·defi
阿菜ACai3 个月前
20250620 - Bonding 攻击事件: 项目方不创建的池子由我攻击者来创建
漏洞分析
阿菜ACai4 个月前
20250528 - Usual 攻击事件: 价差兑换与请君入瓮
漏洞分析·defi