12月21日,链必应-区块链安全态势感知平台舆情监测显示,UniswapV3流动性管理协议VisorFinance于北京时间12月21日晚上10点18分遭受攻击,总损失约为820万美元。关于本次攻击,成都链安技术团队第一时间进行了事件分析。
#1事件概览
2021年12月21日晚VisorFinance官方Twiiter发布通告称vVISR质押合约存在漏洞,发文前已有攻击交易上链。
BlockSec:Quaternion因QTN代币开发者使用错误条件而被黑客攻击,损失约2.546枚WETH:1月18日消息,BlockSec监测显示,NFT全栈B2B B2C服务供应商Quaternion因QTN代币开发者使用错误条件而被黑客攻击,损失约2.546枚WETH。QTN代币具有通货膨胀机制,随着QTN在Uniswap中的交易增多,QTN的总量也会随之增加。但是,QTN的开发者使用from == UniswapPair来判断是否有QTN出售,这一错误条件是导致此攻击的根本原因。BlockSec提醒注意,黑客的资金来源似乎来自BSC上的Ankr Exploiter。[2023/1/18 11:19:14]
经过成都链安技术团队分析,攻击者通过恶意合约利用VisorFinance项目的漏洞,伪造了向VisorFinance的抵押挖矿合约(0xc9f27a50f82571c1c8423a42970613b8dbda14ef)存入2亿代币的交易,从而获取了195,249,950vVISR抵押凭证代币。然后再利用抵押凭证,从抵押挖矿合约中取出了8,812,958VISR。
安全团队:Polygon上的Midas Capital项目被攻击,损失约66万美元:1月16日消息,据Beosin-Eagle Eye态势感知平台消息,Polygon上jarvis项目中的Midas Capital矿池项目被黑客使用的view重入和价格操控组合漏洞攻击,黑客获利663101 MATIC(约66万美元)。攻击之后,Beosin Trace追踪发现黑客将663101MATIC发送给地址0xe53......59be,然后分散至其他10个其他的地址,这些地址总共又将15935的MATIC发送至0x04Ec......46F2地址中,目前14581枚MATIC转入Kucoin交易所,1671MATIC枚转入币安交易所。
其他代币仍然留在上述地址上。[2023/1/16 11:14:35]
#2事件具体分析
Monkey Kingdom遭攻击损失约130万美元SOL:12月23日消息,NFT项目Monkey Kingdom表示,黑客通过Discord的安全漏洞窃取了社区的130万美元的SOL。开发人员表示,黑客首先攻击Solana上验证用户的解决方案Grape,利用该漏洞接管了一个管理帐户,该帐户在Monkey Kingdom Discord的公告频道中发布了网络钓鱼链接。 (Cointelegraph)[2021/12/23 7:57:52]
攻击交易为:
https://etherscan.io/tx/0x69272d8c84d67d1da2f6425b339192fa472898dce936f24818fda415c1c1ff3f
SafeDollar官方:共损失约20.2万枚USDC和4.6万枚USDT,将发布补偿计划:官方消息,算法稳定币项目SafeDollar官方发布博客表示,因黑客攻击共损失202,230枚USDC和4.6万枚USDT。SafeDollar表示,协议本身运行良好,只有PLX版本1池存在问题并导致漏洞利用。此外,SafeDollar称将发布补偿和推进计划。此前消息,算法稳定币项目SafeDollar疑似遭到黑客攻击,损失达25万美元。[2021/6/29 0:13:24]
攻击手法大致如下:
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合约。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。