從解藥到毒藥:Permit為何變成風險之源?

作者:Keystone 來源:X,@KeystoneCN

1.一分鐘認識Permit 是什麼

我們先從一個借錢小故事開始說起:

我準備向好朋友傑克馬借100 萬,傑克馬二話不說拿起電話打給銀行,確認身份後告知銀行:我要授權給某某100 萬的提款額度,銀行回複收到授權並記錄在案。

下一步我只需要去銀行,告知櫃檯準備拿走傑克馬給我授權的100 萬。這時銀行會查閱有沒有授權紀錄並在確認我就是某某某後,把100 萬給到我。

這個小故事可以視為ETH 上Approve 授權的具象化。在這個過程中,授權只能由傑克馬(資產所有人)打電話告知銀行進行授權(上鍊),並由銀行(Token 合約)管理這些授權,之後我(被授權方)才能從銀行轉走不高於授權金額錢。如果銀行沒有查到授權記錄的話,我的提款申請毫無疑問會被拒絕。

好了,接下來如果換成另一種授權方法——Permit,向傑克馬借錢的話,流程會有什麼變化?

這次我一開口又要藉100 萬,大方的傑克馬也懶得打電話了,從口袋裡掏出一本支票,填寫金額並簽名之後給了我。我拿著這張支票去到銀行兌換,此時儘管銀行沒有授權記錄,但是憑藉著支票上傑克馬的簽名,銀行確認了支票的真實性,將指定金額的錢兌換給了我。

相信小夥伴們已經看出了二者在流程上的差異,Approve 作為ERC-20 中重要功能,在ETH 上線後不久就已經被廣泛應用了,為什麼後來還要在ERC-2612 中引入Permit 方法來實現相同效果的特性?

2.為何需要Permit?

ERC-2612 提案自2019 年3 月被提出,直到2022 年10 月完成最後審查,它的上線和這段期間ETH 主網上的gas 價格經歷了多次暴漲有著密不可分的關係。

圖:ETH 主網gas price 在2020-2022 年期間居高不下

狂暴牛市疊加鏈上新項目的造富效應,用戶鏈上的交易熱情高漲,並且願意付出更高的手續費來讓交易更快上鍊,因為有時提前一個區塊上鍊往往意味著更高倍的收益。

但這種現象的後果是用戶在鏈上交易代幣的時候,往往需要頂著高昂的gas 費用進行,在Approve 的方法流程下,需要2 個TX 才能完成一次代幣Swap,對於資金量小的用戶來說,花費的交易費用簡直是惡夢般的存在。

而ERC-2612 引入的Permit,將授權的過程改為了離線簽名,不需要立刻上鍊,只需要在轉移代幣的時候一起提供,就像藉錢小故事中拿到了傑克馬支票的我,只有在提款的時候才需要把支票給銀行驗證。

大忙人傑克馬省下了一通電話,看起來用戶也省了一次TX,在gas 價格高的時候節省的費用相當可觀,似乎是個皆大歡喜的結局。但殊不知,潘朵拉的魔盒也在悄悄地打開…

3.火山爆發般的野蠻生長

在Permit 出現之前,駭客釣魚幣圈用戶的手段之一便是誘導用戶簽署Approve 交易,這樣的交易需要用戶花費gas,容易引起警覺而無法得逞。就算用戶一時手快點擊了,由於交易上鍊需要一定時間,回過神來的用戶也可以馬上提交一筆相同nonce 的交易來搶救,相對來說黑客得手並不那麼輕鬆。

而Permit 的出現,對駭客來說無疑是瞌睡遇枕頭,相比較於Approve,Permit 不消耗gas,只需要簽名,用戶的警覺性降低。同時由於離線簽名的特性,主動權掌握在駭客手上,不僅使用者吃不了後悔藥,駭客更可以拿著授權選擇合適的時機做壞事,將利益最大化。

由此而帶來的不良影響,便是我們可以看到的釣魚受害者數量以及被盜金額激增。據@ScamSniffer 的統計數據:

2023 年釣魚受害者損失金額為2.95 億美元。

在2024 的上半年,這筆金額就已經超過3.14 億美元之多。

在2024 的Q3 尾聲,更是來了一票大的:疑似神魚的錢包地址遭遇Permit 釣魚攻擊,損失1.2 萬枚$spWETH,價值2 億人民幣。

圖:ScamSniffer 2024 上半年釣魚攻擊統計報告

如此景象,相信也出乎當初提案開發者的意料,引入Permit 的初衷是減少用戶的gas 花費,提高用戶體驗和效率,本以為是雙刃劍有得便有失,沒想到卻是一把大菜刀,單邊鋒利無比,直接給用戶資產安全的護盾上砍開了一個大口子。

類似Permit 這種簽章授權的方法還有不少,像是Uniswap 之後推出的Permit2,讓所有ERC-20 的代幣都可以支援離線簽章。作為No.1 的DEX,UniSwap 此舉也加重了用戶對於離線簽名的依賴,增加了被釣魚的風險。

4.如何防範?

那麼,身為一般用戶,面對這把高懸在我們頭頂的達摩克里斯之……大菜刀,又有哪些可以避免損失防範措施呢?

1、提升意識

冷靜對待空投誘惑

幣圈項目方空投確實很香,但大多數時候都是假空投之名的釣魚攻擊,在遇到這類信息時,千萬不要被沖昏頭腦直接就“領取”,通過多方來源確認空投的真實性和官方網址,避免誤入釣魚網站。

避免盲簽

假如不幸進入了釣魚網站,尚不知情的你在錢包彈出交易窗口時,應當仔細查看交易內容,當出現如Permit、Permit2、Approve、IncreaseAllowance 等字眼時,意味著這筆交易是要拿走token 授權,你就要警覺了,因為正常的空投流程並不需要這麼做。 Keystone 在硬體端也實現了交易的解析與展示,使用者可以藉助交易解析避免盲簽,避免一時衝動造成的嚴重後果。

圖:Keystone 硬體錢包與Rabby Wallet 解析並顯示Permit2 簽章交易

2.善用工具

ScamSniffer

身為一般用戶,想精準辨識釣魚網址有很高難度,難免會有漏網之魚存在。透過ScamSniffer 的瀏覽器插件,在進入疑似釣魚的網址前,會收到插件的提醒,用戶收到提醒後可以及時停止互動。

Revoke

Revoke.cash 可以展示用戶錢包裡的代幣授權記錄,對於其中可疑的、無限金額的授權我們建議撤銷。養成定期清理授權的習慣,盡量少做超出需要數量的授權。

3、資產隔離與多簽

常言道不要把雞蛋都放在同一個籃子裡,這句話也適用於幣圈資產。例如我們可以把大額的資產存放在冷錢包如Keystone 中,日常互動都是用小額的熱錢包進行,即使不小心中招,資產也不會被一鍋端。

如果對於安全性有更高的要求,可以使用多簽來進一步提高安全性。加入了多簽的資產,只有在錢包同意數達到門檻時,才能對資產進行操作轉移。未達門檻的單一錢包被盜,駭客也無法掌握資產。

5.結語

我們無法否認Permit 帶來的價值,但近來越來越多的被盜事件也表明,它帶來的危害似乎更大。正如曾經的ethsign 方法,由於可讀性差且危害巨大,也備受當時的駭客青睞。而如今它已經被絕大多數的錢包軟體屏蔽棄用,它實現的功能也被一些更安全的方法所取代。

把目光放在Permit 身上,是否也同樣走到了ethsign 曾經面臨的十字路口?改良升級還是棄用,需要ETH 的開發者們花一些時間去思考與討論。

Total
0
Shares
Related Posts