解析Web3簽名釣魚的底層邏輯《授權釣魚、Permit與Permit2的差別》


「簽名釣魚」成為Web3的熱門駭客攻擊方式。大多數人對錢包交易底層邏輯不了解,因此容易受騙。因此,有人推出了一個圖解版科普簽名釣魚的底層邏輯來幫助人們理解。簽名是鏈下行為,不需要Gas費;交易則發生在鏈上,需要Gas費。釣魚方式有授權釣魚、允許簽名釣魚和允許2簽名釣魚等多種。培養安全意識,分離大資金和玩鏈上的錢包,學會辨識Permit和Permit2的簽名格式是防範釣魚攻擊的關鍵。 Permit和Permit2是目前釣魚簽名的重點關注區域。

明明只是簽了個名字,我的錢怎麼沒了? ? 「簽名釣魚」目前正成為Web3的駭客們最喜歡的釣魚方式,最近看餘弦大佬和大錢包和安全公司都在不斷宣傳科普釣魚簽名的知識,但是每天還是有很多人被釣魚。

菠菜認為其中一個原因是大多數人對錢包交易的底層邏輯並不了解,而對於不懂技術的人來說學習資金過高,所以菠菜決定出一個圖解版科普簽名釣魚的底層邏輯,並嘗試用最大白話的形式讓不懂技術的人也能看懂。

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

一般簽名的使用場景是為了驗證你是你,例如登錄錢包,就像你如果去Uniswap換Token的話,你需要先鏈接你的錢包,那麼這個時候你就需要簽一個名字告訴網站“我是這個”錢包的擁有者”,那麼你就可以使用Uniswap了,這個步驟對區塊鏈不會有任何數據或狀態上的變化,所以不需要支出。

而交易就是當你要真正在Uniswap上換Token的時候,你需要先花一筆錢告訴Uniswap的智能合約:“我用100USDT換一個菠菜幣,我批准後你可以挪動我的100USDT”,這個步驟就授權調用(批准),然後你需要再花一筆錢告訴Uniswap的智能合約:“我現在用100USDT換一個菠菜幣了,你現在可以進行操作了”,然後你就完成了用100USDT更換一個菠菜幣的操作。

智能合約

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

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

智能合約

但是授權釣魚有一個問題:因為要花Gas費,現在很多人在涉及到支出的操作上會注意到,在初始化網站點擊之後輕微感應就會發現不對勁,還是比較好的防範的。

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

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

智能合約

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

智能合約

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

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

現在明白原理了,要怎麼防護呢?

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

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

3.學會辨識Permit和Permit2的簽名格式,只要你以下簽名格式,那你就要注意了:

互動:互動網址

所有者:授權方地址

消費方:被授權方地址

價值:授權數量

Nonce:隨機數

截止時間: 過渡時間

智能合約

資訊來源:0x資訊編譯自網際網路。版權歸作者Web3的一顆菠菜所有,未經許可,不得轉載

Total
0
Shares
Related Posts