Uniswap Permit2籤名釣魚新手法 一次授權可能導致資產全損

robot
摘要生成中

揭示Uniswap Permit2籤名釣魚騙局:僅一個籤名就可能導致資產被盜

黑客是Web3生態系統中令人生畏的存在。對項目方而言,開源代碼意味着全球黑客都可能在尋找漏洞,寫錯一行代碼就可能造成嚴重後果。對普通用戶來說,每次鏈上交互或籤名都可能使資產面臨風險。因此安全問題一直是加密世界的痛點之一,區塊鏈的不可逆特性也使被盜資產難以追回,這更突顯了安全知識的重要性。

最近,一位研究人員發現了一種新型釣魚手法,僅需籤名就可能導致資產被盜。這種手法極其隱蔽難防,而且曾與Uniswap交互過的地址都可能面臨風險。本文將詳細介紹這種籤名釣魚手法,以幫助讀者避免更多資產損失。

事件經過

事情源於一位朋友(小A)的資產被盜。與常見被盜方式不同,小A並未泄露私鑰,也未與可疑合約交互。進一步調查發現,被盜USDT是通過Transfer From函數轉移的,這意味着是第三方操作轉移了資產,而非錢包私鑰泄露。

交易細節顯示:

  • 一個地址(fd51)將小A的資產轉移到另一地址(a0c8)
  • 這個操作是與Uniswap的Permit2合約交互的

關鍵問題是:fd51地址如何獲得了小A資產的權限?爲何與Uniswap有關?

繼續挖掘fd51地址的交互記錄,發現在轉移小A資產前,該地址還進行了一個Permit操作,且兩個操作都與Uniswap的Permit2合約交互。

籤名就被盜?揭祕Uniswap Permit2籤名釣魚騙局

Uniswap Permit2是2022年底推出的新合約,旨在實現跨應用的統一授權管理,提高用戶體驗並降低交易成本。它的工作原理是:用戶只需授權給Permit2合約,所有集成Permit2的應用都可共享這個授權額度。

這種設計雖然提高了便利性,但也帶來了風險。傳統交互方式下,授權和資金轉移都需要鏈上操作。而Permit2將用戶操作變爲鏈下籤名,鏈上操作由中間角色完成。這雖然帶來了諸多好處,但也使鏈下籤名成爲最容易被忽視的安全隱患。

調查顯示,要觸發這個漏洞,關鍵前提是錢包需已授權給Uniswap的Permit2合約。值得注意的是,只要在2023年後與Uniswap交互並授權給Permit2,就可能面臨這一風險。

更令人擔憂的是,Uniswap的Permit2合約默認請求無限授權額度。雖然MetaMask允許自定義金額,但多數用戶可能直接選擇最大或默認值。

籤名就被盜?揭祕Uniswap Permit2籤名釣魚騙局

技術分析

Permit函數的核心邏輯是:

  1. 檢查籤名是否在有效期內
  2. 驗證籤名的真實性
  3. 如通過驗證,則更新授權記錄

verify函數會從籤名信息中提取v、r、s數據,用於恢復籤名地址並與代幣所有者地址比對。如匹配,則繼續執行_updateApproval函數。

_updateApproval函數會更新授權值,實現權限轉移。之後,被授權方就可以調用transferFrom函數轉移代幣。

籤名就被盜?揭祕Uniswap Permit2籤名釣魚騙局

如何防範

  1. 學會識別並理解籤名內容,特別是Permit籤名格式。使用安全插件可以幫助識別。

  2. 採用冷熱錢包分離策略,將大額資產存放在冷錢包中。

  3. 謹慎授權Permit2合約,僅授權所需金額。如已授權,可使用安全插件取消。

  4. 了解所持代幣是否支持permit功能,對支持的代幣交易需格外謹慎。

  5. 如不幸被騙但仍有資產在其他平台,需制定完善的資產轉移計劃,可考慮使用MEV轉移或尋求專業安全團隊協助。

隨着Permit2應用範圍擴大,基於此的釣魚攻擊可能會更加普遍。這種籤名釣魚方式極其隱蔽且難以防範,暴露在風險中的地址也會越來越多。希望讀者能夠提高警惕,並將這些信息分享給更多人,共同維護資產安全。

籤名就被盜?揭祕Uniswap Permit2籤名釣魚騙局

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 2
  • 分享
留言
0/400
熊市炒面师vip
· 7小時前
又见签名盗币?底部炸鱼都看累了
回復0
RunWithRugsvip
· 7小時前
又要折腾私钥了咯
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)