我剛剛看到一篇關於用permit鏈下簽名的方式來轉走你帳戶內的token,而且這個方式你的
帳戶內不會有approve紀錄,之前我在用paraswap、uniswapV3、1inch有遇過這種授權方式
所以特別來提醒大家,現在連鏈下簽名都要仔細看一下,別無腦簽名。
鏈下簽名比較常出現的方式是連入defi網站的時候,需要你用帳號簽一份聲明書,例如par
aswap連進去會要你簽一份這個網站不提供給美國人使用的聲明。
https://i.imgur.com/UFznnNW.png
permit功能可以看USDC的etherscan上的code,簡單來說就是用鏈下簽名的方式根據permit
需要參數讓你簽名,拿到你簽完名的加密資訊v.r.s,然後駭客再call USCD permit函數,
那就可以完成approve的動作。這個方式比較特別的是鏈下簽名不會消耗gas,所以你不會
去特別在意這個簽名,你以為一切都正常,但是其實你已經把token授權給別人動了,而且
revoke工具也不會偵測到,revoke工具原理其實是掃你的帳戶內的approve tx,這個permi
t方式,permit tx其實會出現在駭客的帳戶下面,所以revoke不會偵測到。對permit tx
fee是駭客幫你付的。
現在可以從1inch看一下permit鏈下簽名會長怎樣。有沒有發現permit鏈下簽名跟上面的網
站聲明基本上一樣,只是message data部分不一樣,換成要你簽permit需要參數,其實這
是metamask有幫解析後的結果,有些錢包不支援解析的話,應該會是0xd505accf開頭一串
bytes32 code,大家可以比較一下一般USDC approve,現在metamask已經不會無腦無限
approve了,會問你要approve多少。
permit鏈下簽名
https://i.imgur.com/PdMw4JL.png
approve tx
https://i.imgur.com/Qi9en0h.png
結論
如果遇到鏈下簽名請仔細看清楚。
ref:https://foresightnews.pro/article/detail/33330