揭秘以太坊TIME合约黑客攻击事件 如何利用ERC2771协议安全问题获利?

币圈资讯 阅读:51 2024-04-22 11:51:54 评论:0
美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

来源:Beosin


source 比特币今日价格行情网_okx交易所app_永续合约_比特币怎么买卖交易_虚拟币交易所平台

当我们都以为这本是一场普通的攻击。

2023年12月07日,据Beosin旗下Eagle Eye平台消息,以太坊的TIME合约遭受黑客攻击,黑客获利约18.8万美元。

EagleEye平台截图

但我们发现,本次事情好像不止这么简单。

通过追踪溯源发现,我们发现在2023年12月4日,thirdweb就在博客和官方发布漏洞公告称“2023 年 11 月 20 日,我们意识到 web3 智能合约常用开源库特定模式的集成存在安全漏洞,该漏洞影响了 Thirdweb 的一些预构建智能合约,并联系了相关项目方进行缓解。”

相关链接:https://twitter.com/thirdweb/status/1731841493407576247

https://blog.thirdweb.com/security-vulnerability/

12月7日,以太坊的TIME合约,成为第一个因该安全问题受害的第一项目。

今天让我们还原一下本次攻击事件真相。

协议背景简介

ERC2771 原生元交易安全协议:

EIP 2771协议为接收者合约定义了合约级协议,以通过可信转发器合约接受元交易。没有进行任何协议更改。通过附加额外的 calldata 向接收者合约发送有效的 msg.sender(称为 _msgSender())和 msg.data(称为 _msgData()),该协议设计的初衷在于让以太坊接受来自没有 ETH 来支付 Gas 费用的外部账户的调用。

由于该设计的特殊性,其msg.sender正如其协议描述的那样是通过_msgSender()函数获取的,该函数会会判断发起者是否为可信转发器,如果是,则将截取传入的Calldata的最后20个字节作为交易的发起者。

参考链接:https://eips.ethereum.org/EIPS/eip-2771

https://etherscan.io/address/0x4b0e9a7da8bab813efae92a6651019b8bd6c0a29#code

Muticall批处理调用库:

Muticall是一个由openzeppelin contacts提供的单个外部调用中批量处理多个调用的功能库。

从Time事件中我们可以看见其Multicall()函数中将循环调用DelegateCall 函数处理Calldata并调用本合约的其他函数。

参考链接:https://github.com/OpenZeppelin/openzeppelin-contracts

https://etherscan.io/address/0x4b0e9a7da8bab813efae92a6651019b8bd6c0a29#code

TIME合约事件相关信息

●攻击交易

0xecdd111a60debfadc6533de30fb7f55dc5ceed01dfadd30e4a7ebdb416d2f6b6

●攻击者地址

0xfde0d1575ed8e06fbf36256bcdfa1f359281455a

●攻击合约

0x6980a47bee930a4584b09ee79ebe46484fbdbdd0

●被攻击合约

0x4b0e9a7da8bab813efae92a6651019b8bd6c0a29

TIME合约事件漏洞分析

本次攻击主要利用了转发器(Forwarder)合约调用了TIME 代币的multicall 函数,并由于TIME代币使用了ERC2771 原生元交易的安全协议,从而恶意伪造_msg.sender进而销毁了pair中的代币。最终由于token代币价格上涨兑换而获利。

TIME合约事件攻击流程

1.攻击者首先使用5个WTH兑换约34.5亿个Time代币作为准备资金。 

2.接着攻击者调用转发器的execute函数通过签名验证,并传入恶意的calldata,如下

3.此时execute函数会调用req.to地址(Time代币地址),并将req.data和req.from地址打包并调用Time代币的multicall函数。那这里黑客是如何将req.from给舍弃的呢?原因在于黑客将data[1]的长度(size)设置为了0x38,那么muticall在解析data时req.from将被截断。 

参考:https://docs.soliditylang.org/en/v0.8.12/abi-spec.html

4. muticall 函数以pair的调用者身份调用burn函数销毁piar中的Time代币。 

5. 最后攻击者调用pair中的sync函数同步pair中的储备量,使得Time代币价格上涨。

最后黑客使用准备阶段获得的TIME代币在pair中兑换ETH从而获利18.8万美元。

这次攻击事件再次提醒我们,智能合约的安全性至关重要,项目方必须加强对漏洞的识别和修复,以确保区块链生态系统的可持续发展和用户的资产安全。

文字格式和图片示例

注册有任何问题请添加 微信:MVIP619 拉你进入群

弹窗与图片大小一致 文章转载注明 网址:https://netpsp.com/?id=62512

美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址
可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
平台列表
美化布局示例

欧易(OKX)

  全球官网 大陆官网

币安(Binance)

  官网

火币(HTX)

  官网

Gate.io

  官网

Bitget

  官网

deepcoin

  官网
关注我们

若遇到问题,加微信客服---清歌

搜索
排行榜
扫一扫,加我为微信好友加我为微信好友