近日據慢霧區(qū)情報顯示,針對門羅幣(XMR)轉賬鎖定攻擊在多個交易所出現,慢霧安全團隊在收到情報第一時間進行分析跟進,本著負責任披露的原
近日據慢霧區(qū)情報顯示,針對門羅幣(XMR)轉賬鎖定攻擊在多個交易所出現,慢霧安全團隊在收到情報第一時間進行分析跟進,本著負責任披露的原則我們第一時間在慢霧區(qū)進行了預警并為我們所服務的客戶進行了及時的情報同步以及協(xié)助檢測和修復。如有其他需要提供驗證和檢測服務歡迎聯系慢霧安全團隊。
攻擊步驟
0x01:通過 monero-wallet-cli 輸入密碼登錄錢包
0x02:通過命令發(fā)送鎖定交易
0x03:轉賬完成,交易所未進行鎖定交易(locked_transfer)檢測,接收到被設置鎖定區(qū)塊高度才能解鎖的幣(可以理解為鎖定了指定時間)。
0x04:惡意用戶立即提幣走人,留下交易所一臉懵逼。
造成影響
首先該攻擊不會導致交易所任何資金損失,但是會鎖定了交易所 XMR 流動性。
極端情況舉例:如果交易所收到的都是需要鎖定一年甚至更多年的門羅幣則會導致一年內用戶來提幣的時候無幣可以提(只能去購買額外的幣來給用戶提取)。
關于 locked_transfer 命令
monero-wallet-cli 關于 locked_transfer 命令解釋如下:
locked_transfer [index=
轉賬命令:
locked_transfer FromAddress ToAddress 0.0101 20000
FromAddress:發(fā)送地址(一般為攻擊者錢包地址)
ToAddress:接收地址(一般為交易所錢包地址)
0.0101:為轉賬金額
20000:為鎖定區(qū)塊數
如何防護
一般交易所會通過 get_transfers RPC 接口來解析 XMR 交易檢測充值是否到賬,在進行解析的時候只需要對 unlock_time 字段進行判斷是否大于 0 則可以進行有效檢測。
注:unlock_time 為 int 類型,如果大于 0 則意味著該交易有鎖定區(qū)塊,為惡意交易可以不予確認到賬。為了避免充值不予到賬損害“用戶”利益可以進行另外一種處理:判斷鎖定區(qū)塊是否到達,如果未到達則不予入賬。
所有受影響 RPC 接口
(1)get_transfer
(2)get_bulk_payments
(3)show_transfer
(4)get_payments
同理:在其他地方使用了如上四個接口的地方也需要對 unlock_time 字段進行判斷是否大于 0 ,大于 0 則不予充值到賬。(慢霧安全團隊)
該問題之前在 HackerOne 也有被白帽子提過漏洞賞金,其中門羅官方回復: