DAOrayakiDAO研究奖金池:
分析:0xhabitatMultisig被盗取
一位GnosisSafe用户遭遇了严重且复杂的网络钓鱼攻击,导致该项目的Multisig被抽干。
重要提示:我们当前的分析表明,这是针对特定GnosisSafe用户的针对性攻击,我们没有迹象表明此攻击还会影响任何其他用户。该攻击也没有利用任何智能合约漏洞,而是使用网络钓鱼技术让Multisig所有者签署恶意交易。
这篇博文旨在阐明0xhabitat事件并详细说明从中学到的东西。为了使这份事故报告完全客观,我们只包含了我们在链上和通过我们的后端收集的第一手数据。可以在此处阅读0xhabitat团队的观点。首先,让我们从分析发生的事情开始……
特洛伊木马
本次事件的主要来源是两个模仿以下官方GnosisSafe智能合约的恶意合约:
SafeSingleton:这是核心逻辑合约。每个Safe都是指向特定SafeSingleton的代理合约。Safes可以由其用户升级以指向一个新的Singleton,例如添加功能。
SafeMultisend:这是一种中介智能合约,使Safes能够将多个交易合并为一个。
在本文中,恶意合约将被称为EvilSingleton和EvilMultisend。EvilMultisend合约于11月23日在此地址部署。合约的特殊之处在于,它不仅允许批量交易,还可以在同一笔交易中更改Safe的Singleton。同一天,EvilSingleton被部署在这个地址。EvilSingleton充当特洛伊木马程序,最初将所有交互转发到原始Singleton,但有一个后门,使第三方能够访问Safe。
这是一个陷阱!
0xhabitat的故事开始于EvilMultisend合约部署后几个小时。在与EvilMultisend合约交互的0xhabitatMultisig中提出了一项交易。对于所有相关方来说,它看起来就像是使用TransactionbuilderSafeApp进行的常规批量交易。然而,这是一个精心设计的交易,乍一看,它看起来像一个普通的Multisend交易,但实际上,它也将Safe的Singleton更新为EvilSingleton。
可以在此处找到有关激活EvilSingleton的更多技术细节。
转折点
Safe升级到EvilSingleton后,7天内什么都没有发生。与此同时,0xhabitat金库逐渐增长到价值100万美元的数字资产。很明显,攻击者在执行实际攻击之前希望蜜罐变大,希望他们的后门之前没有被发现。11月30日,攻击开始。黑客创建了一个交易,激活了EvilSingleton,允许第三方账户完全控制保险箱中的资产。
资金被抽干
在EvilSingleton被激活后仅30分钟,攻击者就能够将所有资金提取到他们的账户中。随后,攻击者通过Uniswap和Sushiswap将所有资产转换为ETH。然后通过多笔交易将生成的ETH发送到TornadoCash合约,这是路径的终点。
那么,究竟发生了什么?
从我们目前收集到的信息来看,很明显Multisig中的一个签名者密钥被泄露了。这是因为导致后门实施的恶意交易是由Multisig的签名者根据我们的后端数据提出的。虽然无法准确确定这是如何实现的,但有两大类事件可能导致了这种情况。
网络钓鱼
有几种方式可能会误导所有者,导致其提出导致损害0xhabitatMultisig安全性的交易。可能的选项包括:
流氓浏览器扩展:浏览器扩展方便,但也有风险。由于扩展可以自由修改Web应用程序的任何内容。因此,欺诈性浏览器扩展程序可能已被用于修改GnosisSafeWeb界面,以用户提出恶意交易。
恶意接口:如此文所述,GnosisSafe的安全性取决于用于与帐户交互的接口的完整性。受影响的0xhabitat用户可能已经与模仿官方GnosisSafe界面的界面进行了交互,但通过将常规交易的目标地址更改为EvilMultisend合约来有效地创建恶意交易。
供应链攻击/受损网站:虽然问题的根源可能是对官方GnosisSafe软件的恶意收购,但我们目前的评估表明情况并非如此。所有信号都表明这是对0xhabitatMultisig的针对性攻击,而不是官方GnosisSafe界面的普遍问题。但是,我们也在继续调查和观察这方面的情况。
恶意所有者
第二个假设选项是所有者没有被诱提出恶意交易,而是自愿提出的。Multisig中的两个签名者之一另一方签署欺诈性交易,导致Multisig遭到破坏。我们没有理由怀疑0xhabitat团队的完整性。但是为了在我们的分析中进行彻底的分析,我们仍然必须考虑这是对事件的可行解释。
GnosisSafe团队的经验教训
在我们仍在分析此事件的同时,我们已经立即采取了一些措施来减轻未来的类似攻击。所有这些更改都作为修补程序实施。
暴露multisend地址
为了能够验证交易中使用了哪个multisend合约,SafeWebUI显式显示了multisend合约地址。阅读详情。
交易详细信息显示完整的Multisend合约地址以供验证
防止解码未知的multisend交易
我们对解码机制进行了更改,以仅解码通过官方multisend实现触发的multisend交易。这使得交易与未知合同的交互变得清晰起来。
标记意外的委托调用
当交易使用委托调用与我们未知的合约时,我们添加了一个明确的警告。这是我们让用户意识到交易需要特别注意的另一种方式。
通过Gnosis未知的合约发起的委托调用被标记
给GnosisSafe用户的建议
虽然我们的目标是建立安全机制以防止将来发生此类情况,但在与GnosisSafe交互时提醒GnosisSafe用户在操作安全方面的实践也很重要。
验证接口完整性:恶意接口可以通过共同签名者签署恶意交易来危及Multisig的整个安全性。如果您使用GnosisSafeWeb应用程序,请确保为官方应用程序的链接添加书签并验证URL和安全证书。或者更好的是,开始使用GnosisSafeDesktop应用程序。
不要只相信一个信息源:我们强烈建议使用额外的独立客户端/接口来详细检查每笔交易。例如,使用GnosisSafe移动应用程序在签名前仔细检查交易。这可以防止单个受损接口诱使用户签署恶意交易。
小心DelegateCall:DelegateCall是一个强大的工具,例如,它允许Safes批处理交易。但这也伴随着巨大的风险。因此,在识别使用DelegateCall的交易时,GnosisSafe用户应该特别注意。验证交易数据时,请验证使用了正确的Multisend目标地址。可以在此列表中找到经过Gnosis验证的Multisend实现。
减少浏览器扩展的使用:虽然方便,但浏览器扩展可能成为关键的攻击媒介,甚至可以最高级的用户。我们通常建议不要在用于与GnosisSafeWeb应用程序交互的浏览器中使用任何浏览器扩展。
NexusMutual的创始人HughKarp也遭受了利用恶意浏览器扩展的攻击
结论
为个人和组织构建合适的工具以在Web3中保持安全是我们使命的核心。这就是为什么我们很遗憾听到0xhabitat团队资金被盗的原因。我们希望团队和社区从这种不幸的情况中一切顺利,并希望最终能确定攻击者并退还资金。
参考资料
https://etherscan.io/address/0x3cb0652856d7eabe51f1e3cceda99c93b05d7cea
https://etherscan.io/address/0x09afae029d38b76a330a1bdee84f6e03a4979359
https://bafybeiat2xp7cicrlpq3h57wdnz4pzaoby2cx62c3lprh3lzgrworcitly.ipfs.infura-ipfs.io/Exploit_Info.pdf
https://blog.gnosis.pm/the-impact-of-phishing-on-web-3-0-a62385c81310
https://github.com/gnosis/safe-react/issues/3091
https://github.com/gnosis/safe-react/issues/3090
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。