原文作者:慢霧安全團隊
2022年6月16日,MetaMask官方公布白帽子發現的一個被稱為demonicvulnerability的安全問題,漏洞影響的版本<10.11.3,由于MM的用戶體量較大,且基于MM進行開發的錢包也比較多,所以這個漏洞的影響面挺大的,因此MM也慷慨支付了白帽子5萬刀的賞金。當團隊向我同步了這個漏洞后,我開始著手對這個漏洞進行分析和復現。
漏洞分析
白帽子將這個漏洞命名為demonicvulnerability,具體的漏洞描述比較復雜,為了讓大家更好的理解這個問題,我盡可能用簡單的表述來說明這個問題。在使用MM瀏覽器擴展錢包導入助記詞時,如果點擊"ShowSecretRecoveryPhrase"按鈕,瀏覽器會將輸入的完整助記詞明文緩存在本地磁盤,這是利用了瀏覽器本身的機制,即瀏覽器會將Tabs的頁面中的Text文本從內存保存到本地,以便在使用瀏覽器的時候可以及時保存頁面的狀態,用于下次打開頁面的時候恢復到之前的頁面狀態。
慢霧:攻擊Ronin Network的黑客地址向火幣轉入3750枚 ETH:3月30日消息,慢霧發推稱,攻擊Axie Infinity側鏈Ronin Network的黑客地址向交易所火幣轉入3750枚ETH。此前金色財經報道,Ronin橋被攻擊,17.36萬枚ETH和2550萬USDC被盜。[2022/3/30 14:26:38]
基于對這個漏洞的理解,我開始進行漏洞復現,由于MM僅對這個漏洞進行簡要的描述并不公開漏洞細節,所以在復現的時候遇到了如下的問題:
緩存被記錄到磁盤中的文件路徑未知
慢霧:DOD合約中的BUSD代幣被非預期取出,主要是DOD低價情況下與合約鎖定的BUSD將產生套利空間:據慢霧區情報,2022 年 3 月 10 日, BSC 鏈上的 DOD 項目中鎖定的 BUSD 代幣被非預期的取出。慢霧安全團隊進行分析原因如下:
1. DOD 項目使用了一種特定的鎖倉機制,當 DOD 合約中 BUSD 數量大于 99,999,000 或 DOD 銷毀數量超過 99,999,000,000,000 或 DOD 總供應量低于 1,000,000,000 時將觸發 DOD 合約解鎖,若不滿足以上條件,DOD 合約也將在五年后自動解鎖。DOD 合約解鎖后的情況下,用戶向 DOD 合約中轉入指定數量的 DOD 代幣后將獲取該數量 1/10 的 BUSD 代幣,即轉入的 DOD 代幣數量越多獲得的 BUSD 也越多。
2. 但由于 DOD 代幣價格較低,惡意用戶使用了 2.8 個 BNB 即兌換出 99,990,000 個 DOD。
3. 隨后從各個池子中閃電貸借出大量的 BUSD 轉入 DOD 合約中,以滿足合約中 BUSD 數量大于 99,999,000 的解鎖條件。
4. 之后只需要調用 DOD 合約中的 swap 函數,將持有的 DOD 代幣轉入 DOD 合約中,既可取出 1/10 轉入數量的 BUSD 代幣。
5. 因此 DOD 合約中的 BUSD 代幣被非預期的取出。
本次 DOD 合約中的 BUSD 代幣被非預期取出的主要原因在于項目方并未考慮到 DOD 低價情況下與合約中鎖定的 BUSD 將產生套利空間。慢霧安全團隊建議在進行經濟模型設計時應充分考慮各方面因素帶來的影響。[2022/3/10 13:48:45]
緩存何時被記錄到磁盤未知
慢霧:攻擊者系通過“supply()”函數重入Lendf.Me合約 實現重入攻擊:慢霧安全團隊發文跟進“DeFi平臺Lendf.Me被黑”一事的具體原因及防御建議。文章分析稱,通過將交易放在bloxy.info上查看完整交易流程,可發現攻擊者對Lendf.Me進行了兩次“supply()”函數的調用,但是這兩次調用都是獨立的,并不是在前一筆“supply()”函數中再次調用“supply()”函數。緊接著,在第二次“supply()”函數的調用過程中,攻擊者在他自己的合約中對Lendf.Me的“withdraw()”函數發起調用,最終提現。慢霧安全團隊表示,不難分析出,攻擊者的“withdraw()”調用是發生在transferFrom函數中,也就是在Lendf.Me通過transferFrom調用用戶的“tokensToSend()”鉤子函數的時候調用的。很明顯,攻擊者通過“supply()”函數重入了Lendf.Me合約,造成了重入攻擊。[2020/4/19]
為了解決問題1,我開始對瀏覽器的緩存目錄結構進行分析和測試,發現在使用瀏覽器(chrome)的時候相關的Tabs緩存是記錄到了如下的目錄:
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。
參考鏈接
Tags:DODUSDBUSDIONDODO TokenUSDEBT幣BUSDX FuelMetan Evolutions
Period:13:00(UTC)onJune16-13:00(UTC)onJune23,2022How?to?Participate: JOINNOW? Clickthe?buttonatth.
1900/1/1 0:00:00加密對沖基金三箭在市場急劇下滑后面臨大規模清算——這可能會侵蝕公司的持股。在創始人朱蘇在推特上表示,該公司正在“與相關方溝通”并致力于“解決這個問題”之后,人們開始猜測三箭的進一步困境.
1900/1/1 0:00:00在加密熊市背景下,NFT市場已經從「我們都會成功」變成了「我們都會死去」。在過去的幾周時間,加密行業發生了翻天覆地的變化,NFT市場情緒也變得低迷且“反烏托邦”,一些NFT創作者為了宣泄自己的感.
1900/1/1 0:00:00近期,受到美聯儲加息、宏觀環境收緊、機構接連暴雷清算等影響,加密市場呈現斷崖式下降。此前野蠻生長的NFT市場也遭受打擊,藍籌項目價格多日下探,昨日,成交量連日低迷的市場卻出現異動,CryptoP.
1900/1/1 0:00:00摘要:聚焦區塊熱點,傳遞價值信息過去一周,京東“618”數字人民幣消費金額已達4億元;美聯儲7月加息75個基點的概率為92.1%;YugaLabs聘請佳士得NFT團隊關鍵成員擔任CryptoPu.
1900/1/1 0:00:00尊敬的用戶:??? BKEX舉辦的"新用戶注冊領盲盒第一期6月20日"活動結果已出,相關空投獎勵已2022年6月20日18:00發放完成.
1900/1/1 0:00:00