揭秘Web3.0移動錢包新型騙局:模態釣魚攻擊Modal Phishing

我們最近發現了一種新型的網絡釣魚技術,可用於在連接的去中心化應用(DApp)身份方面誤導受害者。

我們將這種新型的網絡釣魚技術命名為Modal Phishing(模態釣魚攻擊)。

攻擊者可以向移動錢包發送偽造的虛假信息冒充合法的DApp,並通過在移動錢包的模態窗口中顯示誤導性信息來誘騙受害者批准交易。這種網絡釣魚技術正在廣泛使用。我們與相應的組件開發人員進行了溝通,並確認他們將發布新的驗證API以降低該風險。

什麼是Modal Phishing?

在CertiK對移動錢包的安全研究中,我們注意到Web3.0貨幣錢包的某些用戶界面(UI)元素可以被攻擊者控制用來進行網絡釣魚攻擊。我們將這種釣魚技術命名為Modal Phishing,因為攻擊者主要針對加密錢包的模態窗口進行釣魚攻擊。

模態(或模態窗口)是移動應用程序中經常使用的UI元素。模態通常顯示在應用程序主窗口頂部。這樣的設計通常用於方便用戶執行快速操作,如批准/拒絕Web3.0貨幣錢包的交易請求。

Web3.0貨幣錢包上的典型模態設計通常提供供用戶檢查簽名等請求的必要信息,以及批准或拒絕請求的按鈕。

揭秘Web3.0移動錢包新型騙局:模態釣魚攻擊Modal Phishing

真實交易批准模式與網絡釣魚交易批准模式對比

在上方截圖中,我們展示了Metamask上一個常規的交易審批模態窗口是如何出現的。

當一個新的交易請求被連接的去中心化應用程序(DApp)初始化時,錢包會展示一個新的模態窗口,並要求用戶進行人工確認。

如上圖左側所示,模態窗口通常包含請求者的身份,如網站地址(此例中為localhost)、圖標等。如Metamask這樣的一些錢包也會顯示有關請求的關鍵信息,在實例中我們看到一些UI元素被標記為“Confirm”,以提示用戶這是一個常規的交易請求。

然而,這些用戶界面元素可以被攻擊者控制以進行Modal Phishing攻擊。在右側的截圖中,我們可以看到攻擊者可以更改交易細節,並將交易請求偽裝成來自“Metamask”的“Security Update”請求,以誘使用戶批准。

如截圖所示,攻擊者可以操縱多個UI元素。

因此我們將在本文中為大家分享兩個典型案例,並確定那些可被攻擊者控制的UI元素。

詳細信息如下:

① 如果使用Wallet Connect協議,攻擊者可以控制DApp信息UI元素(名稱、圖標等) 。

② 攻擊者可以控制某些錢包應用中的智能合約信息UI元素。

揭秘Web3.0移動錢包新型騙局:模態釣魚攻擊Modal Phishing

攻擊者控制的Modal和相關的信息源(DApp信息和方法名稱)示例

示例①:通過Wallet Connect進行DApp釣魚攻擊

Wallet Connect協議是一個廣受歡迎的開源協議,用於通過二維碼或深度鏈接將用戶的錢包與DApp連接。用戶可以通過Wallet Connect協議將他們的錢包與DApp連接起來,然後與該協議進行進行交易或轉賬。

在Web3.0貨幣錢包和DApp之間的配對過程中,我們注意到Web3.0貨幣錢包會展示一個模態窗口,顯示傳入配對請求的元信息——包括DApp的名稱,網站地址,圖標和描述。 Web3.0錢包展示的這些信息和方式根據DApp名稱、圖標和網站地址不同而變化,以供用戶查看。

但是這些信息是DApp提供的,錢包並不驗證其所提供信息是否合法真實。比如在網絡釣魚攻擊中,某雷碧可以假稱為某雪碧(均為DApp),而後在用戶發起交易請求之前誘騙用戶與其連接。

小伙伴們可以復制鏈接【https://www.youtube.com/watch?v=x6muJmDBC3o】到瀏覽器查看CertiK為此做的一個小測試。

在該視頻中,CertiK展示了攻擊者是如何「欺瞞」Uniswap DApp的——攻擊者聲稱自己是Uniswap DApp,並連接Metamask錢包,以此欺騙用戶批准傳入的交易。

在配對過程中,錢包內顯示的模態窗口呈現了合規Uniswap DApp的名稱、網站網址和網站圖標。

由於網址中使用了https方案,所以還顯示了一個掛鎖圖標,這樣顯得模態窗口更為逼真和合法了。在配對過程中,只要受害者想在假Uniswap網站上進行交易操作,攻擊者就可以替換交易請求參數(如目的地地址和交易金額)來竊取受害者的資金。

請注意,雖然不同的錢包上的模態設計不同,但攻擊者是始終可以控制元信息的。

下圖展示了當我們將ZenGo和1Inch錢包連接到釣魚網站的DApp時,配對批准模式的樣子。

揭秘Web3.0移動錢包新型騙局:模態釣魚攻擊Modal Phishing

 Modal Phishing:連接到Zengo和1Inch錢包的虛假DApp

現在我們知道了配對和交易模態窗口可以被攻擊者操縱,這樣的攻擊可以被用來讓用戶相信交易請求來自合法的DApp。

如下方截圖所示,我們創建了一個自稱是“Metamask”的虛假DApp,並啟動了一個釣魚智能合約。攻擊者可以在交易批准模態中冒充Metamask或Uniswap的DApp。

揭秘Web3.0移動錢包新型騙局:模態釣魚攻擊Modal Phishing

如上例所示,被大規模使用的Wallet Connect協議並未驗證配對的DApp信息的合法性。被操縱的元信息被錢包應用程序進一步使用並呈現給用戶,這可以被用來進行Modal Phishing。作為一個潛在的解決方案,Wallet Connect協議可以提前驗證DApp信息的有效性和合法性。 Wallet Connect的開發人員已經承認了知曉這個問題,並正在研究相關解決方案。

示例② :通過MetaMask進行智能合約信息網絡釣魚

你可能已經註意到,在Metamask批准模態的圖標或網站名稱下,有另一個視圖,顯示了一個不固定的字符串例如“Confirm”或“Unknown Method”。這個UI元素是由Metamask設計的,用於識別相應的交易類型。

在呈現交易批准模態時,Metamask會讀取智能合約的簽名字節,並使用鏈上方法註冊表查詢相應的方法名稱,如以下代碼所示。然而,這也會在模態上創建另一個可以被攻擊者控制的UI元素。

揭秘Web3.0移動錢包新型騙局:模態釣魚攻擊Modal Phishing

 MetaMask源碼通過簽名字節讀取智能合約的函數名稱

揭秘Web3.0移動錢包新型騙局:模態釣魚攻擊Modal Phishing

 MetaMask的智能合約方法名稱說明

我們可以看到Metamask上有一個交易請求模態,其被標記為“Security Update”。攻擊者建立了一個釣魚智能合約,其有一個SecurityUpdate具備支付函數功能,並允許受害者將資金轉入該智能合約。

攻擊者還使用SignatureReg將方法簽名註冊為人類可讀的字符串“SecurityUpdate”中。如前所述,當Metamask解析這個釣魚智能合約時,它使用函數簽名字節查詢相應的函數方法,並在批准模態中呈現給用戶。

從這個智能合約的交易可以看出,這個特定的釣魚智能合約已經運行了200多天。

揭秘Web3.0移動錢包新型騙局:模態釣魚攻擊Modal Phishing

結合這些可控的UI元素,攻擊者可以創建一個非常有說服力的交易請求,該請求顯示為來自“Metamask”的“SecurityUpdate”請求,尋求用戶的批准。

揭秘Web3.0移動錢包新型騙局:模態釣魚攻擊Modal Phishing

釣魚交易批准模態

在上面的例子中,我們展示了錢包上與智能合約信息相關的UI元素是如何被釣魚攻擊者操縱的。

雖然我們在這里以Metamask為例,但其他錢包也可能存在類似的漏洞。錢包應用的開發者應該時刻注意監測那些會向用戶呈現的內容,並採取預防措施過濾掉可能被用於網絡釣魚攻擊的詞語。

寫在最後

在本文中,我們為大家展示了Web3.0貨幣錢包上不應盲目信任的常見UI組件——模態窗口。

模態窗口中的某些UI元素可以被攻擊者操縱,以創造出非常「真實且有說服力」的釣魚陷阱。因此,我們將這種新的網絡釣魚技術命名為Modal Phishin(模態釣魚攻擊)。

這種攻擊發生的根本原因是錢包應用程序沒有徹底驗證所呈現的UI元素的合法性。

例如,錢包應用程序直接信任來自Wallet Connect SDK的元數據,並將其呈現給了用戶。

Wallet Connect SDK也並不驗證傳入的元數據,這在某些情況下使得呈現的元數據可以被攻擊者控制。在Metamask中,我們可以看到類似的攻擊原理也被攻擊者濫用,在模態窗口中顯示欺詐性的智能合約函數方法名稱。

總體而言,我們認為錢包應用程序的開發者應該始終假設外部傳入的數據是不可信的。開發者應該仔細選擇向用戶展示哪些信息,並驗證這些信息的合法性。除此之外,用戶也應通過對每個未知的交易請求保持懷疑的態度來守好自己安全上的「一畝三分地」。