背景
在上一期 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 个签名方的确认,这个操作就可以生效。
恶意多签的过程
黑客获取用户私钥/助记词后,如果用户没有使用多签机制(即该钱包账户仅由用户一人控制),黑客便可以将 Owner/Active 权限也授权给自己的地址或者将用户的 Owner/Active 权限转移给自己,黑客的这两种操作通常都被大家称为恶意多签,但其实这是一个广义的说法,实际上,可以根据用户是否还拥有 Owner/Active 权限来区分:
利用多签机制
下图中,用户的 Owner/Active 权限未被移除,黑客给自己的地址授权了 Owner/Active 权限,此时账户由用户和黑客共同控制(阈值为 2),用户地址和黑客地址的权重都为 1。用户虽然持有私钥/助记词,也有 Owner/Active 权限,但无法转移自己的资产,因为用户发起转出资产请求时,需要用户和黑客的地址都签名,这个操作才能正常执行。
虽然被多签的账户执行转出资产的操作需要多方签名的确认才可以实现,但是向钱包账户入账是不需要多方签名的。如果用户没有定期检查账户权限情况的习惯或者近期没有转出操作的话,一般不会发现自己钱包账户的授权被更改,那么便持续受损。如果钱包内的资产不多,黑客可能会放长线钓大鱼,等待该账户积累了一定数字资产后,再一次性盗取所有数字资产。
利用TRON的权限管理设计机制
还有一种情况是黑客利用 TRON 的权限管理设计机制,直接将用户的 Owner/Active 权限转移给黑客地址(阈值仍为 1),使得用户失去 Owner/Active 权限,连“投票权”都没有了。需注意,此处黑客并不是利用多签机制使得用户无法转移资产,但大家习惯上称这种情况也为钱包被恶意多签。
以上就是Web3 安全入门避坑指南:钱包被恶意多签风险的详细内容,更多请关注本站其它相关文章!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。