【漏洞分析】Li.Fi攻击事件分析:缺乏关键参数检查的钻石协议
背景信息
2024 年 7 月 16日,Li.Fi 协议遭受黑客攻击,漏洞成因是钻石协议中 diamond 合约新添加的 facet 合约没有对参数进行检查,导致 call 函数任意执行。且 diamond 合约拥有用户的 approve,所以攻击者可以构造恶意参数对用户资金进行转移。
相关合约
- 钻石协议 LiFiDiamond:https://etherscan.io/address/0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae#code
- 逻辑合约 GasZipFacet:https://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 合约进行代币授权。这是攻击发生的第二个条件。

【漏洞分析】Li.Fi攻击事件分析:缺乏关键参数检查的钻石协议的更多相关文章
- ProFTPd Local pr_ctrls_connect Vulnerability - ftpdctl 漏洞及攻击代码分析
攻击代码网址:http://www.exploit-db.com/exploits/394/ 1.执行环境: 1.ProFTPD 1.3.0/1.3.0a 2.编译ProFTPD时.--enable- ...
- 孟加拉央行SWIFT攻击事件恶意木马分析(转)
第一章 分析概述 该恶意木马样本为运行于winodws平台上的PE文件(名称:evtdiag.exe).文件大小为64KB,编译时间是2016年2月5日. 经分析,该样本为定制的攻击SWIFT客户端程 ...
- vmware漏洞之三——Vmware虚拟机逃逸漏洞(CVE-2017-4901)Exploit代码分析与利用
本文简单分析了代码的结构.有助于理解. 转:http://www.freebuf.com/news/141442.html 0×01 事件分析 2017年7月19 unamer在其github上发布了 ...
- 007_ip统计及攻击ip分析
线上经常有被扫描的DDoS攻击事件,需要集合日志进行分析,这里有两种方法,分别是通过shell和python的方式. 一.shell '''<1>shell一句命令分析 http://bl ...
- 【APT】Hades APT组织针对乌克兰发起网络攻击事件分析
背景 Hades一个充满神秘色彩的APT组织,该组织因为2017年12月22日针对韩国平昌冬奥会的攻击活动被首次发现,后来卡巴斯基将该次事件的攻击组织命名为Hades.但是该攻击组织的归属问题却一直未 ...
- DuiLib事件分析(一)——鼠标事件响应
最近在处理DuiLib中自定义列表行元素事件,因为处理方案得不到较好的效果,于是只好一层一层的去剥离DuiLib事件是怎么来的,看能否在某一层截取消息,自己重写. 我这里使用CListContaine ...
- OneAlert 入门(三)——事件分析
OneAlert 是国内首个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有 IT 事件,提升 IT 可靠性.有了 OneAlert,你可以更快更合理地为事件划分 ...
- OneAlert 入门(二)——事件分析
OneAlert 是国内首个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有 IT 事件,提升 IT 可靠性.有了 OneAlert,你可以更快更合理地为事件划分 ...
- 跨浏览器resize事件分析
resize事件 原生事件分析 window一次resize事件: IE7 触发3次, IE8 触发2次, IE9 触发1次, IE10 触发1次 Chrome 触发1次 FF 触发2次 Opera ...
- GridView事件分析
GridView事件分析 (转) P1默认数据绑定过程 编号 事件名称 作用 E1 DataBinding 数据绑定之前触发,在这个事件之前(第一次生成GridView),GridView不存在行数据 ...
随机推荐
- Ceph 架构以及部署
目录 Ceph架构 存储类型 为什么用到Ceph? 1. NFS 2. MooseFS MooseFS瓶颈 3. GlusterFS 4. Ceph Ceph的组件 Ceph部署 前期准备 1.1 修 ...
- .Net Core 静态类获取注入服务
由于静态类中无法使用有参构造函数,从而不能使用常规的方式(构造函数获取) 获取服务,我们可以采取通过IApplicationBuilder 获取 1.首先创建一个静态类 using Microsoft ...
- Fluter 编译第一个iOS应用
一.流程说明 1)fluter是一个跨平台UI库,可以一份界面代码在iOS和Android上面运行 2)在Mac上面安装Fluter的环境,相对比较简单,通过简单的命令行可以设置环境 3)可以使用特定 ...
- 获得centos7网络yum源
获得centos73网络yum源 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo 网易 wget -O /etc/yum.repos.d ...
- item2 报错 a session ended very soon after starting. check that the command in profile default
周末修改了阿里云 ecs 实例密码,再次用item2 远程连接服务器时,报一下的错误: 原因 每次使用ssh 远程新的连接,都会在 ~/.ssh/known_hosts 文件上生成 ssh 秘钥对,更 ...
- HiveSQL 工作实战总结
记录一些工作中有意思的统计指标,做过一些简化方便大家阅读,记录如有错误,欢迎在评论区提问讨论~ 问题类型 连续问题 两种思路 第一种:日期减去一列数字得出日期相同,主要是通过row_number窗口函 ...
- idea中vue的启动方式
1.选取 2.添加 3.配置 4.启动 启动前先 在终端 执行 npm install 命令 再启动
- Spring源码——详细流程图(超详细)
Spring源码流程图
- springboot项目编译时,使用自定义注解类找不到符号
springboot项目编译时,使用自定义注解类找不到符号 Java项目编译时,使用自定义注解类找不到符号Spring-boot项目编辑器:idea问题:编译时找不到符号.项目中用到了自定义注解类.编 ...
- 微信小程序自动化分析_包含执行设备及对应的微信版本
背景介绍: 微信小程序是基于腾讯自研 X5 内核,不是谷歌原生 webview. 实现方式: 1.小程序自动化sdk,使用自动化sdk,需要有小程序的开发者权限,以及参考的资料较少,2.选择采用app ...