原文標題:《 一茬接一茬,Web3.0 移動錢包又現獨特釣魚攻擊手法:Modal Phishing 》
原文來源: CertiK
我們最近發現了一種新型的網絡釣魚技術,可用於在連接的去中心化應用(DApp)身份方面誤導受害者。
我們將這種新型的網絡釣魚技術命名爲Modal Phishing(模態釣魚攻擊)。
攻擊者可以向移動錢包發送僞造的虛假信息冒充合法的 DApp,並通過在移動錢包的模態窗口中顯示誤導性信息來誘騙受害者批准交易。這種網絡釣魚技術正在廣泛使用。我們與相應的組件開發人員進行了溝通,並確認他們將發佈新的驗證 API 以降低該風險。
在 CertiK 對移動錢包的安全研究中,我們注意到 Web3.0 貨幣錢包的某些用戶界面(UI)元素可以被攻擊者控制用來進行網絡釣魚攻擊。我們將這種釣魚技術命名爲 Modal Phishing,因爲攻擊者主要針對加密錢包的模態窗口進行釣魚攻擊。
模態(或模態窗口)是移動應用程序中經常使用的 UI 元素。模態通常顯示在應用程序主窗口頂部。這樣的設計通常用於方便用戶執行快速操作,如批准/拒絕 Web3.0 貨幣錢包的交易請求。
Web3.0 貨幣錢包上的典型模態設計通常提供供用戶檢查簽名等請求的必要信息,以及批准或拒絕請求的按鈕。
真實交易批准模式與網絡釣魚交易批准模式對比
在上方截圖中,我們展示了 Metamask 上一個常規的交易審批模態窗口是如何出現的。
當一個新的交易請求被連接的去中心化應用程序(DApp)初始化時,錢包會展示一個新的模態窗口,並要求用戶進行人工確認。
如上圖左側所示,模態窗口通常包含請求者的身份,如網站地址(此例中爲 localhost)、圖標等。如 Metamask 這樣的一些錢包也會顯示有關請求的關鍵信息,在實例中我們看到一些 UI 元素被標記爲「Confirm」,以提示用戶這是一個常規的交易請求。
然而,這些用戶界面元素可以被攻擊者控制以進行 Modal Phishing 攻擊。在右側的截圖中,我們可以看到攻擊者可以更改交易細節,並將交易請求僞裝成來自「Metamask」的「Security Update」請求,以誘使用戶批准。
如截圖所示,攻擊者可以操縱多個 UI 元素。
因此我們將在本文中爲大家分享兩個典型案例,並確定那些可被攻擊者控制的 UI 元素。
詳細信息如下:
1、如果使用 Wallet Connect 協議,攻擊者可以控制 DApp 信息 UI 元素(名稱、圖標等)。
2、攻擊者可以控制某些錢包應用中的智能合約信息 UI 元素。
攻擊者控制的 Modal 和相關的信息源(DApp 信息和方法名稱)示例
示例1:通過 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 時,配對批准模式的樣子。
Modal Phishing:連接到 Zengo 和 1Inch 錢包的虛假 DApp
現在我們知道了配對和交易模態窗口可以被攻擊者操縱,這樣的攻擊可以被用來讓用戶相信交易請求來自合法的 DApp。
如下方截圖所示,我們創建了一個自稱是「Metamask」的虛假 DApp,並啓動了一個釣魚智能合約。攻擊者可以在交易批准模態中冒充 Metamask 或 Uniswap 的 DApp。
如上例所示,被大規模使用的 Wallet Connect 協議並未驗證配對的 DApp 信息的合法性。被操縱的元信息被錢包應用程序進一步使用並呈現給用戶,這可以被用來進行 Modal Phishing。作爲一個潛在的解決方案,Wallet Connect 協議可以提前驗證 DApp 信息的有效性和合法性。Wallet Connect 的開發人員已經承認了知曉這個問題,並正在研究相關解決方案。
示例 2:通過 MetaMask 進行智能合約信息網絡釣魚
你可能已經注意到,在 Metamask 批准模態的圖標或網站名稱下,有另一個視圖,顯示了一個不固定的字符串例如「Confirm」或「Unknown Method」。這個 UI 元素是由 Metamask 設計的,用於識別相應的交易類型。
在呈現交易批准模態時,Metamask 會讀取智能合約的簽名字節,並使用鏈上方法註冊表查詢相應的方法名稱,如以下代碼所示。然而,這也會在模態上創建另一個可以被攻擊者控制的 UI 元素。
MetaMask 源碼通過簽名字節讀取智能合約的函數名稱
MetaMask 的智能合約方法名稱說明
我們可以看到 Metamask 上有一個交易請求模態,其被標記爲「Security Update」。攻擊者建立了一個釣魚智能合約,其有一個 SecurityUpdate 具備支付函數功能,並允許受害者將資金轉入該智能合約。
攻擊者還使用 SignatureReg將方法簽名註冊爲人類可讀的字符串「SecurityUpdate」中。如前所述,當 Metamask 解析這個釣魚智能合約時,它使用函數簽名字節查詢相應的函數方法,並在批准模態中呈現給用戶。
從這個智能合約的交易可以看出,這個特定的釣魚智能合約已經運行了 200 多天。
結合這些可控的 UI 元素,攻擊者可以創建一個非常有說服力的交易請求,該請求顯示爲來自「Metamask」的「SecurityUpdate」請求,尋求用戶的批准。
釣魚交易批准模態
在上面的例子中,我們展示了錢包上與智能合約信息相關的 UI 元素是如何被釣魚攻擊者操縱的。
雖然我們在這裏以 Metamask 爲例,但其他錢包也可能存在類似的漏洞。錢包應用的開發者應該時刻注意監測那些會向用戶呈現的內容,並採取預防措施過濾掉可能被用於網絡釣魚攻擊的詞語。
在本文中,我們爲大家展示了 Web3.0 貨幣錢包上不應盲目信任的常見 UI 組件——模態窗口。
模態窗口中的某些 UI 元素可以被攻擊者操縱,以創造出非常「真實且有說服力」的釣魚陷阱。因此,我們將這種新的網絡釣魚技術命名爲 Modal Phishin(模態釣魚攻擊)。
這種攻擊發生的根本原因是錢包應用程序沒有徹底驗證所呈現的 UI 元素的合法性。
例如,錢包應用程序直接信任來自 Wallet Connect SDK 的元數據,並將其呈現給了用戶。Wallet Connect SDK 也並不驗證傳入的元數據,這在某些情況下使得呈現的元數據可以被攻擊者控制。在 Metamask 中,我們可以看到類似的攻擊原理也被攻擊者濫用,在模態窗口中顯示欺詐性的智能合約函數方法名稱。
總體而言,我們認爲錢包應用程序的開發者應該始終假設外部傳入的數據是不可信的。開發者應該仔細選擇向用戶展示哪些信息,並驗證這些信息的合法性。除此之外,用戶也應通過對每個未知的交易請求保持懷疑的態度來守好自己安全上的「一畝三分地」。
原文鏈接
歡迎加入律動 BlockBeats 官方社群:
Telegram 訂閱群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方帳號:https://twitter.com/BlockBeatsAsia