月亮链 月亮链
Ctrl+D收藏月亮链
首页 > FTX > 正文

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

作者:

时间:1900/1/1 0:00:00

编者按:本文来自PeckShield,Odaily星球日报经授权转载。04月18日上午08:58开始,一DeFi平台Uniswap被黑客利用重入漏洞实施了攻击。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多种资产。

Uniswap v3 合约部署在 Polygon 上以 99.3% 的共识获得批准:金色财经报道,Uniswap 社区已经批准寻求在 Polygon PoS 链上部署 Uniswap v3 合约的治理提案。批准以链上投票的形式获得,社区中有超过 7260 万用户参与其中。

Uniswap Labs 宣布将根据反映超过 99.3% 批准共识的投票部署 Uniswap v3 合约,并将得到 2000 万美元的资金支持,1500 万美元用于长期流动性挖掘活动,500 万美元用于在 Polygon 上整体采用 Uniswap。[2021/12/19 7:49:01]

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

金融科技公司Juni完成5200万美元A+轮融资 EQT Ventures领投:10月15日消息,瑞典金融科技公司Juni完成5200万美元A+轮融资,EQT Ventures领投,FJ labs以及原有投资者DST Global、Felix Capital和Cherry Ventures跟投。3个月前,Juni刚完成2100万美元A轮融资,同样由EQT Ventures领投。新资金将用于将员工人数增至120人,并推出综合信贷产品。Juni自称全球唯一专为电子商务行业量身定制的数字银行。Juni平台集成了银行和支付服务,可现多项功能的自动化,包括管理支出和开具发票。今年3-5月期间,其交易额每月增长近500%。(pymnts)[2021/10/15 20:30:58]

Figure1:ERC777transferFrom()ERC777标准的业务组合兼容性问题

我们首先介绍下ERC777标准,ERC777出现的目的是对ERC20标准进行改进。其不但实现了功能扩展,还有ERC20标准一样良好的兼容性,愿景是成为ERC20标准的有效继承者。该标准扩展的功能之一是提供了“hook”机制,可以使普通地址或合约通过注册一个tokensToSend()hook函数来控制或拒绝发送Token。这原本是在ERC20基础上加强了对Token的风险控制接口,是一次有益的改进。不过由于DeFi项目的可组合特性,一个合约在不同产品之间相互调用时,其业务逻辑复杂度也会大大增加,这就给注入代码攻击提供了可能性。其中最关键的部分是,攻击者可以通过注册from的tokensToSend()来实行回调。我们从下面的代码片段可以看到,ERC777标准中可以通过getInterfaceImplementer()获得攻击者的tokensToSend()接口,并在第1,056行调用此函数。而此处正是黑客劫持交易实施攻击的入口。

数据:Uniswap V3的24小时交易量已超过2亿美元:据欧科云链OKLink数据显示,截至今日10时,以太坊上Dex24小时交易量约合30.7亿美元。其中交易量排名前三的Dex协议分别是Uniswap V2 10.6亿美元,SushiSwap 5.34亿美元以及Curve 3.4亿美元。

此外Uniswap V3版本在上线后锁仓量已经达到3.52亿美元,近24小时交易量为2.3亿美元。[2021/5/7 21:32:29]

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

L2Lab发布基于ZK-Rollup的Uniswap版本:金色财经报道,专注于Layer2协议的L2Lab团队发布了ZKSwap项目,该项目基于ZK-Rollup技术,在以太坊的二层网络上实现Uniswap的功能,可以实现无摩擦和实时兑换功能。

ZKSwap (ZK-Rollup based Swap)是一套全新的基于Zkrollup技术的兑换协议,通过Zk-Rollup技术把所有的ERC20 token转移到Layer2上面,基于不断生成的零知识证明来保证Layer1和Layer2状态的一致性,从而让所有的兑换在Layer2上发生,可以做到零GAS费用的实时兑换(不再要等待一个区块时间),并且具备无限的拓展性,摆脱以太坊TPS和区块确认时间的限制,并同时实时掌控自己的资金安全。[2020/9/22]

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

Dharma将提交治理提案助用户申领UNI代币空投:智能合约钱包Dharma将向Uniswap提交治理提案,帮助用户申领目前无法直接取出的UNI代币。Dharma官方推特表示,尽管UNI实现了相对公平的代币分发,为生态的参与者提供了空投奖励,但许多DEX聚合器由于使用了代理合约的缘故,用户无法正常申领到空投的UNI代币,受此影响的还包括Matcha、Paraswap等DEX聚合器,上述DEX用户是Uniswap生态的重要的支持者和参与者。Dharma已经将治理提案发布到Uniswap治理论坛,并积极寻求最佳技术方案帮助所有受此影响的相关项目的用户。[2020/9/18]

Figure4:OpenZeppelin'sExploitDemo(HookFunction)Uniswap攻击分析

Uniswap被率先发现利用ERC777的兼容性问题实施了攻击。就如此恶意交易在Bloxy中的截图所示(hash:0x9cb1d93d6859883361e8c2f9941f13d6156a1e8daa0ebe801b5d0b5a612723c1),函数内部进行了一次tokenToEthSwapInput()调用。这意味着攻击者可以先通过操纵交易汇率,然后再用另一笔imBTC以较低价格兑换更多的ETH。

Figure5:UniswapHackLendf.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市场的入口。PS:此次黑客对Lendf.Me的攻击对DeFi社区来说无疑是一场灾难,在此建议广大DeFi开发者务必注意业务存在的系统性风控风险,应尽可能和第三方安全公司合作排查一切潜在的安全风险。

标签:UNISWAPENDUniswapUNII币Weboo Swaplend币最新消息uniswap币卖出没反应

FTX热门资讯
AME:价值的民主化:可赎回代币_Shiba Ramen

编者按:本文来自Unitimes,作者:JacobHorne,编译:Unitimes_Charles,星球日报经授权发布.

1900/1/1 0:00:00
比特币:比特币临近关键阻力区间,提防多空双爆风险_区块链域名是什么意思

福布斯近日发布文章指出,鉴于多数政府推出有史以来规模最大的量化宽松计划,以及投资者试图快速应对市场变化和不确定性形势,比特币或在2020年成为最佳资产.

1900/1/1 0:00:00
比特币:比特币一天暴涨17%,如何操作?_李笑来10万比特币花了多少钱

4月29日,数字货币市场的行情开始有了一波明显的上扬,今天比特币的价格已经上涨到8700美元,以太坊的价格已经上涨到215美元。下图是比特币近期的走势图: 红框标出的是比特币最近几天的走势.

1900/1/1 0:00:00
区块链:区块客周刊:比特币减半的3种可能;区块链服务网络BSN正式商用_比特币

2020.4.27第18期本期关键字:BSN正式商用、DeFiCeFi之争、比特币减半、盗窃ETH构成犯罪、亿邦国际IPO、Libra.

1900/1/1 0:00:00
LIB:HashKey:深度解析Libra 2.0的取舍与坚持_区块链

编者按:本文来自链闻ChainNews,撰文:郑嘉梁,HashKeyCapital研究总监。HashKeyCapital是香港数字资产集团HashKeyGroup旗下的区块链投资基金,星球日报经.

1900/1/1 0:00:00
区块链:星球日报 | Libra发布新白皮书,并向瑞士金管局申请支付牌照;支付宝参与央行数字货币(DC/EP)运营_PEECOIN

头条Libra发布新白皮书,并向瑞士金融市场监管局提出支付牌照申请Libra项目已发布白皮书2.0版,其中一项重点更新为新增单货币稳定币.

1900/1/1 0:00:00