freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

零时科技 || LI.FI 攻击事件分析
零时科技 2024-07-29 15:43:42 31079

背景介绍

2024年7月16日,我们监控到了一笔Ethereum上的攻击事件,https://etherscan.io/tx/0xd82fe84e63b1aa52e1ce540582ee0895ba4a71ec5e7a632a3faa1aff3e763873

被攻击的协议为LI.FI Protocol,LI.FI Protocol是一个聚合协议。此次攻击中,攻击者共获利2,276,295 USDT折合227万USD

攻击及事件分析

首先,攻击者查询了地址0xabe45ea636df7ac90fb7d8d8c74a081b169f92ef的USDT余额,和该地址对余额对于LI.FI Protocol可以花费的额度。接着,攻击者调用了depositToGasZipERC20这个函数

1722238772_66a7473472cac201b59ae.png!small?1722238773255

我们可以看到上述函数的具体代码实现,如下图:

1722238785_66a74741863dc190ed36f.png!small?1722238786256

我们可以看到,在函数depositToGasZipERC20中调用了LibSwap.swap函数,具体代码如下:

1722238808_66a74758b64d65605876c.png!small?1722238809165

其中SwapData的结构如下

1722238825_66a747693ea6ab09f7c6a.png!small?1722238825771

我们可以看到,只要控制了swap函数的参数_swap,既可以利用LI.FI Protocol合约调用任意合约,传入任意参数。我们可以看到,攻击者传入的参数为:

1722238835_66a747736614756d9b04a.png!small?1722238836151

根据SwapData的数据结构,我们可以看到,攻击者利用传入的参数调用了合约0xdac17f958d2ee523a2206206994597c13d831ec7: callTo(USDT),传入的inputData为:

1722238848_66a74780ea2c5f18f50dd.png!small?1722238850773

由于0x23b872dd为transferFrom的signature,根据该函数的参数解析的数据为:

1722238861_66a7478d9ad6e0fff1fb8.png!small?1722238863516

相当于利用LI.FI Protocol,从0xabe45ea636df7ac90fb7d8d8c74a081b169f92ef将2276295880553 USDT转给了0x8b3cb6bf982798fba233bca56749e22eec42dcf3,至此,攻击者完成了攻击。

总结

本次漏洞的成因是被攻击合约对攻击者传入参数校验不严格,导致攻击者可以通过构造特殊inputData来使受害者合约调用任意合约并传入任意参数。最终,攻击者利用特殊的参数,使得受害者合约通过transferFrom将授权给其合约的代币转入到攻击者控制的地址。建议项目方在设计代码运行逻辑时要多方验证,合约上线前审计时尽量选择多个审计公司交叉审计。

# 黑客攻击 # 安全事件
本文为 零时科技 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
零时科技 LV.7
这家伙太懒了,还未填写个人描述!
  • 119 文章数
  • 16 关注者
【安全月报】| 3月因加密货币漏洞和诈骗造成损失达3,871万美元
2025-04-01
零时科技 || Four.meme 攻击事件分析2
2025-03-19
零时科技 || H2O 攻击事件分析
2025-03-18
文章目录