此篇文章由Cobo区块链安全研究团队供稿,是?Cobo?Labs?的第??4??篇文章。
跨链桥Multichain漏洞
1月18日知名跨链桥Multichain发现并修复了一个针对WETH,PERI,OMT,WBNB,MATIC,AVAX共6种代币有重要影响的漏洞。凡对MultichainRouter授权过上述代币的用户均受影响,攻击者可直接利用漏洞转走用户授权的代币。根据19日的官方公告,由于部分用户未及时取消授权,有约445WETH被攻击者盗走。
漏洞发生在AnyswapV4Router合约上的anySwapOutUnderlyingWithPermit函数中,由于函数对Token参数的合法性没有校验,攻击者可传入伪造的Token合约来代替原本官方的AnyswapV1ERC20?Token。另一方面WETH等代币合约没有实现permit方法但是实现了fallback函数,因此在后续调用permit时不会发生revert,可以继续成功执行下去。最终导致攻击者可以将受害者approve给AnyswapV4Router合约的Token盗走。
关键代码如下:
CoboComment
对于普通用户来说,需要特别留意Token无限授权所带来的风险。授权尽可能保证只授权用到的Token数量,而不要使用默认的无限授权,避免节约了gas却丢失了本金。对已有的无限授权要及时撤销,查询账户的授权情况可以使用Etherscan的工具https://etherscan.io/tokenapprovalchecker。
Reference
https://github.com/W2Ning/Anyswap_Vul_Poc
https://theblockbeats.info/news/28774
https://hackernoon.com/erc20-infinite-approval-a-battle-between-convenience-and-security-lk60350r
BSC上的DEXCrosswise遭攻击
1月18日BSC上的DEX项目Crosswise遭受攻击,损失约30万美金,并造成CRSSToken币价闪崩。
问题是因MasterChef合约的setTrustedForwarder函数没有正确进行权限校验。当攻击者修改了TrustedForwarder后,可以实现伪造msg.sender的效果,从而直接获取到MasterChef的owner权限。然后再利用owner权限调用set函数设置?strategy为攻击者的恶意参数0xccddce9f0e241a5ea0e76465c59e9f0c41727003。修改strategy后通过少量deposit即可withdraw大量的CRSSToken获利。
官方公告也承认这个漏洞过于明显,似乎是开发者有意为之,其内部调查后开除了4个开发者。目前已经对链上数据进行了快照,后续将进行重新部署。官方git上已经开始进行整体的代码审计,据称后续会再联合Certik进行审计。
相关代码如下:
官方公告也承认这个漏洞过于明显,似乎是开发者有意为之,其内部调查后开除了4个开发者。目前已经对链上数据进行了快照,后续将进行重新部署。官方git上已经开始进行整体的代码审计,据称后续会再联合Certik进行审计。
CoboComment
此次攻击针对的是MasterChef合约,其实不会直接盗取用户的LP或者CRSStoken,但币价大跌还是会让持有CRSS的用户造成实际的损失。查看官方doc上无法找到项目审计报告,此漏洞比较明显,如果经过安全公司审计的话,很大概率可以暴露出来。对于个人投资者来说,未经过审计的项目还需谨慎。
Reference
https://twitter.com/peckshield/status/1483340900398895105
https://crosswise.medium.com/post-exploit-update-2a24c3370466
https://bscscan.com/address/0x70873211cb64c1d4ec027ea63a399a7d07c4085b#code
https://github.com/crosswise-finance/crosswise-code-review-1.1
Rari#90即FloatProtocolPool遭受预言机操纵攻击
1月15日,RariCapital上的90号池即FloatProtocol池遭受预言机操纵攻击。
该池使用UniswapV3FLOAT/USDC交易对报价,而在攻击发生之前几天,FLOAT/USDC池中流动性下降,低流动性给了攻击者进行进行预言机操纵攻击的机会。攻击者使用47ETH在池中使用USDC兑换FLOAT,导致FLOAT报价升高。之后再使用FLOAT抵押到Rari#90池中借出其他资产实现获利。攻击手法与2021年11月发生的Rari#23池VesperLendBeta攻击一致。
CoboComment
对于一些无法使用ChainLink预言机报价的小币种,DeFi合约中通常会使用DEX作报价。目前UniswapV2/V3延时报价虽然可以抵抗闪电贷攻击,但无法抵抗真实的大资产操纵;而TWAP时间加权机制虽然可以在一定程度上提高操纵难度,但只能缓解不能根除。从开发者角度,可以考虑在合约中添加一定风控类代码针对恶意报价进行检查。对普通用户而言,则要留意相关的流动性池,提防价格操纵风险。
Reference
https://twitter.com/FloatProtocol/status/1482184042850263042
https://medium.com/vesperfinance/on-the-vesper-lend-beta-rari-fuse-pool-23-exploit-9043ccd40ac9
DefiDollar发现潜在攻击
1月8日DefiDollarFinance(
漏洞本身虽然严重但成因并不复杂,比较有意思的是官方的修复方式。由于合约本身不支持升级,因此无法直接更新合约代码;合约不支持暂停,因此也没法用快照+迁移的方式转移用户资产。最终官方的措施是自己发动了攻击交易,将所有受漏洞影响用户的资产转移到了一个多签钱包中。待后面部署新Token合约后会再行分配。
CoboComment
ERC20Token已经有比较成熟的代码模板,wxBTRFLY是在重写transferFrom时出现的问题。这个问题如果有完善的单元测试应该会很容易发现,项目方可能在开发过程中是缺少完善的测试流程。
Reference
https://discord.com/invite/rpkPDR7pVV
https://twitter.com/redactedcartel/status/1482497468713611266?s=20
https://etherscan.io/tx/0xf0e4ccb4f88716fa5182da280abdb9ea10ec1c61cfc5bbe87e10bdde07c229d6
Qubit跨链桥被攻击
1月28日,BSC上的DeFi平台QubitFinance的跨链桥QBridge遭受攻击,损失约8000万美金。
跨链桥一种常见的实现形式是在源链的合约中抵押资产,并emitevent。由监听节点捕捉event,向目标链的跨链桥合约发起调用,mint等量的资产。来源链上只要有event事件产生,跨链桥系统就会认为有跨链资产需要转移。但如果源链上跨链桥合约代码存在问题,就可能出现没有资产抵押进跨链桥合约但仍emitevent的情况,产生漏洞,造成目标链Token的错误增发。
QBridge就存在这样的问题。QBridge支持抵押ETH和ERC20Token两类资产。由于以太坊的ETH作为native代币,与ERC20Token由两套单独的代码处理。在源链抵押Token时,会调用deposit方法,在抵押时ETH应该调用depositETH方法。QBridge将零地址作为ETH的标识。但是实现时没有完善的校验,导致合约处理ETH时仍使用deposit方法,相当于将ETH当成了合约地址为零地址的Token处理。在转账时使用transferFrom则相当于是对零地址进行合约调用。而以太坊底层设计上,对EOA地址发起合约调用会默认成功,不会revert。以上条件结合起来,最终的情况就是虽然攻击者在源链没有抵押任何资产,但仍可以在目标链上mint出大量qXETH,实现获利。
CoboComment
目前区块链行业中多链并存,跨链桥已经是重要的基础设施。跨链桥本身由于要进行链上链下配合,整体复杂度要比普通dapp高上许多,因此更容易出现问题。同时跨链桥上通常会抵押大量的资产,如果可以非法转移那么获利颇丰。各个跨链桥系统似乎成为了攻击者们最近一两月中的重点目标。
Reference
https://mp.weixin.qq.com/s/PLbuI9JFxyFRlDlj9rPvmQ
https://mp.weixin.qq.com/s/-kTsAs2WH5_4N4_3-XIxag
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。