作者:@korpi87
编译:Kxp,BlockBeats
当“小狐狸”钱包跳出授权钱包时,要先了解清楚这个签名的意义及细节。
你可能很难想象,Metamask 中一个简单的签名就能掏空你的钱包。但这样的事却发生在了一名资深用户身上,今天他因一个漏洞损失了近 50 万 USDC 。如果不多加小心的话,你可能就是下一个他。所以,今天我想和大家讲讲这件事的来龙去脉,告诉大家以后如何注意此类问题。
那是在一个安静的午后时分,Joe(化名)突然发现自己的钱包被转走了 46.9 万 USDC。这次转账并不简单,肯定不是攻击者能做出的行为,因为他们根本不可能得到 Joe 钱包的权限。那就说明,转走他所有 USDC 的应该是某个恶意合约。
Auros未能向Maple Finance支付750万美元的稳定币贷款:金色财经报道,据安全和分析公司PeckShield称,加密货币做市商公司Auros未能向无抵押贷款平台Maple Finance支付750万美元的稳定币贷款。Auros在失去其在倒闭的加密货币交易所 FTX 上持有的约 2000 万美元资金后,上个月在英属维尔京群岛申请破产保护。[2022/12/21 21:59:16]
在讲述今天的故事之前,我需要先向大家解释一些术语。USDC 是以太坊上的一个具有多种功能的合约,规定了我们可以如何使用 USDC。
在众多功能当中,我们需要特别关注下面两项功能:
转账(transfer)
代转(transferFrom)
Naoris Protocol完成1150万美元融资,Tim Draper领投:7月27日消息,Naoris Protocol完成1150万美元融资,Tim Draper领投,Holt Xchange、Holdun Family Officer、SDC Management、Expert Dojo、Uniera、Level One Robotics等参投。据悉,Naoris Protocol旨在是改造区块链网络安全。(Silicon Angle)[2022/7/27 2:41:49]
当你需要在钱包之间转移 USDC,或其他 ERC20s 时,就需要用到转账功能。它可以将 Token 从调用者(调用该功能的地址)转移到其他地址。如果有人能以你的名义恶意使用该功能,那么他一定得先掌握了你钱包的全部权限才行。
去中心化稳定币市场HaloDAO筹集350万美元:金色财经报道,去中心化稳定币市场HaloDAO宣布筹集了350万美元的种子轮融资,由Parataxis Capital及许多顶尖天使投资人领投,QCP Soteria、Genesis Block Ventures、Spartan Group、NGC、CMS Holdings、LedgerPrime、Genblock、Petrock Capital等参投。[2021/5/22 22:30:58]
当你与合约产生互动时,它们会通过代转功能来转移你的 Token,具体金额由你提前预设好的比例决定。因此,如果你允许一项合约转移无限量的 USDC,那么理论上它就可以拿走你所有的 USDC。
现在让我们回到 Joe 的故事当中,转走他全部 USDC 的确实就是 transferFrom 功能。然而,只有当 Joe 批准合约使用他的 USDC 时,transferFrom 才能发挥作用。但事实上,Joe 坚信自己没有批准任何事项。
波卡跨链DeFi项目Equilibrium完成550万美元融资:波卡跨链DeFi项目Equilibrium宣布通过全新Token Swap方式完成550万美元融资。具体来说,Equilibrium将其基于EOS原生代币Native Utility Token (NUT)兑换成基于波卡新代币EQ,参与本次Token Swap融资包括风险投资公司BKEX Capital、PNYX Ventures和Taureon。Equilibrium首席执行官Alex Melikhov透露,他们正在构建DeFi协议,旨在简化在Substrates和Parachain上创建DApp的流程,同时还将帮助开发人员将产品从以太坊和其他区块链迁移到波卡。(The Block)[2020/10/2]
可是,DeBank 的交易记录清楚地显示,在漏洞发生前 10 分钟,该恶意合约可以无限使用账户中的 USDC。那么问题就在于,如果不是 Joe 本人的话,究竟是谁给了该合约这一项批准呢?我只能说,Joe 确实批准了这一操作,但却是在他不知情的情况下完成的。
Etherscan 上的信息显示,Joe 本人确实没有调用该功能,真正批准了这一额度的是其他地址,这才让恶意合约得以花光 Joe 全部的 USDC。
我们不禁疑问,别人怎么能代替我给予合约许可呢?
许可功能的引入原本是为了改善以太坊的用户体验,它只需一个签名就可以让用户在不提交交易的情况下修改批准金额。也就是说,只要有了你的签名,任何人都可以调用许可功能,并更新你对合约的批准额度。
当你使用 1inch dApp 时,你就可以体验到这一功能。如果你想在上面出售 USDC,那你并不需要事先批准,只需要签上你的名字就够了。有了这个签名,1inch 便获取了你全部 USDC 的使用权限。虽然 1inch 不会无缘无故花光你所有的 USDC,但这却给了恶意合约机会。
Joe 一定是不小心在一个恶意网站上签署了这样的信息。不幸的是,那一次他用的是热钱包,签名只是随手点击一下就完成了。如果他用的是硬件钱包的话,就需要在外部设备上签署信息,那么还会有一个思考的时间。
有了 Joe 的签名,其他地址便可以提交一个带有许可功能的交易,这样恶意合约就获取了 Joe 钱包全部 USDC 的使用权限。然后,只要它调用 transferFrom 功能,就可以转走全部这些资金了。
所以说,一个看似小小的签名却可以引来巨大的灾难。在某些情况下,Metamask 会在你准备签名是对你发出警告,告知你其中的危险性。签署一个信息可能是危险的。但一些技术层面上的批准签名却不会收到预警,但这些一旦滥用往往会造成巨额的损失。
如何避免今后遇到类似的问题?
1. 不要在 Metamask 中签署一切内容;
2. 花点时间了解你所签署的内容;
3. 对传统的批准事项要格外小心。
区块律动BlockBeats
媒体专栏
阅读更多
金色早8点
Bress
链捕手
财经法学
PANews
成都链安
Odaily星球日报
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。