是授权转移还是直接偷⾛?Solana授权钓⻥事件解析

前两天,Solana区块链上出现了安全预警,有⼀篇⽂章指出⼀个名为

https://officialsolanarares.net/mint/  钓⻥⽹站在⽤户批准之后,可以将⽤户的原⽣代币转⾛。在该⽂章 中提到了⼀点:

恶意合约在⽤户批准(Approve)后,可以转⾛⽤户的原⽣资产(这⾥是SOL),这点在以太坊上是不可能的,以 太坊的授权钓⻥钓不⾛以太坊的原⽣资产(ETH),但可以钓⾛其上的Token。于是这⾥就存在“常识违背”现象,导致⽤户容易掉以轻⼼。

其实该⽂章这⾥的说法是不甚准确的,混淆了批准交易和Solidity中ERC-20代币授权这两个不同的概念。

真实情况是通过Solana的签名扩散机制,恶意合约直接盗取了⽤户的SOL资产,和通常意义上的授权并没有什么关联。

1. 以太坊中的授权

在以太坊中,通常意义上授权是指⽤户调⽤代币合约,向其它地址(合约)授权⼀定处理额度,这样我们在和其它 合约交易时,可以⽅便的⽀付ERC-20代币。

在这⾥,授权是必须的,否则第三⽅合约⽆权处理⽤户的代币资产。同时,这种机制也伴⽣了⼤量的授权攻击,只要你授权了恶意合约,恶意合约就可以转⾛你的ERC-20代币。

2. Solana中的授权

在Solana中,代币⼀般为官⽅提供的spl-token合约,它模拟了ERC-20代币的⾏为,因此也存在类似的ERC-20授权 概念。同样授权第三⽅合约后第三⽅合约可以处理⽤户的代币(注意不是原⽣币SOL)。这点同以太坊是⼀致的,并没有什么反常识。

全球最大肉类生产商JBS支付了1100万美元比特币解决勒索软件的网络攻击:据道琼斯报道,全球最大肉类生产商JBS美国业务首席执行官AndreNogueira周三表示,该公司已向造成其业务中断的黑客支付了1100万美元比特币的赎金,“这笔以比特币支付的赎金是为了保护JBS肉制品工厂免遭进一步破坏,并缓解与JBS有关的餐馆、杂货店和农民在此事件中遭受的潜在影响。”Nogueira还称,“付钱给罪犯是非常痛苦的,但我们为客户做了正确的事。”[2021/6/10 23:26:20]

3. Approve的涵义

不管在以太坊中还是在Solana中,我们习惯将Approve当作授权(ERC-20协议⾥有approve函数),因此⾃然⽽然的会认为是代币授权。当我们使⽤MetaMask钱包时,如果是代币授权交易会明确提示授权,并且所有交易弹出的 是⼀个确认按钮。然⽽在Solana的 Phantom钱包⾥,弹出的是⼀个Approve(批准)按钮,让⼈很容易以为是授 

权交易。但真实情况是批准⼀次交易⽽并不是进⾏代币授权。所以安全预警中出现的被盗⾏为,是⽤户批准了⼀个未知交易,⽽不是⽤户进⾏了SOL的授权操作,当然也就不能说是授权偷⾛了原⽣币。

4. 交易直接转⾛原⽣货币

交易转⾛批准者的原⽣货币,例如SOL和ETH,是⾮常简单的。在以太坊上的Solidity中,只要调⽤⼀个 payabletransfe的函数就可以转⾛交易⽤户的ETH;在Solana中,相应的,只要调⽤系统合约的户的SOL资产,这和我们平常讲的代币授权概念是没有任何关系的。

函数也能转移⾛交易⽤不同的是,在Solidity中,ETH转移发⽣在合约调⽤的时候,因此钱包可以提前知道要转移的ETH数量并显示出来, ⽽在Solana中,转移是发⽣在合约内部的,因此钱包⽆法提前知晓你会被转⾛多少SOL,当然也会⽆法显示。只要你签名认同了这笔恶意交易,你就相当于签名认同了这次SOL转移,这正是这次Solana上钓⻥盗取的问题所在。

⼀段类似如下的代码就可以在合约内部转移 user 的SOL。

5. Solana中的签名扩散机制

在Solana中,有⼀个签名扩散机制。⽤户调⽤合约A,此时合约A中⽤户是签名批准的。当合约A内部调⽤合约B 时,⽤户的签名会随着跨合约调⽤⼀起扩散到合约B。因此,在合约B中,⽤户也是签名批准的。所以这⾥存在⼀个安全⻛险,当签名⼀个恶意合约时,恶意合约就获取了我们这个签名,然⽽它可以拿我们这个签名做任何事情!!!!!!!

在上述的偷盗事件中,⽤户同恶意合约 3VtjHnDuDD1QreJiYNziDsdkeALMT6b2F9j3AXdL4q8v 进⾏交易,该合约直接调⽤系统合约转移⽤户的SOL,因为签名随着调⽤⼀起扩散到了系统合约,因此系统合约认为该笔交易也是批准过的,是正常的,所以就转⾛了⽤户的资产。

6. 具体被盗交易

其中⼀笔被盗交易:

https://explorer.solana.com/tx/4j33JSGRS6rD5irzW1cA9wjQAvAgVDAnBTrGRjqtqBBWXspTzU5HpEFwTeCC2uD9hH9eA2Pw5ddHyd5JyG6h6cNq

我们可以看到该交易涉及的输⼊账号:

这其中:

⽤户账号:4XF4wyjein7ZN4RPM6YK2mC2mC6T41cZAoKjJqpP19fR

SOL转移账号:BepccLHDcXqqHi6MfpTDo9Sfc5tmRjmSC1XY48Tb8HuY

恶意合约地址:3VtjHnDuDD1QreJiYNziDsdkeALMT6b2F9j3AXdL4q8v

从上可以看出,⽤户账号调⽤合约后转移了1.2545 SOL到转移账号。同时我们可以看到并没有涉及到spl-token代币合约,出产没有通常意义上的授权这么回事。

其交易打印出的⽇志为:

从⽇志中也可以判断,恶意合约仅是简单的调⽤了系统合约转⾛了⽤户的SOL,因此⽤户签名批准了对恶意合约的交易,这个签名也扩散到了系统合约,因此判定有效。

7. 结论

在Solana中,不要轻易确认或者批准任何来历不明的交易,因为它可以拿你的签名代表你做任何事情。

关于Fairyproof

Fairyproof是一家专注区块链生态安全的公司,公司主要通过“代码风险检测+逻辑风险检测”的一体化综合方案服务了诸多新兴知名项目。

团队成员参与发起并提交了以太坊领域的多项标准草案,包括ERC-1646、ERC-2569、ERC-2794,其中ERC-2569 被以太坊团队正式收入。

团队参与了多项以太坊项目的发起及构建,包括区块链平台、DAO组织、链上数据存储、去中心化交易所等项目,并参与了多个项目的安全审计工作,在此基础上基于团队丰富的经验构建了完善的漏洞追踪及安全防范系统。

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

链杂谈

BitcoindYdX的绝地反击:从濒临倒闭到单日交易量20亿美元

这是迄今为止 dYdX 的简史。我认为对于任何对 dYdX 感兴趣的人来说,这应该是一个很好的背景。对于在更广泛的 DeFi/加密货币领域工作的任何人来说,我们所经历的旅程可能也是有用的。 在 Coinbase 工作 在加入 Coinbase 之前,我对加密货币一无所知。开始在 Coinbase 工作后不久,我对加密货币的未来感到非常兴奋。

UNI要想在NFT市场捕获机会 这些高效实用工具不可或缺

本篇整理了将近 40 个实用的 NFT 工具,包括交易聚合器、热度追踪工具、专用稀有度查询工具、铸造日历、NFT 新闻聚合器以及即将启动的一个 NFT 抢先铸造工具等。 高效且实用的交易工具往往有助于先人一步发现市场机会。 对于 NFT 掘金者而言,监测热门 NFT 项目、及时获取铸造预告、实时了解铸造趋势以及便捷查看稀有度数据的工具缺一不可。

火币网下载官方app七下八上:TOP15链游新格局正在形成

数据来源:DappRadar 本周链游板块用户量上有八款游戏上升,七款游戏下降,趋势同上周相比有所缓和,用户量与余额均有一到两成的恢复。 整体上看本周恢复良好的更多是排在十名开外的链游,但Crazy Defense Hero用户量上涨127%,从上周的第八位跃升至第四位。 Axie Infinity用户量连续下跌近一个月,其排名也来到了第八位。

BNB2022元宇宙产业发展趋势报告:元宇宙的四大特性

《2022元宇宙产业趋势报告》(下称《报告》),将元宇宙发展理论与产业实际发展状况相结合,深度解读元宇宙产业发展的形势,并为元宇宙产业未来发展趋势把脉,向元宇宙企业高管、领域专家、投资者等读者提供专业参考。尽管现阶段“元宇宙”概念热度不减,但行业内仍然存在企业“蹭热点”的行为。

[0:0ms0-0:640ms