【漏洞分析】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 合约进行代币授权。这是攻击发生的第二个条件。

相关推荐
Gobysec14 天前
Goby 漏洞安全通告|GNU InetUtils Telnetd USER环境变量注入 权限绕过漏洞(CVE-2026-24061)
数据库·安全·gnu·漏洞分析·漏洞预警
QuantumRedGuestk23 天前
DEDECMS靶场CSRF漏洞分析与安全防护
网络安全·漏洞分析·csrf·dedecms
阿菜ACai1 个月前
20260109 - TRU 协议攻击事件分析:买得够多免费送了喂!
漏洞分析
阿菜ACai1 个月前
20250702 - FPC Token 攻击事件:严格的限制,灵活的黑客
漏洞分析
阿菜ACai2 个月前
20251217 - Yearn 攻击事件2:协议授人以柄错设地址,黑客自断一臂巧控价格
漏洞分析
阿菜ACai2 个月前
20251205 - USPD 攻击事件:初始化缺失露破绽,黑客潜伏多日终得手
漏洞分析
阿菜ACai2 个月前
20251124-DRLVaultV3安全事件:链上实时计算的滑点就等于没有滑点
漏洞分析
阿菜ACai3 个月前
20251103 - Balancer 攻击事件:还是 batchSwap,还是价格操纵+精度丢失
漏洞分析
阿菜ACai3 个月前
20230827 - Balancer 攻击事件:价格操纵 + 精度丢失的经典组合拳
漏洞分析
阿菜ACai5 个月前
20250918 - NGP Token 攻击事件:价格维持机制为攻击者做了嫁衣
漏洞分析