损失约820万美元 Visor Finance遭黑客攻击事件全解析_OPEN:DAO

12月21日,链必应-区块链安全态势感知平台舆情监测显示,UniswapV3流动性管理协议VisorFinance于北京时间12月21日晚上10点18分遭受攻击,总损失约为820万美元。关于本次攻击,成都链安技术团队第一时间进行了事件分析。

#1事件概览

2021年12月21日晚VisorFinance官方Twiiter发布通告称vVISR质押合约存在漏洞,发文前已有攻击交易上链。

经过成都链安技术团队分析,攻击者通过恶意合约利用VisorFinance项目的漏洞,伪造了向VisorFinance的抵押挖矿合约(0xc9f27a50f82571c1c8423a42970613b8dbda14ef)存入2亿代币的交易,从而获取了195,249,950vVISR抵押凭证代币。然后再利用抵押凭证,从抵押挖矿合约中取出了8,812,958VISR。

Andrew Kang在GMX上的BTC/ETH多头头寸昨日被清算,损失约56.7万美元:金色财经报道,据Lookonchain监测显示,加密货币风险投资公司Mechanism Capital联合创始人兼合伙人Andrew Kang在GMX上的BTC/ETH多头头寸昨日被清算,损失约56.7万美元,其杠杆倍数高达41倍。[2023/4/28 14:33:23]

#2事件具体分析

攻击交易为:

https://etherscan.io/tx/0x69272d8c84d67d1da2f6425b339192fa472898dce936f24818fda415c1c1ff3f

安全机构:初步分析显示Beanstalk Farms损失约为1.82亿美元:金色财经消息,安全机构派盾在推特上表示,其初步分析显示,Beanstalk Farms的损失约为1.82亿美元,包括79,238,241 BEAN3CRV-f、1,637,956 BEANLUSD-f、36,084,584 BEAN和0.54 UNI-V2_WETH_BEAN。

此前消息,算法稳定币项目Beanstalk Farms遭黑客攻击,黑客获利超过8000万美元(协议损失可能更多),包括24830枚ETH和3600万枚BEAN。[2022/4/18 14:30:00]

派盾:Meter.io跨链桥遭遇黑客攻击,损失约430万美元:2 月 6 日消息,安全机构PeckShield派盾发推文称,Meter.io 跨链桥遭遇黑客攻击,损失约 430 万美元(包括 1391.24945169 ETH 和 2.74068396 BTC)。黑客对原始(未受影响)跨链桥的扩展引入了虚假存款。

Meter.io 官方表示,Meter Passport 具有自动打包和解包 Gas Token(如 ETH 和 BNB)的功能,以方便用户使用。然而,合约并没有阻止封装的 ERC20 Token 与原生 Gas Token 的直接交互,也没有正确转移和验证从调用者地址转移的 WETH 的正确数量。[2022/2/6 9:33:47]

攻击手法大致如下:

稳定币项目USDM “Rug Pull”事件损失约合4600万美元:据欧科云链链上天眼团队分析,操作地址在Curve的Usdm池抛售Usdm,换成该池其他用稳定币添加流动性用户的稳定币,共计46,004,689 Dai,随后将全部Dai兑换为9875ETH,其中1720ETH配对该项目方发行的Mochi,并添加Uniswap流动性,LP凭证则转给该项目方持有的多签地址1 (0x6DDB204dF5980b122fa89f928fd741F35584AC0B)。其余8155ETH全部换成1,050,285 个CVX代币并转账给该项目方控制的另一个多签地址2 (0xdc71417E173955d100aF4fc9673493Fff244514C),且该地址为USDM协议手续费收款地址。初步分析此次事件为项目方合约Owner内部操作。

本次用户资金损失约合4600万美元,只影响Curve Usdm池添加流动性用户,其他Curve池不受影响,目前尚无资金出逃。链上天眼团队将密切监控上述多签地址以及持有多签地址的多个私人地址资金动向,并第一时间向社区披露。请关注链上天眼团队最新动态。[2021/11/12 21:46:15]

1.部署攻击合约

0x10c509aa9ab291c76c45414e7cdbd375e1d5ace8;

2.通过攻击合约调用VisorFinance项目的抵押挖矿合约deposit函数,并指定存入代币数量visrDeposit为1亿枚,from为攻击合约,to为攻击者地址

0x8efab89b497b887cdaa2fb08ff71e4b3827774b2;

3.在第53行,计算出抵押凭证shares的数量为97,624,975vVISR.

4.由于from是攻击合约,deposit函数执行第56-59行的if分支,并调用攻击合约的指定函数;

第57行,调用攻击合约的owner函数,攻击合约只要设置返回值为攻击合约地址,就能够通过第57行的检查;

第58行,调用攻击合约的delegatedTransferERC20函数,这里攻击合约进行了重入,再次调用抵押挖矿合约的deposit函数,参数不变,因此抵押挖矿合约再次执行第3步的过程;

第二次执行到第58行时,攻击合约直接不做任何操作;

5.由于重入,抵押挖矿合约向攻击者发放了两次数量为97,624,975vVISR的抵押凭证,总共的抵押凭据数量为195,249,950vVISR。

6.提现

攻击者通过一笔withdraw交易

,将195,249,950vVISR兑换为8,812,958VISR,当时抵押挖矿合约中共有9,219,200VISR。

7.通过UniswapV2,攻击者将5,200,000VISR兑换为了WETH,兑换操作将UniswapV2中ETH/VISR交易对的ETH流动性几乎全部兑空,随后攻击者将获得的133ETH发送到Tornado。

#3事件复盘

本次攻击利用了VisorFinance项目抵押挖矿合约RewardsHypervisor的两个漏洞:

1.call调用未对目标合约进行限制,攻击者可以调用任意合约,并接管了抵押挖矿合约的执行流程;<-主要漏洞,造成本次攻击的根本原因。

2.函数未做防重入攻击;<-次要漏洞,导致了抵押凭证数量计算错误,不是本次攻击的主要利用点,不过也可凭此漏洞单独发起攻击。

针对这两个问题,成都链安在此建议开发者应做好下面两方面防护措施:

1.进行外部合约调用时,建议增加白名单,禁止任意的合约调用,特别是能够控制合约执行流程的关键合约调用;

2.函数做好防重入,推荐使用openzeppelin的ReentrancyGuard合约。

来源:金色财经

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

金宝趣谈

[0:15ms0-3:448ms