返回论坛

警惕 Solana 钓鱼攻击:钱包 Owner 权限被篡改的技术分析与防护指南

查找币 漏洞披露 安全研究 Web3安全 区块链安全

查找币安全研究院

钱包恢复评估 | 链上取证分析 | Web3 事件响应
以合法授权、证据保全、隐私保护和可复核流程为前提,不要求用户在线提交完整私钥或助记词。

查看研究院 研究报告中心
## 事件背景 近期,查找币安全团队接到一起严重的安全事件求助。一位用户在遭遇钓鱼攻击后,发现其钱包中出现了异常授权记录,但尝试撤销授权时屡屡失败。受影响的钱包地址为 `9w2e3kpt5XUQXLdGb51nRWZoh4JFs6FL7TdEYsvKq6Wb`。通过链上分析,我们确认该账户的 **Owner 权限** 已被转移至攻击者控制的地址 `GKJBELftW5Rjg24wP88NRaKGsEBtrPLgMiv3DhbJwbzQ`。 该用户已有超过 **300 万美金** 的资产被盗,另有约 **200 万美金** 的资产被锁定在 DeFi 协议中无法转移(后续在相关 DeFi 协议协助下成功救援)。受害者曾尝试向自身地址发起转账以验证账户控制权,但所有交易均以失败告终。 这一攻击模式与 TRON 生态中频繁出现的“恶意多签”攻击高度相似。与传统“授权被盗”不同,本次攻击的核心在于 **核心权限(Owner 权限)被替换**,导致受害者即便持有私钥,也无法执行任何转账、撤销授权或操作 DeFi 资产的操作。资金虽“看得见”,却已完全失控。 ## Solana Owner 修改机制详解 攻击者利用了两种反直觉的场景诱骗用户签名: 1. **交易模拟的误导**:通常,钱包在用户签名时会模拟交易执行结果,显示资金变动。但攻击者精心构造的交易 **不包含资金变动**,用户因此放松警惕。 2. **用户认知盲区**:传统以太坊 EOA 账户的私钥直接控制所有权,许多用户并不了解 Solana 存在“修改账户所有权”的特性。 ### 账户所有权的底层逻辑 在 Solana 中,普通用户通过钱包创建的账户,其 Owner 默认为 **系统账户**(`11111111111111111111111111111111`)。交易时,系统会验证签名是否由对应的公钥签署。使用 `solana account` 命令可查看账户基本信息: ``` solana account 9w2e3kpt5XUQXLdGb51nRWZoh4JFs6FL7TdEYsvKq6Wb ``` 另一种账户类型是 **PDA 账户**(Program Derived Account),由智能合约派生,主要用于存储合约数据。其 Owner 通常是派生它的智能合约(如 Token 合约 `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA`),也可额外指定。 ### 普通账户的 Owner 修改 普通账户无法通过外部命令或脚本直接修改 Owner,但可以通过 **智能合约调用** 实现。关键指令为 `assign`: ```rust let assign_ix = system_instruction::assign( account_to_assign.key, &new_owner, ); ``` 该指令将账户的 Owner 从当前值改为 `new_owner`。部署程序后,攻击者通过 Solana CLI 或 Web3.js 诱导受害者签名包含 `assign` 指令的交易,从而 **悄无声息地完成 Owner 转移**。本次钓鱼事件正是利用这一特性。 ### PDA 账户的 Owner 修改 PDA 账户也可通过 `assign` 指令修改 Owner,但要求账户的 **data 字段为空**。我们测试了以下场景: | 场景 | 结果 | |------|------| | 新创建的 PDA 账户 | 可任意指定 Owner;若 Owner 非派生它的 Program,则 Program 无写入权限 | | 创建完成后尝试修改 Owner | 报错:`instruction illegally modified the program id of an account` | | 写入数据后尝试 assign | 报错:`instruction modified data of an account it does not own` | 但需注意:PDA 的签名权限基于 **派生过程**(seeds + program ID),而非 Owner 字段。只要程序能生成正确的 PDA 地址和 bump,即可在交易中代表 PDA 签名。 ### 另一种常见的所有权变更:Token 账户 Token 账户的所有权变更本质上是 **智能合约内部的逻辑控制**,而非 Solana 底层的 Owner 修改。这种攻击模式也常被用于钓鱼,用户需保持警觉。 ## 查找币追踪系统的技术洞察 (此处为精简内容,查找币追踪系统在事件中协助定位攻击链与资产流向,具体细节因涉及内部技术暂不展开。) ## 防护建议 1. **警惕异常签名请求**:在点击链接或确认签名前,务必验证来源是否可信。如果钱包弹窗内容包含陌生地址、奇怪权限或无法理解的授权请求,立即停止操作。 2. **分离资产与交互账户**:将大额资产存放在独立钱包或冷钱包中,使用“低余额、仅用于交互”的小号进行任务、空投等操作。即便误签,也能将损失降至最低。 3. **限制授权范围**:尽量避免“无限授权”,优先选择限制金额或范围的授权方式,减少攻击者长期滥用的空间。 4. **遇异常立即止损**:一旦发现异常授权或账户行为,立即停止所有交互,不要抱有侥幸心理。 ## 结语 Solana 生态的 Owner 修改机制是一把双刃剑:它为开发者提供了灵活性,但也为钓鱼攻击者创造了可乘之机。用户需要理解:**私钥不等于绝对控制权**,核心权限的转移可能让私钥沦为“无用之物”。多看一眼、多确认一次、不乱点、不乱签,是保护自身资产的第一道防线。 推荐阅读:《区块链黑暗森林自救手册》 (https://darkhandbook.io/) --- 本文由查找币安全团队整理发布
在论坛中查看和回复