从 EVM 到 Solana:如何避坑钓鱼骗局

中级7/25/2024, 10:03:12 AM
本文介绍用户在Solana上遭遇钓鱼骗局丢失资产的案例,说明Solana与EVM链的不同之处及其特有的欺诈手法,如代币账户所有权转移、不需要先授权再交易、允许在一笔交易中转移多个代币和利用Durable Nonce进行欺诈。

近期有一位用户发文,讲述了自己在 Solana 上被钓鱼丢失了几百万人民币资产的经过,据描述:他在 Maneki 项目的推文下方,误点了回复里钓鱼团伙发的链接进入网站。

令他费解的是,在交互的过程中,网站似乎没有要求他做任何的代币授权操作,黑客直接就得手了。当他意识到网站可能有问题,试图转走钱包中的代币避免被盗的时候,却发现多次尝试都是交易失败,再也无法转出。

由于提供的细节有限,事发经过我们无法完整重现。但可以确定的是,用户失去了对 Maneki 代币账户的控制权,所以才会出现用户试图转走钱包中的资产失败。习惯了 EVM 的用户可能会很疑惑,这账户控制权又是什么呢?

这是由于 Solana 采用了不同于 EVM 链的实现方式,假如继续按照 EVM 上的使用习惯来交互 Solana,拿着前朝的剑想杀当朝的官,无疑会面临巨大的风险。

在 Solana 上想要愉快地玩耍,势必要对 Solana 的特性与欺诈手法有所了解。为此我们也整理了一些 Sol 上那些与 EVM 有所不同的攻击方式,希望能够帮助不了解Solana的用户避坑。

1.鸠占鹊巢:代币账户所有权转移

我们开篇案例的主人公遭遇的就是这类攻击,在 Solana 钱包中,对于每一个代币,都会有一个单独的账户(Token Account),类似于我们银行卡中会有人民币账户,美元账户等等,彼此之间是独立开来的,而且每个代币账户还会有一个所有者的属性。

在默认情况下代币账户的所有者会被指定为当前的钱包,但是这并不是写死的,通过调用 createSetAuthorityInstruction 的操作,可以改变代币账户的所有者,黑客正是利用了这个操作,诱导用户将钱包中的某个代币账户所有权转移到他的钱包。

一旦成功,哪怕代币还在钱包中,用户却无法将代币转出,这和代币被盗没什么两样。

由于这个操作风险很高,因此 Phantom 和 @Backpack_CN 钱包都会拦截并提示该交易的风险,需要对交易进行二次确认,除非用户一意孤行强行批准交易。

2.Solana 上不需要先授权再交易

在 EVM 上,钓鱼合约如果想转走受害者钱包中的代币,需要用户在代币合约上对钓鱼合约进行授权,获得授权的钓鱼合约才能发起交易转走用户的资产。

而在 Solana 上,approve 并非是授权而是批准交易,如果用户把这当成的代币授权的环节,一旦 approve 了,钓鱼的交易就被发送出去,很难有挽救的余地。

还有一个更危险的情况是:假设用户在 EVM 上被诱导了授权代币,此时受影响的只是单一代币,其他未被授权的代币不会被盗走。而 Solana 由于无需授权只要用户批准即可转移代币,结合接下来要介绍的第三点特性,则可能会给用户造成极大的损失

3.小心被诱导转移多个代币

Solana 的交易设计,允许在一笔交易中加入多个子交易,每个子交易可以完成一项交互,比如转出某个代币。相对 EVM 上的代币转移,每种代币都需要一笔单独的交易来完成,Solana 的这个特性提供了一定的便利。

比如大家的钱包中可能会存在着一些价值很低不到1u的代币,sol-incinerator 便利用了这个特性允许用户批量将钱包中的小额代币发送并兑换回 SOL,而不需要多次兑换耗费大量的 Gas 也节省了操作时间。

有利便有弊,这个特性也给黑客作案带来的极大的便利,只要成功蒙骗到一次用户确认交易,便可以将用户钱包中的代币、NFT 甚至是 SOL 都洗劫一空。 因此如果看到一笔交易中包含大量的 TOKEN 转移,就要小心是不是黑客利用了这个特性准备清空你的钱包

4.骗取交易签名

在 EVM 中,permit 签名由于其隐蔽性、不出现在授权者的钱包中等特性深受钓鱼团伙的喜爱,目前有超过一半以上的钓鱼攻击方法都是它。而在 Solana 的世界,也有一种相似的方法:Durable Nonce(持久唯一数)。

Durable Nonce 的特性和 permit 类似,如果用户在不知情的情况下签署了交易,并不会立即丢失资产,也不会在自己的钱包中看到这笔交易,而是会把签名过的交易信息发送给钓鱼团伙,再由他们来把交易发送到区块链上,这种离线交易的特点与 permit 如出一辙,也同样地危险。

由于 Solana 可以模拟交易结果,Durable Nonce 的可读性比 permit 要好一些,用户也更容易识别。所以钓鱼团伙为了更顺利地盗取用户资产,还将 Durable Nonce 与合约升级结合起来,试图以此瞒天过海避开交易模拟给用户带来的警告

钓鱼网站先使用正常的不含恶意交易的合约与用户交互,此时钱包的交易模拟功能呈现出来的信息是看不出来有什么问题的。

而当用户批准后,拿到用户的签名的钓鱼团伙并不急于将交易广播上链,而是等待一段时间后再将合约升级到包含恶意代码的版本,最后将交易广播上链,用户会突然发现资产丢失,而自己没有任何操作,因为有可能这笔签名是几天前做的。

这种升级后的攻击方式极为隐蔽,危害也极大,目前的交易模拟功能暂时也无法展示出来风险。因此仍然要提高防范的意识,不要过于依赖钱包软件的提醒和盲目信任交易模拟的结果。

结语

可以看到上述的这些功能特性,最初的设计目的都是希望降低用户的使用门槛,提供更多的便利。没曾想新技术和双刃剑一样,也给钓鱼团伙提供了更多样的攻击手段。

就在写下这篇文章的前夕,Solana 发布了 Action 和 Blink 这两个新的功能,大家在对这两个功能无限遐想的同时,也有人提出了钓鱼团伙可能利用新功能来行骗的警告

Solana 上的钓鱼具有一键操作,隐蔽性高等特点,交易模拟功能由于 rpc 不稳定等原因有时并不能起作用,因此也不能完全依赖于这个功能。

建议有条件的用户可结合 Keystone 硬件钱包来进行交互,等于增加了一次额外的确认,避免由于冲动或者误点带来的快速确认交易。

此外 Keystone 也在硬件端对交易进行了解析,在软件钱包交易模拟失效的情况下,硬件端仍然能够解析交易内容,提供最后一道防线。

区块链的技术是在不断发展与变革中进化的,我们忧心新技术带来的风险,但却也不能因此而停下脚步,钓鱼团伙作为过街老鼠人人喊打,从业者包括硬件钱包、安全公司们也在不停地针对新的威胁迭代着解决方案。

作为普通用户,时刻提醒自己不被“免费馅饼”冲昏头脑,而是仔细检查交易内容,在这样的安全意识前提下,钓鱼就很难得逞。

声明:

  1. 本文转载自[Keystone],著作权归属原作者[Keystone],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。

从 EVM 到 Solana:如何避坑钓鱼骗局

中级7/25/2024, 10:03:12 AM
本文介绍用户在Solana上遭遇钓鱼骗局丢失资产的案例,说明Solana与EVM链的不同之处及其特有的欺诈手法,如代币账户所有权转移、不需要先授权再交易、允许在一笔交易中转移多个代币和利用Durable Nonce进行欺诈。

近期有一位用户发文,讲述了自己在 Solana 上被钓鱼丢失了几百万人民币资产的经过,据描述:他在 Maneki 项目的推文下方,误点了回复里钓鱼团伙发的链接进入网站。

令他费解的是,在交互的过程中,网站似乎没有要求他做任何的代币授权操作,黑客直接就得手了。当他意识到网站可能有问题,试图转走钱包中的代币避免被盗的时候,却发现多次尝试都是交易失败,再也无法转出。

由于提供的细节有限,事发经过我们无法完整重现。但可以确定的是,用户失去了对 Maneki 代币账户的控制权,所以才会出现用户试图转走钱包中的资产失败。习惯了 EVM 的用户可能会很疑惑,这账户控制权又是什么呢?

这是由于 Solana 采用了不同于 EVM 链的实现方式,假如继续按照 EVM 上的使用习惯来交互 Solana,拿着前朝的剑想杀当朝的官,无疑会面临巨大的风险。

在 Solana 上想要愉快地玩耍,势必要对 Solana 的特性与欺诈手法有所了解。为此我们也整理了一些 Sol 上那些与 EVM 有所不同的攻击方式,希望能够帮助不了解Solana的用户避坑。

1.鸠占鹊巢:代币账户所有权转移

我们开篇案例的主人公遭遇的就是这类攻击,在 Solana 钱包中,对于每一个代币,都会有一个单独的账户(Token Account),类似于我们银行卡中会有人民币账户,美元账户等等,彼此之间是独立开来的,而且每个代币账户还会有一个所有者的属性。

在默认情况下代币账户的所有者会被指定为当前的钱包,但是这并不是写死的,通过调用 createSetAuthorityInstruction 的操作,可以改变代币账户的所有者,黑客正是利用了这个操作,诱导用户将钱包中的某个代币账户所有权转移到他的钱包。

一旦成功,哪怕代币还在钱包中,用户却无法将代币转出,这和代币被盗没什么两样。

由于这个操作风险很高,因此 Phantom 和 @Backpack_CN 钱包都会拦截并提示该交易的风险,需要对交易进行二次确认,除非用户一意孤行强行批准交易。

2.Solana 上不需要先授权再交易

在 EVM 上,钓鱼合约如果想转走受害者钱包中的代币,需要用户在代币合约上对钓鱼合约进行授权,获得授权的钓鱼合约才能发起交易转走用户的资产。

而在 Solana 上,approve 并非是授权而是批准交易,如果用户把这当成的代币授权的环节,一旦 approve 了,钓鱼的交易就被发送出去,很难有挽救的余地。

还有一个更危险的情况是:假设用户在 EVM 上被诱导了授权代币,此时受影响的只是单一代币,其他未被授权的代币不会被盗走。而 Solana 由于无需授权只要用户批准即可转移代币,结合接下来要介绍的第三点特性,则可能会给用户造成极大的损失

3.小心被诱导转移多个代币

Solana 的交易设计,允许在一笔交易中加入多个子交易,每个子交易可以完成一项交互,比如转出某个代币。相对 EVM 上的代币转移,每种代币都需要一笔单独的交易来完成,Solana 的这个特性提供了一定的便利。

比如大家的钱包中可能会存在着一些价值很低不到1u的代币,sol-incinerator 便利用了这个特性允许用户批量将钱包中的小额代币发送并兑换回 SOL,而不需要多次兑换耗费大量的 Gas 也节省了操作时间。

有利便有弊,这个特性也给黑客作案带来的极大的便利,只要成功蒙骗到一次用户确认交易,便可以将用户钱包中的代币、NFT 甚至是 SOL 都洗劫一空。 因此如果看到一笔交易中包含大量的 TOKEN 转移,就要小心是不是黑客利用了这个特性准备清空你的钱包

4.骗取交易签名

在 EVM 中,permit 签名由于其隐蔽性、不出现在授权者的钱包中等特性深受钓鱼团伙的喜爱,目前有超过一半以上的钓鱼攻击方法都是它。而在 Solana 的世界,也有一种相似的方法:Durable Nonce(持久唯一数)。

Durable Nonce 的特性和 permit 类似,如果用户在不知情的情况下签署了交易,并不会立即丢失资产,也不会在自己的钱包中看到这笔交易,而是会把签名过的交易信息发送给钓鱼团伙,再由他们来把交易发送到区块链上,这种离线交易的特点与 permit 如出一辙,也同样地危险。

由于 Solana 可以模拟交易结果,Durable Nonce 的可读性比 permit 要好一些,用户也更容易识别。所以钓鱼团伙为了更顺利地盗取用户资产,还将 Durable Nonce 与合约升级结合起来,试图以此瞒天过海避开交易模拟给用户带来的警告

钓鱼网站先使用正常的不含恶意交易的合约与用户交互,此时钱包的交易模拟功能呈现出来的信息是看不出来有什么问题的。

而当用户批准后,拿到用户的签名的钓鱼团伙并不急于将交易广播上链,而是等待一段时间后再将合约升级到包含恶意代码的版本,最后将交易广播上链,用户会突然发现资产丢失,而自己没有任何操作,因为有可能这笔签名是几天前做的。

这种升级后的攻击方式极为隐蔽,危害也极大,目前的交易模拟功能暂时也无法展示出来风险。因此仍然要提高防范的意识,不要过于依赖钱包软件的提醒和盲目信任交易模拟的结果。

结语

可以看到上述的这些功能特性,最初的设计目的都是希望降低用户的使用门槛,提供更多的便利。没曾想新技术和双刃剑一样,也给钓鱼团伙提供了更多样的攻击手段。

就在写下这篇文章的前夕,Solana 发布了 Action 和 Blink 这两个新的功能,大家在对这两个功能无限遐想的同时,也有人提出了钓鱼团伙可能利用新功能来行骗的警告

Solana 上的钓鱼具有一键操作,隐蔽性高等特点,交易模拟功能由于 rpc 不稳定等原因有时并不能起作用,因此也不能完全依赖于这个功能。

建议有条件的用户可结合 Keystone 硬件钱包来进行交互,等于增加了一次额外的确认,避免由于冲动或者误点带来的快速确认交易。

此外 Keystone 也在硬件端对交易进行了解析,在软件钱包交易模拟失效的情况下,硬件端仍然能够解析交易内容,提供最后一道防线。

区块链的技术是在不断发展与变革中进化的,我们忧心新技术带来的风险,但却也不能因此而停下脚步,钓鱼团伙作为过街老鼠人人喊打,从业者包括硬件钱包、安全公司们也在不停地针对新的威胁迭代着解决方案。

作为普通用户,时刻提醒自己不被“免费馅饼”冲昏头脑,而是仔细检查交易内容,在这样的安全意识前提下,钓鱼就很难得逞。

声明:

  1. 本文转载自[Keystone],著作权归属原作者[Keystone],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。
即刻开始交易
注册并交易即可获得
$100
和价值
$5500
理财体验金奖励!
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.