链捕手消息,据慢雾安全团队情报,2022年7月10号OMNIProtocol遭受闪电贷攻击。慢雾安全团队以简讯形式分享如下:
1.攻击者首先通过supplyERC721函数抵押doodle,抵押后合约会给攻击者相应的凭证NToken。
2.调用borrow函数借出WETH。
慢雾:过去一周加密领域因安全事件累计损失3060万美元:7月24日消息,据慢雾统计,上周加密领域因遭遇攻击累计损失3060万美元,攻击者利用了不同的攻击向量。这些事件包括Alphapo热钱包被盗(损失2300万美元)、Conic Finance遭闪电贷攻击(损失30万美元)以及重入攻击(损失320万美元)、GMETA发生RugPull(损失360万美元)、BNO遭闪电贷攻击(损失50万美元)等。[2023/7/24 15:55:56]
3.调用withdrawERC721尝试提取NFT,跟进到内部函数executeWithdrawERC721发现,提款会先通过burn函数去燃烧凭证。
慢雾:iCloud 用戶的MetaMask钱包遭遇钓鱼攻击是由于自身的安全意识不足:据官方消息,慢雾发布iCloud 用戶的MetaMask钱包遭遇钓鱼攻击简析,首先用户遭遇了钓鱼攻击,是由于自身的安全意识不足,泄露了iCloud账号密码,用户应当承担大部分的责任。但是从钱包产品设计的角度上分析,MetaMask iOS App 端本身就存在有安全缺陷。
MetaMask安卓端在AndroidManifest.xml中有android:allowBackup=\"false\" 来禁止应用程序被用户和系统进行备份,从而避免备份的数据在其他设备上被恢复。
MetaMask iOS端代码中没有发现存在这类禁止钱包数据(如 KeyStore 文件)被系统备份的机制。默认情况下iCloud会自动备份应用数据,当iCloud账号密码等权限信息被恶意攻击者获取,攻击者可以从目标 iCloud 里恢复 MetaMask iOS App 钱包的相关数据。
慢雾安全团队经过实测通过 iCloud 恢复数据后再打开 MetaMask 钱包,还需要输入验证钱包的密码,如果密码的复杂度较低就会存在被破解的可能。[2022/4/18 14:31:38]
而burn函数中的safeTransferFrom函数会去外部调用接收地址的OnERC721Received函数,攻击者利用这点重入了合约的liquidationERC721函数。
动态 | 慢雾预警:警惕新型“交易排挤攻击”:根据慢雾威胁情报分析系统分析,今日凌晨,EOS.WIN 遭遇黑客攻击。EOS.WIN 的攻击者 loveforlover 采用的是新型攻击手法,为“交易排挤攻击”,这种攻击手法与之前攻击 bocai.game 的攻击手法为同一种攻击手法。攻击者首先是使用 loveforlover 发起正常的转账交易,然后使用另一个合约帐号检测中奖行为。如果不中奖,则发起大量的 defer 交易,将项目方的开奖交易“挤”到下一个区块中,此次攻击源于项目方的随机数算法使用了时间种子,使攻击者提升了中奖几率,导致攻击成功。截止发文前,EOS.WIN 项目方仍未进行合约升级。慢雾安全团队在此建议所有的项目方和开发者不要在随机数算法内加入时间种子,防止被恶意攻击。[2019/1/11]
4.在liquidationERC721函数中,攻击者先支付了WETH并接收doodlenft,接着通过判断后会调用_burnCollateralNTokens函数去燃烧掉对应的凭证,同样的利用了burn函数外部调用的性质攻击者再次进行了重入操作,先是抵押了清算获得的nft,接着调用borrow函数去借出了81个WETH,但由于vars变量是在liquidationERC721函数中定义的,因此第二次借款不会影响到liquidationERC721函数中对用户负债的检查,这导致了攻击者可以通过userConfig.setBorrowing函数将用户的借款标识设置为false即将攻击者设置成未在市场中有借款行为。
5.在提款时会首先调用userConfig.isBorrowingAny()函数去判断用户的借款标识,假如借款标识为false,则不会判断用户的负债,故此重入后的81WETH的负债并不会在提款时被判断,使得攻击者可以无需还款则提取出所有的NFT获利。
此次攻击的主要原因在于burn函数会外部调用回调函数来造成重入问题,并且在清算函数中使用的是旧的vars的值进行判断,导致了即使重入后再借款,但用户的状态标识被设置为未借款导致无需还款。慢雾安全团队建议在关键函数采用重入锁来防止重入问题。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。