背景
區塊鏈的世界遵循黑暗森林法則,在這個世界我們隨時可能遭受到來自不明的外部攻擊,作為普通用戶不進行作惡,但是了解黑客的作惡的方式是十分必要的。
慢霧安全團隊此前發布了區塊鏈黑暗森林自救手冊
(https://github.com/slowmist/Blockchain-dark-forest-selfguard-handbook),其中提到了不少關于針對 NFT 項目方的 Discord 進行攻擊的手法,為了幫助讀者對相關釣魚方式有更清晰的認知,本文將揭露其中一種釣魚方法,即通過惡意的書簽來盜取項目方 Discord 賬號的 Token,用來發布虛假信息等誘導用戶訪問釣魚網站,從而盜取用戶的數字資產。
釣魚事件
先來回顧一起 Discord 釣魚事件:2022 年 3 月 14 日,一則推特稱 NFT 項目 Wizard Pass 的 Discord 社區被詐騙者入侵,目前已造成 BAYC、Doodles、Clone X 等 NFT 被盜,詳情如下:
慢霧:正協助Poly Network追查攻擊者,黑客已實現439萬美元主流資產變現:7月2日消息,慢霧首席信息安全官23pds在社交媒體發文表示,慢霧團隊正在與Poly Network官方一起努力追查攻擊者,并已找到一些線索。黑客目前已實現價值439萬美元的主流資產變現。[2023/7/2 22:13:24]
(來源:https://twitter.com/SerpentAU/status/1503232270219431941)
牽出其中一個解讀:
(來源:https://twitter.com/sentinelwtf/status/1496293768542429187)
該解讀里說的 bookmark 就是瀏覽器書簽,這個書簽里的內容可以是一段 JavaScript 惡意代碼,當 Discord 用戶點擊時,惡意 JavaScript 代碼就會在用戶所在的 Discord 域內執行,盜取 Discord Token,攻擊者獲得項目方的 Discord Token 后就可以直接自動化接管項目方的 Discord 賬戶相關權限。
慢霧:Grafana存在賬戶被接管和認證繞過漏洞:金色財經報道,據慢霧消息,Grafana發布嚴重安全提醒,其存在賬戶被接管和認證繞過漏洞(CVE-2023-3128),目前PoC在互聯網上公開,已出現攻擊案例。Grafana是一個跨平臺、開源的數據可視化網絡應用程序平臺,用戶配置連接的數據源之后,Grafana可以在網絡瀏覽器里顯示數據圖表和警告。Grafana根據電子郵件的要求來驗證Azure Active Directory賬戶。在Azure AD上,配置文件的電子郵件字段在Azure AD租戶之間是不唯一的。當Azure AD OAuth與多租戶Azure AD OAuth應用配置在一起時,這可能會使Grafana賬戶被接管和認證繞過。其中,Grafana>=6.7.0受到影響。加密貨幣行業有大量平臺采用此方案用來監控服務器性能情況,請注意風險,并將Grafana升級到最新版本。[2023/6/25 21:58:31]
背景知識
要理解該事件需要讀者有一定的背景知識,現在的瀏覽器都有自帶的書簽管理器,在提供便利的同時卻也容易被攻擊者利用。通過精心構造惡意的釣魚頁面可以讓你收藏的書簽中插入一段 JavaScript 代碼,當受害者點擊書簽時會以當前瀏覽器標簽頁的域進行執行。
慢霧:仍有大部分錢包支持eth_sign,僅少部分錢包提供安全風險警告:金色財經報道,在加密貨幣NFT板塊,越來越多的釣魚網站濫用 eth_sign 簽名功能來進行盲簽欺詐,提醒或禁用這種低級的簽名方法對于保護用戶安全是至關重要的,不少 Web3 錢包已經采取相關措施來對這種危險的簽名方法進行安全提示和限制。仍有一大部分加密錢包支持 eth_sign,其中少部分錢包提供 eth_sign 安全風險警告。如果用戶仍想要使用 eth_sign,他們可以選擇支持該功能的加密錢包。但是,用戶在使用這些錢包時需要特別注意安全警告,以確保其交易的安全性。[2023/5/11 14:57:14]
以上圖為例,受害者打開了 discord.com 官網,并在這個頁面點擊了之前收藏的惡意的書簽“Hello,World!” 從而執行了一個彈窗語句,可以發現執行的源顯示的是 discord.com。
這里有一個域的概念,瀏覽器是有同源策略等防護策略的,按理不屬于 discord.com 做出的操作不應該在 discord.com 域的頁面有響應,但書簽卻繞過了這個限制。
慢霧:警惕針對 Blur NFT 市場的批量掛單簽名“零元購”釣魚風險:金色財經報道,近期,慢霧生態安全合作伙伴 Scam Sniffer 演示了一個針對 Blur NFT 市場批量掛單簽名的“零元購”釣魚攻擊測試,通過一個如圖這樣的“Root 簽名”即可以極低成本(特指“零元購”)釣走目標用戶在 Blur 平臺授權的所有 NFT,Blur 平臺的這個“Root 簽名”格式類似“盲簽”,用戶無法識別這種簽名的影響。慢霧安全團隊驗證了該攻擊的可行性及危害性。特此提醒 Blur 平臺的所有用戶警惕,當發現來非 Blur 官方域名(blur.io)的“Root 簽名”,一定要拒絕,避免潛在的資產損失。[2023/3/7 12:46:39]
可以預見書簽這么個小功能隱含的安全問題,正常添加書簽的方式會明顯看到書簽網址:
稍微有安全意識的讀者應該會直接看到網址信息明顯存在問題。
當然如果是一個構造好誘導你拖拽收藏到書簽欄到頁面呢?可以看到 twitter 鏈接中的演示視頻就是構造了這么個誘導頁面:”Drag this to your bookmarked”。
慢霧:Equalizer Finance被黑主要在于FlashLoanProvider合約與Vault合約不兼容:據慢霧區消息,6 月 7 日,Equalizer Finance 遭受閃電貸攻擊。慢霧安全團隊以簡訊形式將攻擊原理分享如下:
1. Equalizer Finance 存在 FlashLoanProvider 與 Vault 合約,FlashLoanProvider 合約提供閃電貸服務,用戶通過調用 flashLoan 函數即可通過 FlashLoanProvider 合約從 Vault 合約中借取資金,Vault 合約的資金來源于用戶提供的流動性。
2. 用戶可以通過 Vault 合約的 provideLiquidity/removeLiquidity 函數進行流動性提供/移除,流動性提供獲得的憑證與流動性移除獲得的資金都受 Vault 合約中的流動性余額與流動性憑證總供應量的比值影響。
3. 以 WBNB Vault 為例攻擊者首先從 PancekeSwap 閃電貸借出 WBNB
4. 通過 FlashLoanProvider 合約進行二次 WBNB 閃電貸操作,FlashLoanProvider 會先將 WBNB Vault 合約中 WBNB 流動性轉給攻擊者,隨后進行閃電貸回調。
5. 攻擊者在二次閃電貸回調中,向 WBNB Vault 提供流動性,由于此時 WBNB Vault 中的流動性已經借出一部分給攻擊者,因此流動性余額少于預期,則攻擊者所能獲取的流動性憑證將多于預期。
6. 攻擊者先歸還二次閃電貸,然后從 WBNB Vault 中移除流動性,此時由于 WBNB Vault 中的流動性已恢復正常,因此攻擊者使用添加流動性獲得憑證所取出的流動性數量將多于預期。
7. 攻擊者通過以上方式攻擊了在各個鏈上的 Vault 合約,耗盡了 Equalizer Finance 的流動性。
此次攻擊的主要原因在于 Equalizer Finance 協議的 FlashLoanProvider 合約與 Vault 合約不兼容。慢霧安全團隊建議協議在進行實際實現時應充分考慮各個模塊間的兼容性。[2022/6/8 4:09:22]
也就是拖著某個鏈接即可添加到書簽欄,只要釣魚劇本寫得足夠真實,就很容易讓安全意識不足的用戶中招。
要實現拖拽即可添加到書簽欄只需要構造一個 a 標簽,下面是示例代碼:
書簽在點擊時可以像在開發者工具控制臺中的代碼一樣執行,并且會繞過 CSP(Content Security Policy)策略。
讀者可能會有疑問,類似 “javascript:()” 這樣的鏈接,在添加進入到瀏覽器書簽欄,瀏覽器竟然會沒有任何的提醒?
筆者這里以谷歌和火狐兩款瀏覽器來進行對比。
使用谷歌瀏覽器,拖拽添加正常的 URL 鏈接不會有任何的編輯提醒。
使用谷歌瀏覽器,拖拽添加惡意鏈接同樣不會有任何的編輯提醒。
使用火狐瀏覽器如果添加正常鏈接不會有提醒。
使用火狐瀏覽器,如果添加惡意鏈接則會出現一個窗口提醒編輯確認保存。
由此可見在書簽添加這方面火狐瀏覽器的處理安全性更高。
場景演示
演示采用的谷歌瀏覽器,在用戶登錄 Web 端 Discord 的前提下,假設受害者在釣魚頁面的指引下添加了惡意書簽,在 Discord Web 端登錄時,點擊了該書簽,觸發惡意代碼,受害者的 Token 等個人信息便會通過攻擊者設置好的 Discord webhook 發送到攻擊者的頻道上。
下面是演示受害者點擊了釣魚的書簽:
下面是演示攻擊者編寫的 JavaScript 代碼獲取 Token 等個人信息后,通過 Discord Server 的 webhook 接收到。
筆者補充幾點可能會產生疑問的攻擊細節:
1. 為什么受害者點了一下就獲取了?
通過背景知識我們知道,書簽可以插入一段 JavaScript 腳本,有了這個幾乎可以做任何事情,包括通過 Discord 封裝好的 webpackChunkdiscord_app 前端包進行信息獲取,但是為了防止作惡的發生,詳細的攻擊代碼筆者不會給出。
2. 為什么攻擊者會選擇 Discord webhook 進行接收?
因為 Discord webhook 的格式為
“https://discord.com/api/webhooks/xxxxxx”,直接是 Discord 的主域名,繞過了同源策略等問題,讀者可以自行新建一個 Discord webhook 進行測試。
3. 拿到了 Token 又能怎么樣?
拿到了 Token 等同于登錄了 Discord 賬號,可以做登錄 Discord 的任何同等操作,比如建立一個 Discord webhook 機器人,在頻道里發布公告等虛假消息進行釣魚。
總結
攻擊時刻在發生,針對已經遭受到惡意攻擊的用戶,建議立刻采取如下行動進行補救:
1. 立刻重置 Discord 賬號密碼。
2. 重置密碼后重新登錄該 Discord 賬號來刷新 Token,才能讓攻擊者拿到的 Token 失效。
3. 刪除并更換原有的 webhook 鏈接,因為原有的 webhook 已經泄露。
4. 提高安全意識,檢查并刪除已添加的惡意書簽。
作為用戶,重要的是要注意任何添加操作和代碼都可能是惡意的,Web 上會有很多的擴展看起來非常友好和靈活。書簽不能阻止網絡請求,在用戶手動觸發執行的那一刻,還是需要保持一顆懷疑的心。
本文到這邊就結束了,慢霧安全團隊將會揭露更多關于黑暗森林的攻擊事件,希望能夠幫助到更多加密世界的人。
By:耀@慢霧安全團隊
當下,元宇宙是一個熱度持續上升的新概念,社會各界都對其廣泛關注,企業可以通過元宇宙概念吸引資本市場的關注,同時也可以借助元宇宙概念進行營銷革新和用戶體驗革新等.
1900/1/1 0:00:00“2022是DAO的一年”,哪些組織值得關注?鏈新(ID:ChinaBlockchainNews)原創??作者 | 廖羽自2021年起,Web3.0連同DAO、SocialFi等相關領域.
1900/1/1 0:00:00在2021年的7月末,一個名為“PleasrDAO“的去中心化自治組織聚集在一起,花費高達400萬美元購買下 Wu-Tang Clan專輯“Once Upon a Time in Shaolin.
1900/1/1 0:00:00加密KOL Naval近日在播客采訪了以太坊創始人Vitalik,Vitalik在播客里回顧了以太坊的起源故事,并親自解釋了什么是以太坊,以太坊的優缺點,以太坊的哲學乃至區塊鏈技術的未來等問題.
1900/1/1 0:00:00Scroll的目標是構建一個完全兼容EVM的zk-Rollup。4月22日,Scroll宣布經過一年的構建,已經完成了解決方案的搭建,上線了PoC測試網.
1900/1/1 0:00:00Crypto 領域流行部落主義,一直如此。CoinGecko 市值排行榜的第一名只有一個,我們都想要成為第一.
1900/1/1 0:00:00