Web3安全指南:防范TRON钱包恶意多签风险
数字资产的安全一直是Web3世界中最受关注的话题。在之前的Web3安全指南中,我们讨论了钱包下载风险、真官网辨别以及私钥保护等内容。但即便你妥善保管了私钥和助记词,依然可能面临资产无法控制的困境——这就是恶意多签带来的风险。根据MistTrack收集的被盗案例,不少用户发现自己的钱包明明有余额,却无法转出资金,正是由于钱包被恶意多签所致。今天,我们就以TRON钱包为例,深入解析多签机制、黑客操作手法以及如何有效防范这类风险。
背景
在上一期 Web3 安全入门避坑指南中,我们主要讲解下载/购买钱包时的风险,找到真官网和验证钱包真伪的方法,以及私钥/助记词的泄露风险。我们常说 "Not your keys, not your coins",但也存在即使你有私钥/助记词,也无法控制自己资产的情况,即钱包被恶意多签了。结合我们收集到的 MistTrack 被盗表单,一些用户的钱包被恶意多签后,不明白为什么自己钱包账户里还有余额,却无法把资金转出。因此,本期我们将以 TRON 钱包为例,讲解多签钓鱼的相关知识,包括多签机制、黑客的常规操作及如何避免钱包被恶意多签等内容。

多签机制
让我们先简单解释下多签是什么。多签机制原本是为了让钱包更加安全而设计的,它允许多个用户共同管理和控制同一个数字资产钱包的访问和使用权限。这样一来,即便部分管理者丢失或泄露了私钥/助记词,钱包里的资产也不一定会受损。
TRON 的多重签名权限系统设计了三种不同的权限:Owner、Witness 和 Active,每种权限都有特定的功能和用途。
Owner 权限
- 拥有执行所有合约和操作的最高权限;
- 只有拥有该权限才能修改其他权限,包括添加或移除其他签名者;
- 创建新账户后,默认为账户本体拥有该权限。
Witness 权限
这个权限主要与超级代表(Super Representatives) 相关,拥有该权限的账户能够参与超级代表的选举和投票,管理与超级代表相关的操作。
Active 权限
用于日常操作,例如转账和调用智能合约。这个权限可以由 Owner 权限设定和修改,常用于分配给需要执行特定任务的账户,它是若干授权操作(比如 TRX 转账、质押资产)的一个集合。
上文中提到,新建账户时,该账户的地址会默认拥有 Owner 权限(最高权限),可以调整账户的权限结构,选择将该账户的权限授权给哪些地址,规定这些地址所占权重的大小,以及设置阈值。阈值是指需要签名方权重到达多少才能执行特定操作。在下图中,阈值设置为 2,3 个被授权地址的权重都为 1,那么在执行特定操作时,只要有 2 个签名方的确认,这个操作就可以生效。

(https://support.tronscan.org/hc/article_attachments/29939335264665)
恶意多签的过程
黑客获取用户私钥/助记词后,如果用户没有使用多签机制(即该钱包账户仅由用户一人控制),黑客便可以将 Owner/Active 权限也授权给自己的地址或者将用户的 Owner/Active 权限转移给自己,黑客的这两种操作通常都被大家称为恶意多签,但其实这是一个广义的说法,实际上,可以根据用户是否还拥有 Owner/Active 权限来区分:
利用多签机制
下图中,用户的 Owner/Active 权限未被移除,黑客给自己的地址授权了 Owner/Active 权限,此时账户由用户和黑客共同控制(阈值为 2),用户地址和黑客地址的权重都为 1。用户虽然持有私钥/助记词,也有 Owner/Active 权限,但无法转移自己的资产,因为用户发起转出资产请求时,需要用户和黑客的地址都签名,这个操作才能正常执行。

虽然被多签的账户执行转出资产的操作需要多方签名的确认才可以实现,但是向钱包账户入账是不需要多方签名的。如果用户没有定期检查账户权限情况的习惯或者近期没有转出操作的话,一般不会发现自己钱包账户的授权被更改,那么便持续受损。如果钱包内的资产不多,黑客可能会放长线钓大鱼,等待该账户积累了一定数字资产后,再一次性盗取所有数字资产。
利用TRON的权限管理设计机制
还有一种情况是黑客利用 TRON 的权限管理设计机制,直接将用户的 Owner/Active 权限转移给黑客地址(阈值仍为 1),使得用户失去 Owner/Active 权限,连"投票权"都没有了。需注意,此处黑客并不是利用多签机制使得用户无法转移资产,但大家习惯上称这种情况也为钱包被恶意多签。

以上两种情况造成的结果是一样的,无论用户是否还拥有 Owner/Active 权限,都失去了对该账户的实际控制权,黑客地址获得了账户的最高权限,可实现更改账户权限、转移资产等操作。
恶意多签的途径
结合 MistTrack 收集到的被盗表单,我们总结出了几种钱包被恶意多签的常见原因,希望用户遇到以下几种情况时,提高警惕:
1. 在下载钱包时,未能找到正确的途径,点击了电报、推特、网友发送的假官网链接,下载到假钱包,结果私钥/助记词泄露,钱包被恶意多签。

2. 用户在一些出售加油卡、礼品卡、VPN 服务的钓鱼充值网站输入了私钥/助记词,结果失去自己钱包账户的控制权。

3. OTC 交易时,被有心之人拍到私钥/助记词或以某手段获取账户的授权,随后钱包被恶意多签,资产受损。

4. 一些骗子把私钥/助记词提供给你,称他无法提取钱包账户里的资产,如果你能帮忙的话可以给你酬劳。虽然这个私钥/助记词对应的钱包地址确实存在资金,但无论你给多少手续费、手速多快都提不走,因为提币权限被骗子配置给了另一个地址。

5. 还有一种较为少见的情况是用户在 TRON 上点击了钓鱼链接,签名了恶意的数据,随后钱包被恶意多签。

总结
在本期指南中,我们主要以 TRON 钱包为例,讲解了多签机制、黑客实施恶意多签的过程和套路,希望帮助大家加深对多签机制的理解和提高防范钱包被恶意多签的能力。当然,除了被恶意多签的情形之外,还存在一些比较特别的案例,有的新手用户可能因操作不慎或缺乏了解,误将钱包设置成了多签,导致需要多个签名才能进行转账。此时,用户仅需满足多签要求或在权限管理处将 Owner/Active 权限只授权给一个地址,恢复单签即可。

最后,慢雾安全团队建议广大用户定期检查账户权限,查看是否有异常;从官方途径下载钱包,我们在Web3 安全入门避坑指南|假钱包与私钥助记词泄露风险里讲过如何找到正确的官网和验证钱包的真伪;不点击不明链接,更不轻易输入私钥/助记词;安装杀毒软件(如卡巴斯基、AVG 等)和钓鱼风险阻断插件(如 Scam Sniffer),提高设备安全性。
在Web3世界中,保护数字资产安全需要我们不断学习和警惕。多签机制本是为了增强安全性而设计,却被黑客利用成为控制用户钱包的工具。通过了解TRON钱包的权限结构和恶意多签的工作原理,我们可以更好地识别潜在风险并采取相应的防护措施。记住,安全意识的提升和良好的操作习惯,是保护数字资产最有效的防线。希望本指南能帮助大家在Web3世界中更加安全地管理自己的数字资产。
相关问答
以下是根据文章内容整理的10个相关问题及其答案:
1. 什么是多签机制?它的初衷是什么?
答:多签机制是允许多个用户共同管理和控制同一个数字资产钱包的访问和使用权限的系统。它的初衷是为了让钱包更加安全,即使部分管理者丢失或泄露了私钥/助记词,钱包里的资产也不一定会受损。
2. TRON钱包有哪几种权限?各自的功能是什么?
答:TRON钱包有三种权限:Owner权限(最高权限,可执行所有合约和操作,修改其他权限)、Witness权限(与超级代表相关,可参与选举和投票)和Active权限(用于日常操作如转账和调用智能合约)。
3. 什么是恶意多签?用户为什么会失去对钱包的控制?
答:恶意多签是指黑客获取用户私钥/助记词后,将自己的地址授权为Owner/Active权限或将用户的这些权限转移给自己,导致用户虽然持有私钥/助记词却无法控制钱包资产的情况。
4. 钱包被恶意多签后,为什么账户里还有余额却无法转出?
答:因为黑客设置了多签权限,转出资产需要多个签名方的确认。在用户和黑客共同控制的情况下,用户发起的转出请求需要黑客的签名才能执行,而黑客自然不会配合签名。
5. 黑客通常通过哪些途径实施恶意多签?
答:常见途径包括:诱导用户下载假钱包、在钓鱼充值网站输入私钥/助记词、OTC交易时获取私钥/助记词、提供有资金但无法提取的钱包私钥诱骗用户、以及让用户点击钓鱼链接签名恶意数据等。
6. 如何检查自己的TRON钱包是否被恶意多签?
答:用户应定期检查账户权限设置,查看是否有异常授权地址,确认Owner和Active权限是否只授权给自己信任的地址,以及阈值设置是否合理。
7. 如果误将钱包设置成了多签,如何恢复单签?
答:用户可以在权限管理处将Owner/Active权限只授权给一个地址,恢复单签状态,或者满足当前的多签要求完成转账操作。
8. 为什么向被恶意多签的钱包转入资金不受影响?
答:因为向钱包账户入账不需要多方签名的确认,只有转出资产才需要多方签名。这也是为什么黑客可能会"放长线钓大鱼",等待账户积累更多资产后再一次性盗取。
9. 除了防范恶意多签,还有哪些保护钱包安全的建议?
答:建议从官方途径下载钱包,不点击不明链接,不轻易输入私钥/助记词,安装杀毒软件和钓鱼风险阻断插件,定期检查账户权限,提高设备安全性。
10. "Not your keys, not your coins"这句话在恶意多签情况下还适用吗?
答:这句话在恶意多签情况下需要重新理解。即使你拥有私钥/助记词(keys),如果钱包被恶意多签,你可能仍然无法控制资产(coins)。这表明在Web3世界中,仅仅保管好私钥是不够的,还需要关注钱包的权限设置。