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

This article is not available in the current language yet. Showing the original version.
通过Solana的签名扩散机制,恶意合约直接盗取了⽤户的SOL资产,和通常意义上的授权并没有什么关联。

专辑简介:

技术派是 PANews 推出的与技术相关的文章的集合地,如果你是研究技术的个人或团队,内容包括但不限于与智能合约相关的,与各大公链技术相关的,与安全相关的,欢迎 点击此处下载PANews 注册投稿,在这里让你技术文章让更多人受益,在这里你也能交到同好互相交流。


作者:Fairyproof

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

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

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

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

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

1. 以太坊中的授权

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

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

2. Solana中的授权

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

3. Approve的涵义

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

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

4. 交易直接转货币

交易转批准者的原货币,例如SOLETH,是常简单的。在以太坊上的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中,不要轻易确认或者批准任何来历不明的交易,因为它可以拿你的签名代表你做任何事情。

Share to:

Author: 技术最前沿

Opinions belong to the column author and do not represent PANews.

This content is not investment advice.

Image source: 技术最前沿. If there is any infringement, please contact the author for removal.

Follow PANews official accounts, navigate bull and bear markets together
PANews APP
US stocks closed mixed, with COIN falling more than 3.05%.
PANews Newsflash