作者:OneKey

自測一下,你是不是還認爲:只要不是發起交易,我籤個名「連接登陸」網站,就不會丟失資產?

 

如果你點頭了,那可能你的安全意識停留在了 21 年前。

 

從 Scam Sniffer 公佈的 24 年 3 月釣魚報告*來看,90% 的被釣魚資產爲 ERC-20 代幣。而這其中主要的釣魚方式就是 Permit / Permit2 釣魚簽名。

 

僅僅是今年 3 月中旬,就有 4 筆價值平均資產約 $2M 的被盜交易,其中 3 筆都是被 Permit 釣魚簽名盜走的 Pendle PT 本金代幣。

 

從受害者的角度,這簡直就是一部恐怖片——某天突然發現資產被轉走,檢查了一圈以爲是私鑰被盜了,最後才發現是曾經一個不經意的離線簽名,無可奈何。

 

而這一切,本可以被避免。

 

一句話說明白 Permit / Permit2

 

爲了節約時間,OneKey 在這裏不會講太多 EIP-2612 引入 Permit 或者 Uniswap 推出 Permit2 的加密「課本知識」。(可能你光看這句話就開始頭疼了)

 

你只需要意識到:時代變了,「濃眉大眼」的簽名也不簡單。

 

你可以直接粗暴理解爲 —— 現在不少的 ERC-20 代幣授權將通過一個「中介」來管理。

 

在以前,你的代幣額度,是一個個授權(Approve)給每個 dApp 合約的。而每一次授權,都需要花費 Gas。

 

而現在,通過 Permit / Permit2 技術(已經有相當數量的 dApp 採用),你只需要把代幣授權給 Permit / Permit2 這個「中介」。

 

集成了這個技術的 dApp 都可以請求用這個授權額度——只需要簡單籤個名就能授權給它們(甚至是批量的),不需要一次又一次花費 Gas 授權。

 

一把雙刃劍

 

這個類型的簽名升級,雖然對於跨應用操作帶來了便利並節約成本,有各式各樣的好處。但是也留下了一些隱患。

 

其危險之處就在於,上一輪牛市,加密用戶們已經養成了「登入 Dapp 需要簽名進行連接」的操作習慣,並且默認普通簽名就是安全的、毫無防備之心。

 

殊不知,新版本的簽名如果不注意區分(盲籤),就會中招釣魚。這對於用戶安全意識和各種基礎設施如錢包,提出了新的挑戰。

 

對於黑客來說,那就是可以更好地「借刀殺人」了。

 

攻擊者只需要部署一個釣魚合約,向你獲取一個 Permit 授權簽名,即可隨後提交一個盜走你資產的交易(甚至可以等過幾天你忘記了這件事再提交)。並且, Permit2 還可以讓黑客批量獲取你的全部已授權代幣的權限。

 

例如最近 SlowMist 創始人餘弦分享的這個案例(https://x.com/evilcos/status/1771338665052287307),某用戶在質押期間被簽名釣魚了相關代幣的授權,而自己一無所知(也沒有注意檢查),黑客在其提出代幣到自己錢包的時候,立刻盜走了資產,損失慘重。

 

從僞裝手段上看,似乎釣魚也變得更簡單了一些。他們完全可以做一個「空投檢查」網站,讓你「連接錢包」查看空投。或者是,做一個工具網站讓你登陸,以滿足你在某些熱點事件/項目中的需求。花樣無窮無盡。而使用過程中,你很可能就被誘導做了 Permit / Permit2 類型的簽名。

 

展望未來,隨着以太坊推進賬戶抽象(EIP-3074 正式納入下次 Pectra 硬分叉升級),你甚至還可以直接授權整個地址控制權限給一個合約,讓合約地址直接操作用戶的錢包地址。這也一樣會在便利的同時引入新的釣魚風險。

 

當然,這是後話了。

 

如何這種類型的釣魚預防?有後悔藥嗎?

 

關於 Permit / Permit2 釣魚的預防方法,已經有無數的推文、文章寫過。在這裏我們也是不厭其煩地再次總結——這很值得。

 

1、不要盲籤

 

就和現實世界裏的有法律效力的合同一樣,沒有人會隨意給出自己的簽名。

 

識別僞裝的釣魚網站屬於是加密安全的基操了。而陌生土狗網站的「登陸請求」也一樣要小心,黑客會想盡辦法僞裝按鈕的意圖,誘騙你簽名。

 

大家常用的小狐狸是可以識別出 Permit/ Permit2 簽名的,如果你交互的 dAPP 彈出了這個類型的簽名,那最好再三確認你是否要授權相關的代幣。如果只是普通的簽署消息,是不可能彈出特別類型的簽名的。

 

除了 Permit 類之外,還有 increaseAllowance、多 dApp 組合操作甚至是 0x 開頭的完全無可讀性的各種簽名,都有可能危害到你的資產安全。

 

總之,如果不清楚彈出來的簽名的內容和後果,一定要慎之又慎,尤其是錢包內的資產比較多的情況。

 

2、乾溼分離

 

常在河邊走,哪有不溼鞋。

 

喜歡在小網站「無視風險警告」打土狗的你,如果實在要經常發生「高危行爲」,那就做好資產的隔離。

 

經常用於交互的小錢包,不存放大量資產。舉個不太恰當的比喻,你外出隨意逛街的時候,肯定不會把家當帶在身上,錢包裏只會放一些小錢。

 

並且每隔一段時間,就換整理資產、換新錢包,以及取消授權和簽名,儘可能地降低自己的風險敞口。

 

對於存放大量資產的錢包,就不要隨意「連接」網站。或者就乾脆放在硬件錢包中冷保存,需要地時候專門轉出進行交互。這也是老生常談的預防釣魚的方式了。

 

3、檢查授權

 

如果不是高強度使用,在第一次授權 Permit / Permit2 代幣額度的時候,建議選擇按需授權。也就是使用多少授權多少,而不是默認的最大(無限)額度。

 

已經授權了 Permit / Permit2 無限額度的,也是有後悔藥可以喫。你可以在 http://Revoke.Cash 中檢查自己的代幣授權風險敞口——你會明確地看到某個代幣授權給 Permit / Permit2 多少額度。

 

該工具也支持取消簽名,你也可以在其中找到簽名來取消(在黑客激活相關簽名偷走你的資產之前)。

 

要注意的是,Permit 類型的簽名是一種離線簽名,在被使用之前,鏈上是沒有痕跡的(黑客通常會在服務器上儲存這些偷來的簽名)。

 

定期使用工具檢查授權與簽名是個好習慣。

 

結語

 

如果你不幸中招了,最好及時尋求專業安全團隊如 SlowMist @SlowMist_Team 的幫助,及時轉移資產和亡羊補牢,把損失最小化。甚至是使用一些技術手段搶救資產。

 

值得注意的是,這些簽名釣魚已經趨向於專業化、產業化,分工分贓明確。如果資產已經被專業的 Drainer 黑客團隊轉移並洗錢,很大的概率是拿不回來的!所以還得是防患於未然,不讓他們有任何可趁之機。