曲速未來:門羅幣假充值漏洞分析區塊鏈
曲速區:最近關于交易所的假充值漏洞層出不窮,很顯然,交易所與公鏈的對接并沒有我們想象得那么完善。在門羅幣的問題披露之后,然后對此進行了相關回顧分析,供行業內參考。
前言
最近關于交易所的假充值漏洞層出不窮,很顯然,交易所與公鏈的對接并沒有我們想象得那么完善。在門羅幣的問題披露之后,然后對此進行了相關回顧分析,供行業內參考。
在這之前,就已經有消息說過瑞波幣(XRP)存在假充值漏洞(一個類似于之前披露的USDT及以太坊代幣假充值漏洞),已有真實攻擊在發生,一旦攻擊成功,會非常嚴重。而這個漏洞在14年的時候就已經有進行過披露了。
據發現門羅幣安全漏洞的研究人員稱,門羅幣存在一個允許從數字貨幣交易所中盜竊的漏洞。根據嚴重程度,該漏洞在可能的10中排名第9。Bug Bounty Hunter發現了Monero錢包中的漏洞。Jason Rhineland在HackerOne中提交了一篇文章,他披露了一個門羅幣的業務邏輯問題。
根據當時的說法是修復了一個錢包余額顯示錯誤,這似乎無害,但這個錯誤也延伸到了交易所:例如,1 XMR充值到交易所,并且重復發送TX pubkey,交易所中會顯示收到了2 XMR存款,然后允許攻擊者從交易所的錢包中提取2 XMR。攻擊者可以反復利用這一點來吸取所有交易所的余額。
該漏洞允許網絡犯罪分子偽造交易數據,以誘騙虛擬貨幣運營商的支持人員使用XMR手動記入其用戶帳戶。每增加一行代碼就會增加帳戶上顯示的Monero數量,讓員工不得不履行任何用戶手動處理交易的用戶。由于Monero中的Bug,Altex交易所遭受重大損失。基于門羅幣的幣也容易受到同樣的錯誤,正如加密貨幣運營商Altex的錢包中的ARQ幣的黑客行為所證明的那樣。
漏洞分析
該問題在今年6月11就已經被用戶發現,并在門羅幣的GitHub倉庫上提交了相關的問題。
該用戶稱他在執行show_transfers out指令的時候客戶端給他返回了錯誤的轉賬數量,并表示非常怪異。
隨后,在當天門羅幣的官方團隊便對此進行了修復,并發布了修復的代碼。
右方的代碼為已修復的代碼,其實對于漏洞的修復關鍵代碼就是被紅框標記的那一段。我們來細看一下。
以上便是最主要的修復代碼,大概意思是判斷當前事務的pubkey是否在之前的pubkey中已存在,若已存在便跳過該事務。
若沒有加上這段代碼,會造成怎樣的后果呢?
每筆交易的pubkey的都是唯一的,所以若兩筆交易的pubkey一樣便意味這兩筆交易是完全一樣的重復交易,應該在保留其中一筆交易之后其他的重復交易完全忽略。
攻擊者可以發送大量重復的交易給對方,這在門羅幣中是允許的,因為最終計算余額不會計算重復的交易,重復的交易會被忽略。但是由于該漏洞修復之前,門羅幣客戶端的show_transfers指令并沒有跳過重復的交易,所以每筆重復交易的轉賬金額也會被計算在內并最終輸出出來。
也就是說,當某個人或者交易所通過
show_transfers指令來確認入賬資金的時候,便會出現問題,一個很常見的攻擊場景便是攻擊者對交易所的充值地址發送多條重復交易,若交易所校驗不嚴謹沒有檢測真實錢包收賬余額,僅僅通過show_transfers來確認用戶充值的話,便會出現假充值漏洞,導致交易所給用戶充值的余額和交易所自己實際收到的余額不符,攻擊者假充值成功后可以進行消費或提款。
曲速未來實驗室提醒:
交易所使用門羅幣客戶端v0.12.3.0或更高的版本來代替舊版本。
交易所加強充值驗證邏輯,例如錢包實際余額驗證。
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。