熱門資訊> 正文
2024-10-17 20:55
作者:Keystone 來源:X,@KeystoneCN
我們先從一個借錢小故事開始説起:
我準備向好朋友傑克馬借 100 萬,傑克馬二話不説拿起電話打給銀行,確認身份后告知銀行:我要授權給某某某 100 萬的提款額度,銀行回覆收到授權並記錄在案。
下一步我只需要去到銀行,告知櫃檯準備取走傑克馬給我授權的 100 萬。這時銀行會查閲有沒有授權記錄並在確認我就是某某某后,把 100 萬給到我。
這個小故事可以視為 ETH 上 Approve 授權的具象化。在這個過程中,授權只能由傑克馬(資產所有人)打電話告知銀行進行授權(上鍊),並由銀行(Token 合約)管理這些授權,之后我(被授權方)才能從銀行轉走不高於授權金額錢。假如銀行沒有查到授權記錄的話,我的提款申請毫無疑問會被拒絕。
好了,接下來如果換成另外一種授權方法——Permit,向傑克馬借錢的話,流程會有什麼變化?
這次我一開口又要借 100 萬,大方的傑克馬也懶得打電話了,從口袋里掏出一本支票,填寫金額並簽名之后給了我。我拿着這張支票去到銀行兑換,此時儘管銀行沒有授權記錄,但是憑藉着支票上傑克馬的簽名,銀行確認了支票的真實性,將指定金額的錢兑付給了我。
相信小夥伴們已經看出了二者在流程上的差異,Approve 作為 ERC-20 中重要功能,在 ETH 上線后不久就已經被廣泛應用了,為什麼后來還要在 ERC-2612 中引入 Permit 方法來實現相同效果的特性?
ERC-2612 提案自 2019 年 3 月份被提出,直到 2022 年 10 月完成最后審查,它的上線和這期間 ETH 主網上的 gas 價格經歷了多次暴漲有着密不可分的關係。
狂暴牛市疊加鏈上新項目的造富效應,用户鏈上的交易熱情高漲,並且願意付出更高的手續費來讓交易更快上鍊,因為有時候提前一個區塊上鍊往往意味着更高倍的收益。
但這種現象的后果是用户在鏈上交易代幣的時候,往往需要頂着高昂的 gas 費用進行,在 Approve 的方法流程下,需要 2 個 TX 才能完成一次代幣 Swap,對於資金量小的用户來説,花費的交易費用簡直是噩夢般的存在。
而 ERC-2612 引入的 Permit,將授權的過程改爲了離線簽名,不需要立刻上鍊,只需要在轉移代幣的時候一起提供,就像借錢小故事中拿到了傑克馬支票的我,只有在取款的時候才需要把支票給銀行驗證。
大忙人傑克馬省下了一通電話,看起來用户也省了一次 TX,在 gas 價格高的時候節省的費用相當可觀,似乎是個皆大歡喜的結局。但殊不知,潘多拉的魔盒也在悄悄地打開……
在 Permit 出現之前,黑客釣魚幣圈用户的手段之一便是誘導用户簽署 Approve 交易,這樣的交易需要用户花費 gas,容易引起警覺而無法得逞。就算用户一時手快點擊了,由於交易上鍊需要一定時間,回過神來的用户也可以馬上提交一筆相同 nonce 的交易來搶救,相對來説黑客得手並不那麼輕松。
而 Permit 的出現,對黑客來説無疑是瞌睡遇枕頭,相比較於 Approve,Permit 不消耗 gas,只需要簽名,用户的警惕性降低。同時由於離線簽名的特性,主動權掌握在黑客手上,不僅用户吃不了后悔藥,黑客更可以拿着授權選擇合適的時機做壞事,將利益最大化。
由此而帶來的不良影響,便是我們可以看到的釣魚受害者數量以及被盜金額激增。據 @ScamSniffer 的統計數據:
2023 年釣魚受害者損失金額為 2.95 億美元。
在 2024 的上半年,這一金額就已經超過 3.14 億美元之多。
在 2024 的 Q3 尾聲,更是來了一票大的:疑似神魚的錢包地址遭遇 Permit 釣魚攻擊,損失 1.2 萬枚 $spWETH,價值 2 個億人民幣。
如此景象,相信也出乎當初提案開發者的意料,引入 Permit 的初衷是減少用户的 gas 花費,提高用户體驗和效率,本以為是雙刃劍有得便有失,沒想到卻是一把大菜刀,單邊鋒利無比,直接給用户資產安全的護盾上砍開了一個大口子。
類似 Permit 這種簽名授權的方法還有不少,比如 Uniswap 之后推出的 Permit2,讓所有 ERC-20 的代幣都可以支持離線簽名。作為 No.1 的 DEX,UniSwap 此舉也加重了用户對於離線簽名的依賴,增加了被釣魚的風險。
那麼,作為普通用户,面對這把高懸在我們頭頂的達摩克里斯之……大菜刀,又有哪些可以避免損失防範措施呢?
冷靜對待空投誘惑
幣圈項目方空投確實很香,但大多數時候都是假空投之名的釣魚攻擊,在遇到這類信息時,千萬不要被衝昏頭腦直接就「領取」,通過多方來源確認空投的真實性和官方網址,避免誤入釣魚網站。
避免盲籤
假如不幸進入了釣魚網站,尚不知情的你在錢包彈出交易窗口時,應當仔細查看交易內容,當出現如 Permit、Permit2、Approve、IncreaseAllowance 等字眼時,意味着這筆交易是要拿走 token 授權,你就要警惕了,因為正常的空投流程並不需要這麼做。Keystone 在硬件端也實現了對交易的解析與展示,用户可以藉助交易解析避免盲籤,避免一時衝動造成的嚴重后果。
ScamSniffer
作為普通用户,想精準識別釣魚網址有很高難度,難免會有漏網之魚存在。藉助 ScamSniffer 的瀏覽器插件,在進入疑似釣魚的網址前,會收到插件的提醒,用户收到提醒后可以及時停止交互。
Revoke
Revoke.cash 可以展示用户錢包里的代幣授權記錄,對於其中可疑的、無限金額的授權我們建議撤銷。養成定期清理授權的習慣,儘量少做超出需要數量的授權。
常言道不要把雞蛋都放在一個籃子里,這句話對於幣圈資產也適用。比如我們可以把大額的資產存放在冷錢包如 Keystone 中,日常交互都是用小額的熱錢包進行,即使不小心中招,資產也不會被一鍋端。
如果對於安全性有更高的要求,可以使用多籤來進一步提高安全性。加入了多籤的資產,只有在錢包同意數達到閾值時,才能對資產進行操作轉移。未達到閾值的單一錢包被盜,黑客也無法掌握資產。
我們無法否認 Permit 帶來的價值,但近來越來越多的被盜事件也表明,它帶來的危害似乎更大。正如曾經的 ethsign 方法,由於可讀性差且危害巨大,也備受當時的黑客青睞。而如今它已經被絕大多數的錢包軟件屏蔽棄用,它實現的功能也被一些更安全的方法所替代。
把目光放在 Permit 身上,是否也同樣走到了 ethsign 曾經面臨的十字路口?改良升級還是棄用,需要 ETH 的開發者們花一些時間去思考和討論。
責任編輯:張靖笛