前言

近日,Punisher安全團隊聯合HELM區塊鏈安全實驗室根據蜜罐捕捉到了一枚交易所的0day。據分析,此0day是由於某開發方代碼於地下黑市源碼泄露而導致的一些漏洞被髮掘。Punisher安全團隊捕捉到的是一枚邏輯漏洞,黑客可以通過漏洞修改交易所任意賬戶的密碼,並繞過Google安全驗證碼和短信驗證碼。此外,還有一枚可以直接獲取webshell權限的漏洞仍在地下黑市流傳。

使用此代碼的交易所超過100家,目前存在漏洞的超過20家(此處爲了保護交易所安全不公佈受影響範圍)。Punisher安全團隊深入調查,發現在半年前有更多使用此源碼的交易所,有一部分在黑客的摧殘下倒閉。Punisher安全團隊對其交易量進行統計,預計交易額達到50多億(以其官網的數據爲參考),已確認統計有44億。

漏洞解析

爲了保證更多交易所的資金安全,督促其及時及修復漏洞,Punisher安全團隊對此漏洞以及黑客的攻擊手法進行分析披露,並提供修復方式,希望各大交易所防患於未然。

此漏洞存在於找回密碼處,此套源碼的整站驗證邏輯均存在問題。

黑客只需註冊自己的賬戶,當接收到的郵件時,黑客可以更換成要改用戶的郵箱進行密碼重置。同樣的,利用手機驗證碼找回也是如此。

那麼只有重置的漏洞還達不到大規模的攻擊條件,造成的損失也是有限的。

但是黑客可以有如下手段達到大規模的盜取用戶數字資產:

1. 加入官方QQ羣、電報羣、收集用戶的賬戶信息;

2. 通過各種渠道,如通過社工、郵件釣魚獲取用戶密碼;

3. 生成號碼段以批量爆破賬戶。

這裏介紹第一種方式:

加入QQ羣、電報羣后,登錄其羣管理,從接口處寫腳本抓取成員信息。

這時候再結合此套系統的特性:當用戶存在且密碼錯誤時提示“密碼錯誤”,當用戶不存在時提示“用戶名或者或者密碼錯誤”。

篩選出存在的用戶之後就可以用burpsuite批量修改用戶密碼,據統計,此方式獲取到的用戶名存活率達到70%以上。

而進行二次驗證的手機驗證碼或者Google安全碼則由於邏輯設計不嚴失去了作用。

因爲二次驗證只於前端驗證,只要服務器返回的包json爲true則前端發起請求登錄成功。

這裏我們不管手機驗證碼和Google驗證碼爲多少,也不用發送,只需要直接修改返回的json內容。

根據HELM安全實驗室威脅情報系統提供的情報,發現有幾家交易所大量的賬戶被修改而引發了暫停訪問或者維護,但被盜去數字貨幣的的僅僅是是賬戶資金比較大的用戶。而後punisher安全團隊進一步分析推斷黑客的攻擊手法並嘗試復原。

此時,黑客修改密碼後無法確定哪一個賬戶上有大量資金,但是這時候可以寫腳本批量登錄,獲取用戶各個幣種的數量。

然後批量登錄綁定地址提幣,此時提幣流程與正常無異。

對此黑客提幣的大致流程分析完成。

深入分析

我們進一步進行了跟蹤此次0day造成的攻擊事件,發現如果交易所修復不完善則可能使被攻擊過的用戶再次遭受攻擊,因爲遭受過攻擊的用戶若被黑客綁定Google驗證碼之後用戶無法正常解綁。

後續跟蹤交易所的動態,發現有些交易所因此受到用戶的懷疑,並且平臺幣有大幅度波動。

對此,HELM區塊鏈安全實驗室根據對多家交易所安全審計的經驗對風控要求提出如下建議:

1. 修改密碼超過24小時才能提幣。

2. 提幣使用新地址需要電話、郵件或社交方式確認。

3. 修改密碼的時候每次加一串隨即的token存於session中。

4. Google驗證碼、短信驗證碼驗證不應該置於前端驗證。

5. 提幣時ip有異常應當警報。

關於Punisher團隊

Punisher團隊致力於交易所漏洞挖掘、智能合約審計,只爲建立良好的區塊鏈安全生態,爲各個交易所安全護航,無意影響各個交易所的業務。由於此漏洞已在黑市中遭利用,爲避免平臺與用戶損失,對此披露提醒各大交易所自檢。Punisher安全團隊與HELM區塊鏈安全實驗室也願意協助修復。

感謝HELM區塊鏈安全實驗室對此次攻擊事件的支持,其威脅情報的提供爲了爲此次的分析提供了完整的素材和思路。

這裏爲HELM區塊鏈安全實驗室打個小廣告,HELM區塊鏈安全實驗室專注區塊鏈安全研究,交易所威脅情報,有多家交易所安全審計的經驗,並將在未來協助監管機構,爲區塊鏈行業的規範與安全而努力。

*本文作者:Punisher安全團隊,轉載請註明來自FreeBuf.COM

相關文章