使用過MetaMask版本低于10.11.3的用戶,如在導入助記詞時點擊了ShowSecretRecoveryPhrase,那么助記詞可能泄露了。
2022年6月16日,MetaMask官方公布白帽子發現的一個被稱為demonicvulnerability的安全問題,漏洞影響的版本<10.11.3,由于MM的用戶體量較大,且基于MM進行開發的錢包也比較多,所以這個漏洞的影響面挺大的,因此MM也慷慨支付了白帽子5萬刀的賞金。當團隊向我同步了這個漏洞后,我開始著手對這個漏洞進行分析和復現。
漏洞分析
慢霧:過去一周Web3生態因安全事件損失約2400萬美元:6月19日消息,據慢霧發推稱,過去一周Web3生態系統因安全事件損失約2400萬美元,包括Atlantis Loans、Ben Armstrong、TrustTheTrident、FPG、Sturdy、Pawnfi、Move VM、Hashflow、DEP/USDT與LEV/USDC、Midas Capital,總計23,795,800美元。[2023/6/19 21:46:18]
白帽子將這個漏洞命名為demonicvulnerability,具體的漏洞描述比較復雜,為了讓大家更好的理解這個問題,我盡可能用簡單的表述來說明這個問題。在使用MM瀏覽器擴展錢包導入助記詞時,如果點擊"ShowSecretRecoveryPhrase"按鈕,瀏覽器會將輸入的完整助記詞明文緩存在本地磁盤,這是利用了瀏覽器本身的機制,即瀏覽器會將Tabs的頁面中的Text文本從內存保存到本地,以便在使用瀏覽器的時候可以及時保存頁面的狀態,用于下次打開頁面的時候恢復到之前的頁面狀態。
慢霧:Rubic協議錯將USDC添至Router白名單,導致已授權合約用戶USDC遭竊取:12月25日消息,據慢霧安全團隊情報,Rubic跨鏈聚合器項目遭到攻擊,導致用戶賬戶中的USDC被竊取。慢霧安全團隊分享如下:1. Rubic是一個DEX跨鏈聚合器,用戶可以通過RubicProxy合約中的routerCallNative函數進行Native Token兌換。在進行兌換前,會先檢查用戶傳入的所需調用的目標 Router是否在協議的白名單中。
2. 經過白名單檢查后才會對用戶傳入的目標Router進行調用,調用數據也由用戶外部傳入。
3. 不幸的是USDC也被添加到Rubic協議的Router白名單中,因此任意用戶都可以通過RubicProxy合約任意調用USDC。
4. 惡意用戶利用此問題通過routerCallNative函數調用USDC合約將已授權給RubicProxy合約的用戶的USDC通過transferFrom接口轉移至惡意用戶賬戶中。
此次攻擊的根本原因在于Rubic協議錯誤的將USDC添加進Router白名單中,導致已授權給RubicProxy合約的用戶的USDC被竊取。[2022/12/26 22:07:00]
基于對這個漏洞的理解,我開始進行漏洞復現,由于MM僅對這個漏洞進行簡要的描述并不公開漏洞細節,所以在復現的時候遇到了如下的問題:
慢霧: 警惕比特幣RBF風險:據BitMEX消息,比特幣于區塊高度666833出現陳腐區塊,并產生了一筆 0.00062063 BTC 的雙花交易。根據 BitMEX提供的交易內容來看,雙花的兩筆交易的nSequence字段的值都小于0xffffffff -1。慢霧安全團隊初步認為此次雙花交易有可能是比特幣中的RBF交易。[2021/1/20 16:38:01]
緩存被記錄到磁盤中的文件路徑未知
緩存何時被記錄到磁盤未知
為了解決問題1,我開始對瀏覽器的緩存目錄結構進行分析和測試,發現在使用瀏覽器(chrome)的時候相關的Tabs緩存是記錄到了如下的目錄:
慢霧:Cover協議被黑問題出在rewardWriteoff具體計算參數變化導致差值:2020年12月29日,慢霧安全團隊對整個Cover協議被攻擊流程進行了簡要分析。
1.在Cover協議的Blacksmith合約中,用戶可以通過deposit函數抵押BPT代幣;
2.攻擊者在第一次進行deposit-withdraw后將通過updatePool函數來更新池子,并使用accRewardsPerToken來記錄累計獎勵;
3.之后將通過_claimCoverRewards函數來分配獎勵并使用rewardWriteoff參數進行記錄;
4.在攻擊者第一次withdraw后還留有一小部分的BPT進行抵押;
5.此時攻擊者將第二次進行deposit,并通過claimRewards提取獎勵;
6.問題出在rewardWriteoff的具體計算,在攻擊者第二次進行deposit-claimRewards時取的Pool值定義為memory,此時memory中獲取的Pool是攻擊者第一次withdraw進行updatePool時更新的值;
7.由于memory中獲取的Pool值是舊的,其對應記錄的accRewardsPerToken也是舊的會賦值到miner;
8.之后再進行新的一次updatePool時,由于攻擊者在第一次進行withdraw后池子中的lpTotal已經變小,所以最后獲得的accRewardsPerToken將變大;
9.此時攻擊者被賦值的accRewardsPerToken是舊的是一個較小值,在進行rewardWriteoff計算時獲得的值也將偏小,但攻擊者在進行claimRewards時用的卻是池子更新后的accRewardsPerToken值;
10.因此在進行具體獎勵計算時由于這個新舊參數之前差值,會導致計算出一個偏大的數值;
11.所以最后在根據計算結果給攻擊者鑄造獎勵時就會額外鑄造出更多的COVER代幣,導致COVER代幣增發。具體accRewardsPerToken參數差值變化如圖所示。[2020/12/29 15:58:07]
Tabs緩存路徑:
/Users/$(whoami)/Library/ApplicationSupport/Google/Chrome/Default/Sessions/
然后繼續解決問題2:Sessions目錄會記錄Tabs的緩存,為了找出緩存被記錄的時間節點,我對導入助記詞的整個流程進行了分解,然后在每一步操作之后去觀察Sessions的數據變化。發現在如下這個頁面輸入助記詞數據后,需要等待10-20s,然后關閉瀏覽器,明文的助記詞信息就會被記錄到Sessions緩存數據中。
分析結論
用戶正常在使用MM的時候是將助記詞相關的數據放入內存中進行存儲,一般認為是相對較為安全的,但是由于demonicvulnerability這個漏洞導致助記詞會被緩存到本地磁盤,因此就會有如下的新的利用場景:
明文的助記詞數據緩存在本地磁盤,可以被其他應用讀取,在PC電腦中很難保證其他應用程序不去讀取Sessions緩存文件。
明文的助記詞數據緩存在本地磁盤,如果磁盤未被加密,可以通過物理接觸恢復助記詞。比如在類似維修電腦等場景下,當他人對電腦進行物理接觸時可以從硬盤中讀取助記詞數據。
作為普通用戶,如果你使用過MetaMaskVersion<10.11.3,且在導入助記詞的時候點擊了ShowSecretRecoveryPhrase,那么你的助記詞有可能泄露了,可以參考MetaMask的文章對磁盤進行加密并更換錢包遷移數字資產。
作為擴展錢包項目方,如果采用了在Tabs頁面中以Text的方式輸入助記詞導入錢包,均受到demonicvulnerability漏洞的影響,可以參考MetaMaskVersion>=10.11.3的實現,為每個助記詞定義單獨的輸入框,并且輸入框的類型為Password。
原文標題:《MetaMask瀏覽器擴展錢包demonic漏洞分析》
撰文:Thinking@慢霧安全團隊
來源:ForesightNews
Tags:WARREWARDVERUSDswarm幣怎么挖礦REWARDSUniversal Labsusdm幣是什什么穩定幣
6月21日消息,云南省昆明市局呈貢分局經偵大隊近日摧毀兩個有關用虛擬貨幣傳銷團伙“5·26某平臺”“5·30某平臺”,涉案金額達4.6億元.
1900/1/1 0:00:00發行數字藏品的平臺“玩法”雷同:數字藏品的獲得途徑包括預售、拍賣、抽獎、開盲盒、合成、拉新用戶注冊等方式,用戶花幾元至幾百元即可搶購,發售即“秒光”成為常態.
1900/1/1 0:00:00最近有關WEB3的事件越來越多、越來越大,一篇《WEB3.0與中國無關》的文章上線兩小時就火遍全網,然后消失;著名投資機構A16Z已投資超過90個WEB3項目.
1900/1/1 0:00:00隨著區塊鏈技術的蓬勃發展,數量龐多的區塊鏈項目隨之涌現,并形成了具有不同特點、針對不同應用場景的區塊鏈網絡.
1900/1/1 0:00:00行情急轉直下,市場漸入熊市。與日俱增的全體恐慌情緒,以及資金出逃趨勢下,在牛市周期煊赫一時的眾多頭部玩家,自然無法獨善其身,紛紛通過裁員手段應對寒冬.
1900/1/1 0:00:00Bigverse是集數字藝術創新、元宇宙空間打造以及內容生態社區創建于一體的元宇宙品牌,支持數字藏品二次交易,是國內目前用戶數量較大且發展較快的一個數字藝術電商平臺.
1900/1/1 0:00:00