白話解讀Web3籤名釣魚的底層邏輯:授權釣魚、Permit與Permit2的區別

2024-04-22 11:04:13

原文作者: 菠菜菠菜|bocaibocai(X: @wzxznl

明明只是籤了個名,我的錢怎么沒了呢??“籤名釣魚”目前正成為了Web3的黑客們最喜歡的釣魚方式,最近看余弦大佬 @evilcos 和各大錢包和安全公司都在不斷宣傳科普釣魚籤名的知識,但是每天還是有好多人被釣魚。

菠菜認為其中一個原因就是大部分人對錢包交互的底層邏輯並不了解,並且對於不懂技術的人來說學習門檻過高,所以菠菜決定出一個圖解版科普籤名釣魚的底層邏輯,並且嘗試用最大白話的形式讓不懂技術的人也能看明白。

首先我們要知道我們使用錢包一共只有兩種操作:“籤名”和“交互”。最簡單直接的理解就是:籤名是發生在區塊鏈之外的(鏈下),不需要花 Gas 費的;交互是發生在區塊鏈上面的(鏈上),是需要花 Gas 費的。

一般籤名的使用場景是為了驗證你是你,比如登入錢包,就像你如果要去 Uniswap 換 Token 的話,你需要先鏈接你的錢包,那么這個時候你就需要籤一個名告訴網站“我是這個錢包的擁有者”,然後你就可以使用 Uniswap 了,這個步驟對區塊鏈不會有任何數據或者狀態上的變化,所以不需要花錢。而交互的話就是當你要真正在 Uniswap 上換 Token 的時候,你需要先花一筆錢告訴 USDT 的合約:“我要用 100 USDT 換一個菠菜幣,我批准你可以挪動我的 100 USDT”,這個步驟就叫做授權(approve),然後你還要再花一筆錢告訴 Uniswap 的智能合約:“我現在要用 100 USDT 換一個菠菜幣了,你現在可以進行操作了”,然後你就完成了用 100 USDT 換一個菠菜幣的操作。

簡單理解籤名和交互的區別之後,我們就來介紹一下釣魚的原理,菠菜會列舉三個不同的方式:授權釣魚、Permit 籤名釣魚和 Permit 2 籤名釣魚,這三個是非常常見的釣魚方式。

咱們先講授權釣魚,這是以前Web3最經典的釣魚手法之一,顧名思義就是利用授權(approve)這個機制,之前 Uniswap 的例子告訴我們,授權就是告訴智能合約“我批准你挪動我多少 xxx 的 Token”,那么黑客就可以做一個假的釣魚網站,有着精美的前端僞裝成一個 NFT 項目,網站中間是一個漂亮的大按鈕“領取你的空投”,實際上你點了之後錢包彈出來的界面實際上是讓你授權你的 Token 給黑客的地址,那么這時候如果你點了確認,那么就恭喜黑客成功完成一個 KPI 了。

但是授權釣魚有一個問題:因為要花 Gas 費,現在很多人在涉及到花錢的操作上會有所警惕,在陌生網站點擊之後稍微一看就會發現不對勁,還是比較好防範的。

那么接下來就來到了今天的主角:Permit 和 Permit 2 籤名釣魚啦,是Web3資產安全領域的重災區,為什么這么難防呢?因為每次你要使用一個 Dapp 之前一定要籤名登入你的錢包,在許多人腦子裏可能已經形成了一種慣性思維:”這個操作是安全的”,再加上不需要花錢和大多數人不知道每個籤名背後意味着什么。

我們先來看 Permit 機制,Permit 是針對 ERC-20 標准下授權的一個擴展功能,像我們平常用的 USDT 就是 ERC-20 ,簡單來說就是你可以籤名批准其他人來挪動你的 Token,我們知道授權(Approve)是你花錢告訴智能合約:“你可以挪動我 xxx 數量的 Token”,那么 Permit 就是你在一張“條子”上籤了個名給某一個人,這個紙上寫着:“我允許某某某可以挪動我 xxx 數量的 Token”,然後這個人拿着這個“條子”給智能合約並花一筆 Gas 費告訴智能合約:“他允許我挪動他 xxx 數量的 Token”,然後你的錢就可以被其他人挪走了,在這個過程中你只是籤了一個名,而背後卻意味着你允許其他人去調用授權(Approve)並轉走你的 Token,黑客可以做一個釣魚網站,把登入錢包的按鈕替換成 Permit 釣魚,那么就可以輕輕松松把你的資產釣走啦。

那么 Permit 2 又是什么呢?Permit 2 其實並不是 ERC-20 的一個功能,而是 Uniswap 為了方便用戶推出的一個功能,之前的例子講了你要在 Uniswap 上用 USDT 換菠菜幣你需要先授權(Approve)一次,然後再進行兌換,這需要花兩筆 Gas 費,所以 Uniswap 就想了個辦法:“你一次性把額度全部授權給我好了,每次兌換你籤個名我就給你處理了”,這個功能幫助 Uniswap 用戶使用的時候只需要支付一次 Gas 費即可,並且這個步驟是籤名,所以 Gas 費其實不是你付的,而是 Permit 2 合約代付了,但是會從你最終兌換的 Token 裏扣除掉。

但是中 Permit 2 釣魚的條件是你曾經使用過 Uniswap,並且你還授權了無限額度給 Permit 2 智能合約,由於目前 Uniswap 默認的操作就是無限額度授權,所以其實滿足該條件的用戶數量還是蠻大的,同樣黑客只要騙你把名籤了就可以把你的 Token 轉走(僅限給過授權的)。

總結一下,授權釣魚的本質是你花一筆錢告訴智能合約:“我批准你挪用我的 Token 給黑客”,籤名釣魚的本質是你籤了一張允許別人去挪動你資產的“條子”給到黑客,黑客花錢告訴智能合約:“我要挪用他的 Token 轉給我”。Permit 和 Permit 2 是目前釣魚籤名的重災區,Permit 是 ERC-20 的一個授權擴展功能,Permit 2 是 Uniswap 推出的一個新功能。

那么理解了原理,怎么防範呢?

1.首先最最重要的就是培養你的安全意識,每一次錢包的操作都要去檢查一下你在做的操作到底是什么?

2.大資金和玩鏈上的錢包分離,一旦被釣魚了可以把損失降到最低

3.學會識別 Permit 和 Permit 2 的籤名格式,只要你看到以下籤名格式,那你就要警惕起來了:

Interactive:交互網址

Owner:授權方地址

Spender:被授權方地址

Value:授權數量

Nonce:隨機數

Deadline:過期時間

原文鏈接


鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

解碼MicroStrategy:BTC代言人的槓杆布局與投資智慧

原文作者: The Pareto Investor 原文編譯:深潮 TechFlow 親愛的投資者...

星球日報
2 15分鐘前

“鏈上幣安”DEXX,撞得華語MEME圈人仰馬翻

​ 牛市第一“ 盜 ”來了。 近段時間的加密市場,除了比特幣,MEME無疑是最大的贏家。AI、Po...

陀螺財經
2 15分鐘前

Odaily編輯部Meme操作全記錄(11月18日)

本新欄目為 Odaily 編輯部成員真實投資經歷分享,不接受任何商務廣告, 不構成投資建議(因為本...

星球日報
2 15分鐘前

比特幣漲至歷史高點,散戶FOMO了嗎?

隨着比特幣再次進入價格發現模式,加密市場參與者都很好奇:散戶 FOMO 是否已經开始?我們在過去牛...

星球日報
2 15分鐘前

Desci成Meme新寵,一文盤點8大熱門代幣項目

@OdailyChina @wenser 2010 在確定本周期主线是“Meme SuperCyc...

星球日報
2 15分鐘前

深入探討現有穩定幣模型:如何結束貨幣內战?

自 Tether 推出首個以美元支持的加密數字貨幣以來,已經過去了十年。自那時起,穩定幣已成為加密...

星球日報
2 15分鐘前