擊破XSS漏洞:CertiK同WalletConnect一起守護用戶安全

2024-03-04 15:03:43

Web3.0是一個創新機遇與安全挑战並存的新時代。它帶來了區塊鏈技術、智能合約、DeFi、DePIN等全新概念,卻也浮現出多種多樣的惡意攻擊、漏洞與詐騙等安全問題。另一方面,由於當前Web3.0產品往往融入許多Web2.0元素,這使得傳統的Web2.0的安全風險也成為威脅Web3.0世界的重要因素。

作為全球領先的Web3.0安全機構,CertiK團隊一直以來都在主動關注各種原生和衍生的潛在風險,保護成千上萬的客戶免受損失。

本篇文章中,我們將帶大家了解CertiK團隊如何發現與解決Web3.0常用協議–WalletConnect中存在的Web2.0漏洞

WalletConnect與VerifyAPI

WalletConnect是Web3.0最受歡迎的开源協議之一,用於將各種dApp與去中心化錢包連接起來。用戶可以通過掃描dApp提供的二維碼來建立新的連接。雖然二維碼上會顯示dApp的名稱、圖標和來源等詳細信息,但是這些信息均由dApp單方面提供,無需經過錢包驗證,因此存在網絡釣魚攻擊的風險,這也是包括CertiK在內的衆多安全團隊所重點關注的問題。

為此,WalletConnect推出了“VerifyAPI”。

“VerifyAPI”是WalletConnect針對與其集成錢包推出的主動安全增強措施,會對用戶嘗試連接的可疑或惡意域名發出警報,從而防止網絡釣魚攻擊。該API利用WalletConnect的域名注冊表和Blowfish的域名掃描儀來審查連接請求。當用戶嘗試與dApp連接時,VerifyAPI可使錢包呈現四種狀態,來幫助用戶評估該域名的安全性並識別潛在風險。

發現漏洞

WalletConnect協議中的漏洞是團隊在為客戶產品進行例行滲透測試時無意發現的。在滲透測試的初始階段,團隊通常會通過全面的探索流程來了解應用程序的功能和與之交互的各種服務。本案例中,客戶產品的網絡應用程序使用了WalletConnect。我們對HTTP流量的監控獲取了向WalletConnect端點發出的請求信息,而其中一條請求引起了我們的特別注意

在深入研究這個漏洞的具體細節之前,讓我們從dApp的角度來看看VerifyAPI的HTTP請求工作流:

1.內嵌的WalletConnectSDK向verify.walletconnect.com發送請求,並在路徑中包含項目ID。如果該ID已在WalletConnect注冊,服務器將回復一個指向index.js文件的鏈接和CSRF標記。

2.然後,SDK會執行GET請求,利用之前獲得的路徑和CSRF標記獲取驗證請求的JavaScript代碼片段。

3.用戶確認通過WalletConnect連接錢包並生成QR碼後,SDK會向/attestation端點發送POST請求,匹配id,並完成初始dApp設置。

在檢查HTTP響應時,我們注意到HTML主體中包含一個直接嵌入JavaScript代碼塊的標記值。對於經驗豐富的Web2.0安全專家來說,這種模式表明存在HTML注入或XSS(跨站腳本)攻擊的潛在漏洞。

為了驗證這一猜想,我們將上圖請求中的標記值修改為XSS有效載荷,腳本成功執行了,這說XSS漏洞確實存在。

https://verify.walletconnect.com/index.js?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

XSS是一種注入式攻擊,可以在可信網站中嵌入惡意腳本。

在Web2.0應用中,攻擊者通常利用XSS漏洞訪問用戶cookie,劫持用戶的網絡會話和账戶控制權。其他攻擊包括把用戶重定向到有害網站,或發起未經授權的請求。在Web3.0環境中,XSS攻擊可以操縱去中心化錢包連接,誘騙用戶籤署有害交易,從而盜取資產。

接着,我們對XSS問題展开了進一步調查,包括測試各種有效載荷,來評估此漏洞是否會演變為SQL注入或遠程代碼執行等更嚴重的風險。

VerifyAPI是开源代碼,在查看其代碼後,我們了解了XSS漏洞的根本原因——該漏洞來自於validate_format函數驗證標記值格式的方式

if!CsrfToken::validate_format(&query.token){

雖然它檢查了標記值是否具有有效的JWT標頭,但未能徹底檢查整標記值,因此攻擊者仍可以通過給JWT標記值附加有效載荷來進行XSS攻擊。

fnvalidate_format(s:&str)->bool{jsonwebtoken::decode_header(s).is_ok()}

概念驗證

為了驗證潛在威脅,我們的安全團隊利用以上的XSS漏洞創建一個演示用的有效載荷。一旦被使用在釣魚網站上,用戶將會收到一個資產授權提示,如果不仔細檢查交易數據而點擊確認,就會把資產控制權授權給攻擊者。

由於用戶看到的依然是https://verify.walletconnect.com/域名,對交易籤名的警惕程度會大大降低。而對於非專業出身的用戶來說,很難去驗證交易的全部細節,很有可能會在無意中籤署惡意交易,造成損失。

另一方面,我們在研究中沒有發現任何可以放大該漏洞影響的方法,例如入侵WalletConnect的其他模塊或發起用戶被動操作。

解決方案

在檢測到XSS漏洞後,我們的團隊迅速向WalletConnect團隊提供了一份詳細報告。WalletConnect團隊迅速確認了我們的發現,並制定了解決問題的時間表。

WalletConnect的補救措施包括更新validate_format函數。此更新採用了白名單方法,標記值只允許使用字母、數字,以及符號-、.和_。雖然理論上仍有可能進行文本注入,但這一關鍵更新大大降低了XSS攻擊的風險。

時間线

2023年10月14日:CertiK向WalletConnect報告該漏洞。

2023年10月16日:WalletConnect確認收到報告並確認問題。

2023年10月20日:WalletConnect更新了源代碼,並推送至VerifyAPI。

2023年10月20日:CertiK確認XSS問題已得到緩解。

寫在最後

此次事件為我們帶來一個重要提示:Web2.0所特有的漏洞不僅會在Web3.0環境中持續存在,而且還會不斷演變,以更新的表現形式造成更大的安全威脅。因此,主動防護至關重要。定期審計、滲透測試、謹慎的漏洞評估以及實時跟進最新的安全動態,走在攻擊者前面,是Web3.0企業守護安全的最佳做法。

對於DeFi用戶來說,保持警惕在任何時候都至關重要。

  • 一定要仔細驗證網站或平臺的URL,特別是看起來相似的數字與字母。詐騙者經常通過高仿URL欺騙用戶。

  • 進行交易時,請仔細查看交易的所有詳細信息。錢包應用都會不時針對新的詐騙手法推出新的提示。在點擊確認前確保理解錢包的所有提示,並確認目標地址的准確性。

在本篇文章中,我們詳細介紹了在WalletConnect的VerifyAPI中發現的XSS漏洞及其影響,強調了Web2.0攻擊在Web3.0環境中帶來的安全風險。感謝WalletConnect團隊的快速反應和有效補救,體現了他們對用戶與Web3.0行業安全的強大責任感。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

Layer2 格局劇變:Base 生態有哪些關鍵亮點?

在激烈競爭的 L2 賽道中,原本穩坐釣魚臺的 Arbitrum 和 Optimism 似乎面臨着前...

加密泡泡啊
120 3個月前

XRP 漲至 7.5 美元?分析師告訴 XRP 大軍為純粹的煙火做好准備!

加密貨幣分析師 EGRAG 表示,XRP 即將迎來關鍵時刻,價格可能大幅上漲,這取決於能否突破關鍵...

加密泡泡啊
128 3個月前

以太坊ETF通過後 將推動山寨幣和整個加密生態大爆發

比特幣ETF通過後市場動蕩,以太坊ETF交易前景分析 比特幣ETF通過後,市場出現了先跌後漲的走勢...

加密泡泡啊
144 3個月前

ZRO為啥這么能漲?

ZRO概述 ZRO代幣,全稱為LayerZero,是LayerZero協議的本地代幣,旨在作為治理...

加密泡泡啊
105 3個月前

今晚ETH迎來暴漲時代 op、arb、metis等以太坊二層項目能否跑出百倍幣?

北京時間7月23日晚上美股开盤後 ETH 的ETF开始交易。ETH的裏程碑啊,新的時代开啓。突破前...

BNBCCC
125 3個月前

Mt Gox 轉移 28 億美元比特幣 加密貨幣下跌 ETH ETF 提前發行

2014 年倒閉的臭名昭著的比特幣交易所 Mt Gox 已向債權人轉移了大量比特幣 (BTC),作...

加密圈探長
113 3個月前