区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > Filecoin > 正文

TOKEN:Uniswap和Lendf.Me遭攻击始末:DeFi乐高组合下的“多米诺”式崩塌_IMBTC

作者:

时间:

04月18日上午08:58开始,?一DeFi平台?被黑客利用重入漏洞实施了攻击。PeckShield安全团队迅速定位到问题,发现黑客利用了Uniswap和ERC777标准的兼容性问题缺陷实施了重入攻击。

糟糕的是,仅仅在24小时后,于04月19日上午08:45,又一知名DeFi平台?Lendf.Me也被黑客以类似的手段实施了攻击。

黑客攻击的原理是:攻击者利用以太坊ERC777标准的transferFrom()回调机制,在内部调用?_callTokensToSend()?回调函数时劫持交易,并在真正更新余额的_move()函数之前进行恶意攻击。

在Uniswap的攻击案例中,攻击者利用此漏洞消耗尽UniswapETH-imBTC池约1,278个ETH。而在Lendf.Me中,攻击者则利用它来任意增加内部imBTC抵押金额,并通过从其他可用的Lendf.Me交易中借入10多种资产。

CMC数据:2022年初以来加密市场蒸发4700亿美元:2月20日消息,CoinMarketCap提供的数据显示,今年以来,加密货币市值从2022年1月1日的2.21万亿美元降至2022年2月20日的1.74万亿美元,下滑了21.25%,市场损失了4700亿美元。(Finbold)[2022/2/21 10:04:30]

PeckShield安全团队认为这是自年初bZx遭攻击之后,又两起黑客利用DeFi系统性风控漏洞实施的攻击。一个不容忽视的问题是,DeFi?市场的风险可能不仅仅局限于平台本身,单个平台的模式创新很可能在与其他平台业务接轨时产生漏洞风险。

详细漏洞攻击细节,我们将在文章后面做详细介绍。

Figure1:ERC777transferFrom()

ERC777标准的业务组合兼容性问题

我们首先介绍下ERC777标准,ERC777出现的目的是对ERC20标准进行改进。其不但实现了功能扩展,还有ERC20标准一样良好的兼容性,愿景是成为ERC20?标准的有效继承者。

动态 | 报告:CMC基于市值的加密货币排名或具有误导性:通过节点数量对加密货币进行排序可以更深入地了解其价值和潜力。CoinMonks认为,目前基于市值的排名可能具有误导性。CoinMonks的博客文章探讨了各种网络背后的消息及其节点数量。网络参与者数量排名领先的加密货币确实是BTC和ETH。按节点数量排名的榜单与按CMC市值排名的榜单情况很不一样。除了顶级加密货币之外,还有多个节点数量巨大的可开采项目。这些相对较小的资产仍然有支持社区,并且可能依赖于更分布式的网络。而市值排名靠前的加密货币甚至没有明确的节点信息,例如Cardano(ADA)、Monero(XMR)、Ethereum Classic(ETC)等。(Bitcoinist)[2019/11/26]

该标准扩展的功能之一是提供了“hook”机制,可以使普通地址或合约通过注册一个tokensToSend()hook函数来控制或拒绝发送Token。这原本是在ERC20?基础上加强了对Token的风险控制接口,是一次有益的改进。不过由于DeFi项目的可组合特性,一个合约在不同产品之间相互调用时,其业务逻辑复杂度也会大大增加,这就给注入代码攻击提供了可能性。

声音 | 美国CMCP创始人:加密货币是否会成为长期货币目前不好判断:7月9日消息,近日,在由全国港澳研究会、前海管理局联合主办的2018前海合作论坛上,美国CMCP投资公司联合创始人兼董事长凯根先生认为,从全球金融科技的投资来看,去年达到160亿美元,今年第一季度则达到了54亿美元,整个交易量也在不断增加。不同于传统投资方式,首次代币发行(ICO)最早产生于数字货币和区块链投资。而业内人士认为,证券代币发行(STO)的方式既可以满足监管,又可以满足发币,是ICO的一个进步。

他说:“我们很多时候会需要一个新的货币,但是实际上很多地方货币是没有这么强的,对于在这些国家营商的公司来说,它们需要有一个稳定的货币,区块链就是这样一个技术。”他表示,加密货币是否会成为长期货币目前不好判断,但区块链技术发展会越来越重要。[2018/7/9]

其中最关键的部分是,攻击者可以通过注册from的tokensToSend()?来实行回调。我们从下面的代码片段可以看到,ERC777标准中可以通过getInterfaceImplementer()获得攻击者的tokensToSend()接口,并在第1,056行调用此函数。而此处正是黑客劫持交易实施攻击的入口。

Uniswap在以太坊上支付Gas费用最多:来自EthGasStation的数据显示,过去30天在以太坊上支付Gas费用最多的是去中心化交易所Uniswap,Uniswap参与者花了总计17700 ETH gas费用来推动交易执行,相当于699万美元。Tether(USDT)位居第二,人们总共花费了639万美元ETH来交易这个稳定币,SmartWay Forsage排名第三,交易费支出达219万美元,Nest Protocol和1inch Exchange位列第四和第五,而Chainlink(LINK)排名第八。(ethgasstation)[2020/8/22]

Figure2:ERC777-CompatibletokensToSend()Hijacking

如2019年4月OpenZeppelin发布的帖子以及2019年7月发布的漏洞利用演示中所述,攻击者可以自己定义函数tokensToSend(),并通过setInterfaceImplementer()来设置合约中的hook函数。

Balancer Labs:警惕Uniswap上以0x6cb8开头的BAL代币局:非托管投资组合管理服务商Balancer Labs发推称,Uniswap上以0x6cb8开头的Balancer(BAL)代币是局,BAL还没有被创建。当官方代币被部署时,我们将通过此推特账号宣布。[2020/6/14]

Figure3:OpenZeppelin'sExploitDemo(HookSetup)

之后攻击者就可以像传统PC上的hook函数一样,在tokensToSend()?做任何事情。如下图所示,攻击者可以对同一笔交易进行多次交易。

Figure4:OpenZeppelin'sExploitDemo(HookFunction)

Uniswap?攻击分析

Uniswap被率先发现利用ERC777的兼容性问题实施了攻击。就如此恶意交易在Bloxy中的截图所示(hash:0x9cb1d93d6859883361e8c2f9941f13d6156a1e8daa0ebe801b5d0b5a612723c1),函数内部进行了一次tokenToEthSwapInput()?调用。

这意味着攻击者可以先通过操纵交易汇率,然后再用另一笔imBTC以较低价格兑换更多的ETH。

Figure5:UniswapHack

Lendf.Me?攻击分析

在Uniswap遭攻击约24小时后,又一DeFi平台Lendf.Me也遭到了黑客攻击。下面是其中一个攻击交易的截图。如图所示,

supply()函数中调用真实转账函数transferFrom()?时,被hook的攻击者合约里嵌入了盗用Lendf.Me的withdraw()的提币操作。

Figure6:Lendf.MeHack

在这个交易例子中,攻击者第一次supply()时确实向Lendf.Me存放了289.99999999个imBTC,而在第二个supply()中,攻击者只存放0.00000001个imBTC,但由于攻击者注册了tokensToSend(),所以在执行doTransferIn()->IMBTC::transferFrom()时,调用了攻击者函数tokensToSend(),攻击者函数通过调用Lendf.Me的withdraw()函数把290个imBTC直接全部提走。

需要注意的是,正常的业务逻辑应该是项目合约中的Balance会减去被攻击者提走的290个imBTC,然而当supply()?执行返回时,余额并未被重置,仍然为290imBTC。攻击者就是通过控制修改Lendf.Me中攻击者的imBTC抵押金额,有了足够大的imBTC抵押,攻击就可以从各种流动交易对中借出所有可用的10多种资产。

Figure7:Lendf.MeHackDetails

资产流向

攻击者0x538359共计从Lendf.Me获利25,236,849.44美元,其中各个Token分布如下:?

如上图,攻击者在获利之后,马上将各个Token转移至其关联账号0xa9bf70之中,之后攻击者数十次通过1inch.exchange,ParaSwap等平台将其中比较抢手的WETH,PAX,BUSD等Token换成ETH,DAI,BAT代币,另外将其中的TUSD,USDT代币存入Aave借贷平台。至此为止,攻击者及其关联账号的余额如上所示。

修复建议

PeckShield安全团队在此建议开发者,可以采用“Checks-Effects-Interactions”方法来防止这类重入攻击。举个例子,Lendf.Me的supply()里如果是先更新token余额,再调用?doTransferIn()。这将会让攻击在withdraw()?之后没有重置余额的可能性。

另一方面,ERC777标准特性会不可避免地启用hook机制,因此我们需要检测并防止所有交易功能产生可以重入的风险。例如,如果supply()?和withdraw()?同时运行时加个互斥锁,那么攻击者就无法在supply()??函数内部执行withdraw()?操作。

最后并不能被忽视的一点是,我们需要认真思考下DeFi业务组合可能存在的系统性风险问题,平台方不仅要确保在产品上线前有过硬的代码审计和漏洞排查,还要在不同产品做业务组合时考虑因各自不同业务逻辑而潜在的系统性风控问题。

可能一个新创新,在原平台一点问题都没有,但组合接入另一个产品后就可能存在业务逻辑缺陷,进而成为黑客攻击整个DeFi市场的入口。

标签:ENDTOKENKENIMBTCAave LENDOBRok Token3X Short Stellar Toke

Filecoin热门资讯
PegNet:稳定币网络PegNet遭51%攻击,攻击者称只为“识别网络漏洞”_稳定币

作者:LiangChe 来源:比推bitpush.news稳定币网络PegNet本周遭到了51%攻击,攻击者在提交了虚假的价格数据后将自己钱包中的余额由11美元变更为670万美元.

NET:巴比特专栏 | 区块链的计算过程可验证性甚于不可删除性_PegNet

区块链的本质不是历史记录不可删除的。估计很多人会反对这句话,但我们先看一下案例。比特币并不是不可删除的,白皮书“第7章:回收磁盘空间”明确写了,比特币的历史交易是可以丢弃的.

加密货币:CMC全球币圈Q1报告:BSV/BCH领跑,女性/年轻用户大幅增长_Allcoin

刚刚被币安收购的全球第一大加密货币流量/行情网站CoinMarketCap公布了一季度数据报告。CMC是全球加密行业第一大流量网站,因此从它的数据报告可以窥见行业的动向.

比特币:QKL123行情分析 | “国家队”来了,BSN正式启动商用,公链何去何从?(0426)_defi币有哪些

摘要:区块链服务网络BSN正式开启商用,“国家队”主要服务于联盟链,也支持海外公有链节点。对于公有链来说,只有随着落地项目或应用的逐渐增多,才能脱颖而出.

UND:DeFi协议的护城河:它们在多大程度上是可以被分叉的?_COM

前言:在公链的生态系统中,目前最引人注目的还是DeFi的发展。那么,DeFi协议本身有多强的可防御性?它们能够被分叉吗?DeFi协议的可组合性和互操作性对于以太坊自身的可防御性又有什么影响?本文.

ELE:TelegramDAO——社会性自治组织的思考_SHIBARAMEN

作者:LuisCuende 译者:TurboGGS 翻译机构:DAOSquare编者注:本文作了不改变作者的删减。 虽然DAO对于大多数人来说是舶来品,但一个个的DAO本质上就是一个个社区.