编者按:本文来自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多种资产。
Compound将提高cCOMP借款上限,并更换cCOMP和cUNI利率模型:10月23日,据官方消息,Compound提案130已投票通过,将在两天后实施。该提案旨在提高cCOMP借款上限(从90,750 COMP增加到150,000 COMP),并改变cCOMP和cUNI的利率模型。[2022/10/23 16:36:04]
PeckShield安全团队认为这是自年初bZx遭攻击之后,又两起黑客利用DeFi系统性风控漏洞实施的攻击。一个不容忽视的问题是,DeFi市场的风险可能不仅仅局限于平台本身,单个平台的模式创新很可能在与其他平台业务接轨时产生漏洞风险。详细漏洞攻击细节,我们将在文章后面做详细介绍。
Figure1:ERC777transferFrom()ERC777标准的业务组合兼容性问题
我们首先介绍下ERC777标准,ERC777出现的目的是对ERC20标准进行改进。其不但实现了功能扩展,还有ERC20标准一样良好的兼容性,愿景是成为ERC20标准的有效继承者。该标准扩展的功能之一是提供了“hook”机制,可以使普通地址或合约通过注册一个tokensToSend()hook函数来控制或拒绝发送Token。这原本是在ERC20基础上加强了对Token的风险控制接口,是一次有益的改进。不过由于DeFi项目的可组合特性,一个合约在不同产品之间相互调用时,其业务逻辑复杂度也会大大增加,这就给注入代码攻击提供了可能性。其中最关键的部分是,攻击者可以通过注册from的tokensToSend()来实行回调。我们从下面的代码片段可以看到,ERC777标准中可以通过getInterfaceImplementer()获得攻击者的tokensToSend()接口,并在第1,056行调用此函数。而此处正是黑客劫持交易实施攻击的入口。
Uniswap V3推出模拟V2的全范围流动性功能:8月4日消息,Uniswap V3推出模拟V2的全范围流动性(Full Range功能,用户可一键提供从0到无穷大的全范围流动性。注,V3版本较V2推出集中流动性设计,流动性提供者仅在自定义的价格区间内参与做市。[2021/8/4 1:33:11]
Figure2:ERC777-CompatibletokensToSend()Hijacking如2019年4月OpenZeppelin发布的帖子以及2019年7月发布的漏洞利用演示中所述,攻击者可以自己定义函数tokensToSend(),并通过setInterfaceImplementer()来设置合约中的hook函数。
Figure3:OpenZeppelin'sExploitDemo(HookSetup)之后攻击者就可以像传统PC上的hook函数一样,在tokensToSend()做任何事情。如下图所示,攻击者可以对同一笔交易进行多次交易。
FORTH运营官RICHY:FORTH链上投票机制和Uniswap和Compound类似:FORTH运营官RICHY谈及FORTH链上投票机制以及无人认领的FORTH如何处理的问题时表示:FORTH团队目前最重要的问题就是尽快上线投票机制,链上投票机制和Uniswap和Compound类似。到时候一些无人认领的FORTH会放在DAO里,代币持有者可对这个DAO进行投票。[2021/6/26 0:08:29]
Figure4:OpenZeppelin'sExploitDemo(HookFunction)Uniswap攻击分析
Uniswap被率先发现利用ERC777的兼容性问题实施了攻击。就如此恶意交易在Bloxy中的截图所示(hash:0x9cb1d93d6859883361e8c2f9941f13d6156a1e8daa0ebe801b5d0b5a612723c1),函数内部进行了一次tokenToEthSwapInput()调用。这意味着攻击者可以先通过操纵交易汇率,然后再用另一笔imBTC以较低价格兑换更多的ETH。
Uniswap暂停流动性挖矿奖励前两笔转入近8699万USDT:北京时间11月17日上午9点28分左右,63,443,650枚USDT转入Uniswap,交易哈希0x6cbf125d493ca9d58b93e743bc1e84afcf3d1c20d3fc2ff37d2b6b56a9f7bec1,转出地址:0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852,转入地址:(Uniswap) 0x7a250d5630b4cf539739df2c5dacb4c659f2488d。
北京时间11月17日09:50:45, 23,558,229枚USDT再从0x0d4a开头的未知钱包地址转入Uniswap,按当前价格计算,价值约2369万美元,交易哈希为:0x989f565f34530f5aff1d84933b6fa682dacfb541ba1084c6badfe8c6a7b45dc1。
按照Uniswap此前计划,其流动性挖矿奖励计划将于11月17日20:00正式结束。[2020/11/17 21:01:37]
DeFi项目Y3D上线Uniswap代币UNI相关理财产品:DeFi项目Y3D上线理财产品yUniswap-ETH/USDT-LP,可将用户挖矿产出的UNI自动卖成Uniswap-ETH/USDT-LP进行复利代投,据CoinMarketCap数据显示,目前,UNI代币的挖矿年化约为59%左右。[2020/9/18]
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开发者务必注意业务存在的系统性风控风险,应尽可能和第三方安全公司合作排查一切潜在的安全风险。
编者按:本文来自PolkaWorld,Odaily星球日报经授权转载。Polkadot区块链将实施提名权益证明机制,这是一种相对较新的方案,用于选择参与共识协议的验证节点.
1900/1/1 0:00:00被称为“矿霸”的吴忌寒,在21日的直播中非常谦虚。他先是反驳了主持人关于比特大陆技术一直领先的说法,然后表示:“比特大陆技术并不是一直领先的,尤其是S9大获成功后詹克团及其个人助理主管研发,以自.
1900/1/1 0:00:00编者按:本文来自Cointelegraph中文,作者:STEPHENO'NEAL,Odaily星球日报经授权转载.
1900/1/1 0:00:00公共区块链网络依赖于加密和激励结构的结合,使系统无需集中控制即可工作。密码技术实际上能使一些有害行为成为不可能,而博弈论则阻止了其他行为.
1900/1/1 0:00:00编者按:本文来自区块链大本营,作者:GarethJenkinson,译者:火火酱,Odaily星球日报经授权转载.
1900/1/1 0:00:00最近,比特币似乎正处在一种进退两难的局面中,多空博弈异常激烈。长期以来,人们一直对加密货币的基本价值表示怀疑。但是,在当今动荡的世界中,宏观经济格局正在发展,尤其是加密货币,尤其是比特币.
1900/1/1 0:00:00