《GoPlus:Solana 防钓鱼指南》
来源:GoPlus Security
近期 Solana 的市值水涨船高,一度超越 BNB 排名全球前三,巨大的财富效应吸引了大量的活跃玩家,更吸引到了大量 Wallet Drainer(钱包钓鱼)团伙从 EVM 的链转入 Solana,针对 Solana 的钓鱼网站、空投诈骗开始被大规模的部署,已造成大量用户损失惨重。近日 GoPlus 安全团队分析了多笔 Solana 的钓鱼事件,发现诈骗团伙利用 Solana 目前部分钱包的安全基础设施不完善的情况,快速升级空投诱骗、实施社交账号窃取,对此 GoPlus 总结如下常见的 Solana 的钓鱼攻击手法,帮助用户有效避免相关钓鱼事件,减少资产损失。
攻击类型
在近期的几起钓鱼事件中,GoPlus 发现钓鱼团伙大多是以「诱骗领取空投」、「假项目网站」、「免费抽奖」、「通过 NFT 空投引导进入」等,这些方式和 EVM 常见的几种钓鱼引导方式几乎一致,主要区别是骗子利用 Solana 与 EVM 的机制不同,从而以不同的「代币或授权转移」的方式进行钓鱼活动。以下是几种我们观察到的不同的转移攻击方式。
诱导转移原生代币 Sol
这种类型的攻击方式是最简单的,诈骗团队在用户链接完钱包后会在前端计算出当前所有$SOL 的余额,并且利用 SystemProgram.transfer 的功能直接完成代币的转移,以某个钓鱼网站举例,该网站显示了一个 Swap 的界面 UI,用户往往以为是以低价可以购买到某种代币
但实际上执行的只是单纯的$SOL 的转移
诱导转移多个代币
除了盗取原生代币$SOL 之外,骗子可以在同一笔交易签名中同时盗取所有当前钱包持有的 Token 资产。在 Solana 上的每一笔交易都可以由多个 Instruction 组成,每一个 instruction 可以完成一个单独的逻辑,比如转账、程序的交互以及 Account 的创建等等。这就意味着,钓鱼团伙完全有能力可以在同一笔交易中塞入多个操作指令,举例来讲,如果用户持有三个不同的 Token,那么钓鱼网站只需要在代码中往同一笔交易中塞入三个 Token 的分别的转账指令即可。这样一来就不需要单独骗取某一个资产,而是可以利用这个特性完成一次性的钱包洗劫。和第一种诱导一样,黑客也是通过各种手段蒙骗用户点击按钮进行交易,我们可以看到,该类型交易将会一次性转走所有资产,不仅包含原生$SOL 代币,同时包括 NFT 类型资产,也包含代币类型资产。这里诈骗团队主要利用了 Solana SPL Token 的 createTransferCheckedInstruction 完成对非原生资产的转移 instruction 构造。
Phantom 交易模拟
Backpack 交易模拟
诱导代币账户所有权转移
除了直接代币外,GoPlus 还发现了部分的钓鱼网站采用了 createSetAuthorityInstruction 的操作将 instruction 打包进交易中,该操作的本质是将账户上代币的所有权进行转移,Solana 的账户模型和 EVM 有所不同,每一个账户地址对于每一个代币,都会有一个专门的 Token Account 对应,Token Account 会有一个 owner,该 owner 就是当前的账户,Token Account 同时记录了对应 Token 的余额和相关信息。而 createSetAuthorityInstruction 操作可以直接将当前代币的所有权转给另外一个账户,实际最终的效果等同于将当前的代币全部转给了该账户。我们分别在 Phantom 和 Backpack 上进行了该操作实验,庆幸的是,这两个钱包都进行了特别的提醒和警告。
即使用户点击了 Ignore and proceed anyway 的选项,依旧可以通过交易模拟显示出余额的变化
注意
以上三种类型的攻击手段目前大部分的主流 Solana 都已经通过交易模拟能够实现对于结果的预测,用户能够很清晰的看到点击后的余额变化,因此只要用户耐心仔细的查看每一次的交易变化结果,就可以相对来说规避部分钓鱼风险,这是因为 Solana 的官方 JSON RPC 的接口中就能够提供「交易模拟」的能力。但是,随着钓鱼诈骗技术的升级,我们也发现了一些非常不易察觉的钓鱼手法。
骗取代币授权
对于熟悉 EVM 的用户而言,代币授权是一个常见的操作,但在 Solana 上,这一操作有所不同。在 Solana 网络中,骗子会利用用户对 EVM 授权机制的误解来实施诈骗。钓鱼网站通过诱导用户进行看似正常的交互操作,实际上却在背后通过 createApproveCheckedInstruction 执行了授权交易 Delegate。这种手法的关键在于,它不直接转移资产,而是通过赋予攻击者控制用户资产的权限。这类攻击通常隐藏在诱人的交互界面后,如假装进行投票、质押等,实际上却在悄无声息地更改账户的授权设置。
一旦攻击者获得了对用户资产的控制权限,他们便可以随时操纵这些资产,包括转移或交易。这种类型的攻击往往不易被及时发现,因为它并没有立即产生资产转移。这类的攻击也往往影响面最广,因为攻击者会等到上当用户足够多、金额足够大的时候才开始实施代币转移。用户需要特别注意,任何请求更改授权设置的操作都应引起警惕,尤其是在不熟悉的网站或应用上。通过交易模拟能够看到授权变化,因此不仅需要关注直接的代币余额变化,也要小心授权的变化导致的钓鱼风险。
Durable Nonce 骗取交易签名
Durable Nonce 是 Solana 区块链中的一个功能,它允许创建一个特殊的账户来存储一个持久的、不会过期的 nonce 值。在 Solana 中,每个交易都需要一个最近的区块哈希(recent blockhash)作为一部分,这用于确保交易的时效性和唯一性。通常,这个区块哈希会在大约 150 个区块之后过期,使得交易无法被处理。Durable Nonce 机制通过提供一个不会过期的 nonce 值,允许创建可以在更长时间内有效的交易。
在钓鱼诈骗中,骗子可能会滥用 Durable Nonce 机制,诱导用户签署看似正常但实际上包含恶意操作的交易。由于使用了 Durable Nonce,这些交易不会因为区块哈希过期而失效,给骗子更长的时间窗口来执行交易。例如,骗子可能会设计一个伪装成合法操作的交易,如参与空投或活动,但实际上交易中包含了将用户资产转移给骗子的指令。用户在不知情的情况下签署了这样的交易,但用户会发现在区块上根本没有该交易的发生,因为攻击者只是拿到了该交易的签名,交易本身并没有被发送到区块链上,他们可以在之后的时间里随时将交易广播上链。但是,无论交易是否发生,我们发现这种类型的签名并不会影响交易模拟的结果判断,几个主流钱包依旧能够将交易本身进行模拟和解析并且告知结果,因此我们之前对于交易模拟结果的判断还是有效的方法论。
但是,我们依旧发现了一种极其隐蔽并且复杂的攻击方法,能够「瞒天过海」
合约升级逃避交易模拟检测
这个方法就是结合了 Durable Nonce 以及 Solana 合约特有的特性—— 可升级,这种攻击手段的潜在危险性因为可升级合约的特性被进一步的加大,Durable Nonce 机制通过创建一个持有长期有效 nonce 值的账户,允许交易在更长的时间窗口内保持有效。这意味着即使用户在签署交易的时候不立即发送到区块链上,交易仍然可以在未来任何时候被广播和执行。攻击者可以利用这一点,首先让用户签署一个看似正常的合约交易,这个交易在签名时看起来完全无害,即使是主流的钱包和交易模拟工具也难以在签名时提前警告用户。然而,在用户签署交易后,攻击者成功拿到了 Durable Nonce 的签名。此时,他们并不着急将交易广播上链,而是利用 Solana 的合约升级功能,将原本正常的合约变更为一个恶意的版本。这种恶意合约能够执行例如资产转移等操作。在进行升级后,攻击者再将签好的交易发到区块链上,来执行该恶意操作,达到自己的目的。这种类型的攻击特别隐蔽,对用户来说构成了极大的隐患,因为即使是经验丰富的用户在签署交易时也可能无法识别出潜在的风险。为了防范这种攻击,用户需要对合约的信誉和历史进行仔细审查,对任何不寻常的交易行为保持怀疑态度,避免与不明来源或新成立的合约进行交互。同时也希望所有 Solana 的钱包能够注意该攻击手段,及时的在钱包侧能够形成有效的提醒和对用户资产的保护。
防范措施
在面对 Solana 网络中的钓鱼攻击时,以下是一些综合性的防范措施,可以帮助最大限度地减少风险:
提高安全意识: 对于任何加密货币相关的交易,始终保持高度警惕。了解 Solana 钓鱼攻击的常见手段,如诱导转移代币、代币账户所有权转移、骗取交易签名等。
仔细检查交易细节: 在进行任何交易之前,认真检查交易的具体内容。对于使用 Durable Nonce 或涉及合约交互的交易,应额外小心。
使用交易模拟功能: 利用钱包提供的交易模拟功能,仔细审阅交易模拟结果。但要注意,这不是万无一失的保护措施,因为存在部分交易模拟失效的情况。
关注授权变化: 对于非交易后代币余额发生变化的操作,也要保持警惕。在不熟悉的网站或应用上,特别要小心授权变化的操作。
定期取消无用授权:通过 Solana Revoke 的工具,定期取消一些无用的授权,保障资产的安全。
定期更新知识: 定期更新自己关于区块链和加密货币的知识,特别是关于新出现的钓鱼手段和防范策略。
保持软件更新: 使用的钱包和相关软件应保持最新状态,以确保拥有最新的安全特性和修复。
备份和保护私钥: 保护好自己的私钥和重要信息,避免在不安全的地方存储或分享。
同时,GoPlus 安全团队呼吁 Solana 公链及其生态深度关切用户安全,加快提升用户安全的基础设施建设,给用户提供更安全的交易环境,从而实现生态的稳定和繁荣。
文章来源于互联网:这份Solana防钓鱼指南请收好