SWAP:慢雾:Grim Finance攻击者利用传入恶意代币地址对depositFor进行重入攻击

链捕手消息,Fantom链上GrimFinance项目遭遇闪电贷攻击,损失超3000万美元,慢雾团队对事件进行分析如下:

1.攻击者通过闪电贷借出WFTM与BTC代币,并在SpiritSwap中添加流动性获得SPIRIT-LP流动性凭证。

2.随后攻击者通过GrimFinance的GrimBoostVault合约中的depositFor函数进行流动性抵押操作,而depositFor允许用户指定转入的token并通过safeTransferFrom将用户指定的代币转入GrimBoostVault中,depositFor会根据用户转账前后本合约与策略池预期接收代币(预期接收want代币,本次攻击中应为SPIRIT-LP)的差值为用户铸造抵押凭证。

慢雾:有用户遭钓鱼攻击,在OpenSea上架的NFT以极低匹配价格售出:据慢雾消息,有用户在 OpenSea 挂单售卖的 NFT 被恶意的以远低于挂单价匹配买。经慢雾安全团队分析,此是由于该受害用户遭受钓鱼攻击,错误的对攻击者精心构造的恶意订单进行签名,恶意订单中指定了极低的出售价格、买方地址为攻击者以及出售 NFT 为受害用户在 OpenSea 上架的待出售 NFT。攻击者使用受害用户已签名的出售订单以及攻击者自己的购买订单在 OpenSea 中进行匹配,并以攻击者指定的极低价格成交,导致受害用户的 NFT 以非预期的价格售出。[2021/12/11 7:31:47]

3.但由于depositFor函数并未检查用户指定转入的token的合法性,攻击者在调用depositFor函数时传入了由攻击者恶意创建的代币合约地址。当GrimBoostVault通过safeTransferFrom函数调用恶意合约的transferFrom函数时,恶意合约再次重入调用了depositFor函数。

慢雾:警惕高危Apache Log4j2远程代码执行漏洞:据慢雾安全情报,在12月9日晚间出现了Apache Log4j2 远程代码执行漏洞攻击代码。该漏洞利用无需特殊配置,经多方验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。Apache Log4j2是一款流行的Java日志框架,建议广大交易所、钱包、DeFi项目方抓紧自查是否受漏洞影响,并尽快升级新版本。[2021/12/10 7:30:00]

攻击者进行了多次重入并在最后一次转入真正的SPIRIT-LP流动性凭证进行抵押,此操作确保了在重入前后GrimBoostVault预期接收代币的差值存在。随后depositFor函数根据此差值计算并为攻击者铸造对应的抵押凭证。

慢雾:BSC项目Value DeFi vSwap 模块被黑简析:据慢雾区情报,币安智能链项目 Value DeFi 的 vSwap 模块被黑,慢雾安全团队第一时间介入分析,并将结果以简讯的形式分享,供大家参考:

1. 攻击者首先使用 0.05 枚 WBNB 通过 vSwap 合约兑换出 vBSWAP 代币;

2. 攻击者在兑换的同时也进行闪电贷操作,因此 vSwap 合约会将兑换的 vBSWAP 代币与闪电贷借出的 WBNB 转给攻击者;

3. 而在完成整个兑换流程并更新池子中代币数量前,会根据池子的 tokenWeight0 参数是否为 50 来选择不同的算法来检查池子中的代币数量是否符合预期;

4. 由于 vSwap 合约的 tokenWeight0 参数设置为 70,因此将会采用第二种算法对池子中的代币数量进行检查;

5. 而漏洞的关键点就在于采用第二种算法进行检查时,可以通过特殊构造的数据来使检查通过;

6. 第二种算法是通过调用 formula 合约的 ensureConstantValue 函数并传入池子中缓存的代币数量与实时的代币数量进行检查的;

7. 在通过对此算法进行具体分析调试后我们可以发现,在使用 WBNB 兑换最小单位(即 0.000000000000000001) vBSWAP 时,池子中缓存的 WBNB 值与实时的值之间允许有一个巨大的波动范围,在此范围内此算法检查都将通过;

8. 因此攻击者可以转入 WBNB 进行最小单位的 vBSWAP 代币兑换的同时,将池子中的大量 WBNB 代币通过闪电贷的方式借出,由于算法问题,在不归还闪电贷的情况下仍可以通过 vSwap 的检查;

9. 攻击者只需要在所有的 vSwap 池子中,不断的重复此过程,即可将池子中的流动性盗走完成获利。详情见原文链接。[2021/5/8 21:37:37]

4.由于攻击者对GrimBoostVault合约重入了多次,因此GrimBoostVault合约为攻击者铸造了远多于预期的抵押凭证。攻击者使用此凭证在GrimBoostVault合约中取出了远多于之前抵押的SPIRIT-LP流动性凭证。随后攻击者使用此SPIRIT-LP流动性凭证移除流动性获得WFTM与BTC代币并归还闪电贷完成获利。

此次攻击是由于GrimBoostVault合约的depositFor函数未对用户传入的token的合法性进行检查且无防重入锁,导致恶意用户可以传入恶意代币地址对depositFor进行重入获得远多于预期的抵押凭证。慢雾团队建议:对于用户传入的参数应检查其是否符合预期,对于函数中的外部调用应控制好外部调用带来的重入攻击等风险。(来源链接)

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

地球链

[0:0ms0-0:900ms