ACE:Cobo Labs:盘点加密行业 1 月典型安全事件_TRA

作者:CoboLabs

此篇文章由Cobo区块链安全研究团队供稿,团队成员来自知名安全实验室,有多年网络安全与漏洞挖掘经验,曾协助谷歌、微软处理高危漏洞,并获得谷歌、微软等厂商致谢,曾在微软MSRC最有价值安全研究员Top榜单中取得卓越的成绩。团队目前重点关注智能合约安全、DeFi安全等方面,研究并分享前沿区块链安全技术。

跨链桥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进行审计。

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(@defidollar)发推表示在DUSD合约中发现一个潜在漏洞,合约已经暂停,所有资金安全。据称该漏洞可能是使用了区块链监测系统自动发现的。其思路是监测链上Tornado.Cash转账到新地址并部署合约的行为。

进一步通过对合约和相关交易的分析来发现潜在的攻击行为,发现问题时将立刻通知相关项目方进行预防。有人已经在Forta上实现了类似的Agent.

CoboComment

项目方可以考虑类似的方式,通过监测链上的新合约和内存池中的交易,对于可疑的合约或交易可以进行静态分析或模拟执行,检查是否会对自身项目关联合约中的资产有不良影响。

随着区块链攻防的升级,可以预见类似的监测告警系统将会越发成熟,当然攻击者也会挖掘到更多bypass监测的攻击方式。在传统安全中攻防持续对抗的局面在区块链安全中也将不断重现。

Reference

https://twitter.com/AndreCronjeTech/status/1479778350084333574

https://connect.forta.network/agent/0x2fbec7dcd4eebf34c5b94d899109057eea3642a2400b7143e64873d453b7ba61

Raripool#19攻击失败

知名区块链安全白帽@samczsun发布了针对Rari#19的预警推文,但后面攻击没有实际发生。

攻击手法与前面提到的FloatProtocolRari#90预言机攻击是类似的。攻击者在UniswapV3将约300个ETH兑换成了BED,实现对币价的操纵。由于UniswapV2/V3Oracle都是在第二个区块才会更新币价,使攻击者无法在一个交易内完成对币价的操纵,从而可以对抗闪电贷攻击。

而当使用真实的大资金进行操纵时,攻击者则需要至少等待到第二个区块才能看到币价的反应。由于TWAP的存在,通常攻击者还需要多等待几分钟,以使币价变得更加明显。对于此次攻击来说,攻击者也确实是这样做的。

然而尴尬的是,在第二个区块出现了疑似套利机器人的存在,此地址在第二个区块立刻将将手中的大量BED兑换成了ETH,维持住了原本币价的稳定。使得攻击者无法继续攻击,并且还要承担swap的gas、手续费与大单交易滑点的损失。

CoboComment

UniswapV2/V3Oracle虽然可以抗闪电贷攻击,但是无法直接对抗大资金操纵。因此对于流动性较小的交易对,仍然存在预言机价格被操纵的风险。

从攻击者的角度看,要进行对UniswapV2/V3Oracle操纵攻击,需要较高的攻击成本,而且需要保证自己持有市场中大部分所操纵的池子的目标代币,否则就会出现上面的情况,被其他持有目标代币的大户套利,最终偷鸡不成蚀把米。

Reference

https://twitter.com/samczsun/status/1486243806739587076

OpenSea前端漏洞

@PeckShield发文称OpenSea可能有前端问题,有用户利用该问题获利347ETH。这个漏洞可能与@yakirrotem披露的问题有关。

OpenSea的交易架构是:

卖家发起listing,这时用户会对报价数据进行签名,表示同意以设置的价格出售其NFT。

这个签名数据会保存在OpenSea的链下数据库中,当买家在OpenSea上购买该NFT时,OpenSea会把这个签名数据上链验证,通过后即可完成NFT?transfer,OpenSea?也会收取一部分手续费。

售出前,卖家也可以取消之前的listing,被cancel的listing会在链上验签时失败,从而不会被出售。

这里存在的问题是,OpenSea允许在原有?listing?不取消的情况下,再次发起listing。这时虽然OpenSeaUI上已经看不到卖家旧的报价,但其实旧的listing依然存在并有效。

攻击者可以在https://orders.rarible.com中查询到旧的listing。由于OpenSea的listing并没有交易Nonce机制,旧的listing依然是有效的。攻击者可以通过旧的listing直接购买NFT,并以新的价格售出。由于NFT有剧烈的价格波动,通过这种方式可以实现巨额套利。

https://etherscan.io/token/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d?a=9991#inventory就是一例子:1月24日BAYC的NFT在OpenSea上先以0.77ETH买入,又以84.2ETH卖出。

CoboComment

普通用户建议登录https://orders.rarible.com查询自己是否有旧的listing,并立刻进行取消处理。更稳妥安全的方式是直接将NFT转移到新地址上。

Reference

https://twitter.com/PeckShieldAlert/status/1485547426467364864

https://twitter.com/yakirrotem/status/1485559864948629512

Metamask泄露个人IP漏洞

@alxlpsc在medium上披露称Metamask存在严重的隐私泄露问题。漏洞主要是利用了MetaMask自动加载NFT图片URL。基本的攻击思路:攻击者在可以将NFT的URI设置成自己可控的服务器网址。

并将NFTtransfer给目标账户;当用户登录Metamask时,Metamask会自动扫描账户上所拥有的NFT,并发起指向攻击者服务器的HTTP请求;攻击者则可以从访问日志中得到受害者的IP信息。

CoboComment

区块链的匿名性主要来自链上地址与链下身份的剥离。如果能够通过链上的地址确认链下身份,在区块链场景下确实是比较严重的危害。在传统安全中泄露主机IP通常不被认为是特别严重的问题,但在主张匿名性的区块链世界,隐私的重要程度会再上一个台阶。相信类似的,因安全场景不同而导致漏洞级别不同的情况,在区块链这个相对较新的领域还会不断出现。

Reference

https://medium.com/@alxlpsc/critical-privacy-vulnerability-getting-exposed-by-metamask-693c63c2ce94

wxBTRFLY漏洞披露与修复

@immunefi的白帽黑客发现了wxBTRFLYToken合约中存在严重漏洞。合约中的transferFrom函数没有正确更新recipient的授权,并且会错误更新msg.sender的授权。

漏洞本身虽然严重但成因并不复杂,比较有意思的是官方的修复方式。由于合约本身不支持升级,因此无法直接更新合约代码;合约不支持暂停,因此也没法用快照+迁移的方式转移用户资产。最终官方的措施是自己发动了攻击交易,将所有受漏洞影响用户的资产转移到了一个多签钱包中。待后面部署新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代币,与?ERC20?Token由两套单独的代码处理。在源链抵押Token时,会调用deposit方法,在抵押时ETH应该调用depositETH方法。

QBridge将零地址作为ETH的标识。但是实现时没有完善的校验,导致合约处理ETH时仍使用deposit方法,相当于将ETH当成了合约地址为零地址的Token处理。在转账时使用transferFrom则相当于是对零地址进行合约调用。

而以太坊底层设计上,对EOA地址发起合约调用会默认成功,不会revert。以上条件结合起来,最终的情况就是虽然攻击者在源链没有抵押任何资产,但仍可以在目标链上mint出大量qXETH,实现获利。

CoboComment

目前区块链行业中多链并存,跨链桥已经是重要的基础设施。跨链桥本身由于要进行链上链下配合,整体复杂度要比普通dapp高上许多,因此更容易出现问题。同时跨链桥上通常会抵押大量的资产,如果可以非法转移那么获利颇丰。各个跨链桥系统似乎成为了攻击者们最近一两月中的重点目标。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:15ms0-5:650ms