在上一期 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 的權限管理設計機制,直接將使用者的Owner/Active 權限轉移給駭客位址(閾值仍為1),使得使用者失去Owner/Active權限,連「投票權」都沒有了。需注意,此處駭客並不是利用多簽機制使得用戶無法轉移資產,但大家習慣上稱這種情況也為錢包被惡意多簽。
以上是Web3 安全入門避坑指南:錢包被惡意多簽風險的詳細內容。更多資訊請關注PHP中文網其他相關文章!