隨著 Web3.0 技術的發展,諸如 Approval Phishing、Uniswap Permit2 Phishing、Claim Phishing 以及 Modal Phishing 等多種攻擊方式應運而生。為應對這些攻擊,本文將詳細介紹如何識別和預防這些攻擊,幫助用戶保護自己的加密貨幣資產安全。
撰文:Salus Insights
什麼是 web3 釣魚
Web3 Phishing 是一種針對加密貨幣用戶的網絡欺騙手段,通過創建偽裝成正式網站的假網站來竊取用戶的授權、簽名和加密貨幣資產。隨著 Web3.0 技術的發展,新型的 Web3 釣魚騙局也在不斷出現。以下,我們將介紹新型 web3 釣魚攻擊方式:Approval phishing、Uniswap permit2 phishing、Claim phishing、Model phishing。並提供幫助用戶識別和預防這些攻擊的有效措施:針對 Approval 釣魚的預防措施,識別 permit2 中的簽名,防止 Claim 釣魚攻擊,防止模態釣魚攻擊。
1. Approval 調用攻擊
web3 網絡釣魚攻擊大多與approval、increaseAllowance 操作有關。攻擊者通過偽造電子郵件或消息、偽造網站或應用程序、社交工程和惡意廣告或彈窗等方式,騙取用戶進行 approval 操作。因此,用戶需要撤銷不必要的授權。撤銷授權也有可能被釣魚者利用。
撤銷授權釣魚攻擊時如何發生的?
攻擊者部署了一個假的ERC-20 代幣合約,修改了 approve 函數;
攻擊者手動偽造了大批鏈上地址的授權,並提醒用戶取消授權;
當用戶收到該提醒並點擊取消授權時,會觸發發送交易的操作。這個交易將導致 token 被鑄造到合約部署者的錢包內。
increaseAllowance 授權釣魚交易鏈接
https://arbiscan.io/tx/0xd598336fac79123952319c9cd9cc62aa275162ce5f39d08ccac0c5e6ef0538e5
「撤銷授權」釣魚交易鏈接https://etherscan.io/tx/0xd4d606caddebf185dc6902ffcec78f3cc915826e1c0e37319d407d01681980ab
2. Uniswap permit2 釣魚攻擊
Uniswap permit2 允許跨不同應用共享和管理 token 授權。 用戶只需在一次交易中完成授權和交易,減少交易的 gas 費用,簡化交易操作流程。但是,Permit 2 則將用戶的操作變為了鏈下簽名,對於用戶來說,鏈下簽名是最容易放下防備的環節,而絕大多數人並不會仔細檢查簽名的內容也並不理解簽名的內容。
Uniswap permit2 簽名釣魚攻擊是如何發生的?
- 用戶將自己所持有 Token 的權限授權給 Permit 2 合約,這是至關重要的前提條件,這意味著你在授權時的簽名已經暴露在釣魚騙局的風險下了。
- 黑客拿到了用戶的簽名,基於此簽名,黑客在 permit2 合約中進行了 permit 和 transferFrom 兩個操作,轉走用戶的資產。
- 黑客調用 permit 函數,在該函數中,主要調用了 verify 函數和_updateApproval 函數。verify 函數用來驗證用戶簽名。驗證通過後執行_updateApproval 函數。_updateApproval 函數用來更新授權值。
被授權方在授權額度範圍內可以調用 transferFrom 函數將 token 轉移到指定地址。
Permit2 釣魚交易鏈接
https://etherscan.io/tx/0x1d8fa25f8f16d52cd4c5716e0cefd9b1cdbbbc060901cea223bab9de79b17ea3
3. Claim 釣魚攻擊
Claim 釣魚攻擊通過偽造可信實體的請求,欺騙用戶提供個人信息、登錄憑據或訪問權限。這些 Claim 釣魚合約通常偽裝成零地址來騙取用戶信任,以此來調取用戶的加密資產。
Claim 釣魚攻擊是如何發生的?
- 釣魚者部署 scam contract 和 hub contract,並創建 EOA 用來接收竊取用戶的資金。scam contract 具有竊取用戶的 ETH、ERC20 token 和 NFT 的能力。scam contract 不開源,但從鏈上交易數據來看,該合約主要包含兩個函數,Cliam 和 Multicall。
- 調用 Claim 函數時,受害者所持有的 token 將在 internal transaction 中被轉移至 hub contract。
- Multicall 函數用來轉移受害者已批准的 token。
- hub contract 用作從各個 scam contract 中竊取的資金的收集點。釣魚者創建的 EOA 可以調用 hub contract 中的 withdraw 函數提取資金。
claim 釣魚交易鏈接
https://etherscan.io/tx/0xfe70f1b0a92e719bff0d291b7a79987e6e93ed129d52be8e8918c2b9acb1f3b0
4. 模態釣魚攻擊
Web3.0 加密貨幣錢包的某些用戶界面(UI)元素可以被攻擊者控制用來進行網絡釣魚攻擊,這種攻擊方式被稱為 Modal Phishing。Web3.0 貨幣錢包上的典型模態設計通常提供供用戶檢查簽名等請求的必要信息,以及批准或拒絕請求的按鈕。
我們以 Metamask 錢包為例,介紹模態釣魚攻擊是如何發生的?
- 釣魚者部署釣魚智能合約,有一個 SecurityUpdate 具備支付功能的函數,並允許受害者將資金轉入該智能合約;
- 釣魚者還使用 SignatureReg 將 SecurityUpdate 函數簽名註冊為人類可讀的字符串「SecurityUpdate」。
- 受害者在 Metamask 錢包上連接以上釣魚智能合約;
- Metamask 解析這個釣魚智能合約,它使用函數簽名字節查詢相應的函數方法,即為「SecurityUpdate」。
- 「SecurityUpdate」被呈現在 Metamask Model 中,要求用戶確認。用戶點擊「SecurityUpdate」按鈕,釣魚成功。此時,執行釣魚者寫好的釣魚智能合約,將受害者的資金轉入該智能合約。
如何避免 web3 釣魚攻擊
1. 針對 approval 釣魚的預防措施
如果我們理解授權操作的具體內容,並從正確的渠道查詢我們的授權信息、取消授權,就會有效避免 approval、increaseAllowance、撤銷授權的釣魚騙局。
以下內容可以幫助用戶理解授權操作的具體內容:
用戶在 approval 時,需要考慮授權金額、授權幣種和授權地址。通過指定授權金額和幣種,用戶可以限制被授權方能夠從自己的賬戶中轉移的資產數量,防止授權到與這次交互無關的幣種。用戶還需要仔細檢查授權地址,多渠道驗證該地址,確保將授權給正確的地址。
- 用戶在正式授權之前,可以在相應代幣合約中模擬授權交易,以獲取授權信息。
- 找到 approval 或者 increaseAllowance、decreaseAllowance 等授權相關函數,填寫以下信息模擬授權交易。
- 模擬授權之後,可以在 Phalcon 上看到這筆模擬交易的具體信息,從 Input Data 可以看出授權地址和授權金額。
如果以上結果是用戶期望的,就可以進行正式授權了。
以下內容是追蹤鏈上授權信息,撤銷授權信息的具體步驟:
用戶在完成授權之後,可以定期追蹤 token approval 情況,也可撤銷相關授權。Etherscan, BscScan and Polygonscan 區塊鏈瀏覽器中有 token approval checker Function。
- 輸入地址,即可查看該地址的歷史授權交易,每筆交易右側的 Revole 按鈕可撤銷此授權。
- 在檢索到的授權交易中,可查看授權幣種、授權地址和授權金額。
2. 識別 permit2 中的簽名
如果我們能夠理解、識別並仔細檢查簽名的具體內容,就可以有效避免 permit2 釣魚騙局。
簽名格式通常包含 Owner、Spender、value、nonce 和 deadline 這幾個關鍵字段,分別是指:
1. Owner: 代表 token 持有者的地址,用於指定希望通過簽名授權的地址。
2. Spender: 代表被授權使用 token 的地址,用於指定希望授權給的地址。
3. value: 代表希望授權的 token 數量,可以指定特定數量的 token 授權給 Spender。
4. nonce: 代表 token 持有者的交易計數器,用於確保每個授權交易都具有唯一的標識符。
5. deadline: 代表簽名的有效截止日期,用於限制簽名的有效期。在過期之後,簽名將變得無效。
我們建議用戶可以根據自己的需求設置特定的 value 和 deadline,而不是選擇默認的最大值。
用戶在調用 Uniswap permit2 合約之前,可以模擬相關授權函數,瞭解授權細節。點擊 Simulate 按鈕。
選擇 approve 函數,填寫以下參數,模擬用戶向 permit2 合約授權。
3. 防止 Claim 釣魚攻擊
為了避免落入 Claim 釣魚陷阱,我們需要識別釣魚合約地址,他們經常偽裝成零地址來放鬆用戶的警惕性。以下列舉了一些用於 claim 釣魚詐騙的 Scam contract。我們在交易時,需要注意地址前後是「0000」的地址。
https://etherscan.io/address/0x0000b514c923f55180fc12428e05695666620000
https://etherscan.io/address/0x0000438e0f00fc35dff19d0062608057a1d20000
https://etherscan.io/address/0x0000a4998724e52f0886edff693aca33f9900000
https://etherscan.io/address/0x000062accd1a9d62ef428ec86ca3dd4f45120000
https://etherscan.io/address/0x000038f1e0c4417a3650c3f9a9a920b2e52e0000
https://etherscan.io/address/0x000056c346441ef8065e56b0cddd43fdec100000
Claim 釣魚攻擊本質也是獲取用戶的 token 授權,所以,我們仍然需要時刻關注授權情況。
4. 防止模態釣魚攻擊
模態釣魚攻擊發生的根本原因是錢包應用程序沒有徹底驗證所呈現的 UI 元素的合法性。為了避免這種釣魚攻擊,錢包應用程序的開發者應該始終假設外部傳入的數據是不可信的。用戶也可按照上述方式檢查自己的簽名信息和授權信息。
總結
綜上所述,我們詳細介紹了四種新型的 Web3 釣魚攻擊方式,並提供了相應的識別和預防措施。除了提高用戶的警惕性外,我們還建議用戶深入瞭解授權和簽名的相關內容,並定期檢查自己的授權情況,及時撤銷不必要的授權。此外,我們強調了不隨意簽名的重要性,以防止攻擊者獲取我們的簽名並濫用。