一、事件簡述
2020-06-18(文中所提及時間均為UTC時間),以太坊上的智能合約BancorNetwork被爆出存在嚴重漏洞。該漏洞由BancorNetwork團隊和白帽最先發現,并第一時間對存在被盜風險的資金進行了轉移,涉及資金50W余美元。
此次事件中,存在漏洞的合約地址主要有如下三個:
0x923cab01e6a4639664aa64b76396eec0ea7d3a5f
0x8dfeb86c7c962577ded19ab2050ac78654fea9f7
0x5f58058c0ec971492166763c8c22632b583f667f
2020-06-183:06:48,BancorNetwork團隊利用此漏洞對存在被盜風險的用戶資金進行轉移,截至2020-06-18?6:56,BancorNetwork團隊共計轉移資金約合$409,656。
另外兩個公開郵箱信息的地址:
0x052ede4c2a04670be329db369c4563283391a3ea
Mox Bank發言人回應疑凍結部分加密交易賬戶:對造成不便衷心致歉,檢視后可繼續使用:金色財經報道,香港虛擬銀行Mox Bank多位用戶反映旗下銀行賬戶在短時間內被數度凍結,有用戶分析此事或與近日Mox Bank對部分買賣加密貨幣客戶較敏感有關。對此,Mox Bank發言人回應稱:“我們一直重視所有客戶安全安心使用我們的服務,以及保障客戶權益。因此,我們根據既有的制度檢視個別客戶的賬戶,以作為我們保障客戶權益的措施之一。我們已通知受影響客戶有關賬戶因而暫時停止使用,完成檢視后,客戶將可繼續使用賬戶。我們對受影響客戶造成不便衷心致歉,并感謝所有客戶的耐心等待及體諒。”據悉,此前香港金管局回應稱已知悉該事件并要求Mox Bank做出適當跟進,確保客戶關注得到妥善處理。(fx168news)[2023/7/11 10:48:52]
0x1ad1099487b11879e6116ca1ceee486d1efa7b00
也于同一時間利用此漏洞對用戶資金進行轉移,分別轉出資金$131,889和$2346。
到目前為止:
EtherScan已經將存在此漏洞的合約進行標注,如下圖所示
Banxa 4月的總交易值為1.1億美元:據NewsWire消息,澳大利亞加密貨幣支付基礎設施提供商Banxa發布報告,報告顯示4月的總交易值(TTV)為1.1億美元。自2021年初以來,該公司已處理了超過3.1億美元的交易。該公司還招募了40多名新的團隊成員以滿足不斷增長的需求。[2021/5/5 21:26:31]
圖一
BancorNetwork團隊也已對此次事件做出了回應,
詳情見
,
并于UTC時間2020-06-1721:35:53部署了新的BancorNetwork合約,合約地址為
0x2f9ec37d6ccfff1cab21733bdadede11c823ccb0
LBank將于7月29日ETF杠桿專區上線多種交易對:據官方消息,LBank將于7月29日16:00(UTC+8) ETF杠桿專區上線BCH3L(3倍做多)、BCH3S(3倍做空)、EOS3L(3倍做多)、EOS3S(3倍做空、LTC3L(3倍做多)、LTC3S(3倍做空))交易對。用戶可在網頁端或移動端“ETF專區”參與交易。同時LBank啟動了等值5千USDT獎勵的ETF充值&交易活動,用戶通過充值、交易即可參與活動瓜分獎勵。
杠桿ETF是LBank推出的永續杠桿產品,提供3倍杠桿多空交易,無需支付保證金,永無爆倉風險,后續將陸續上線更多幣種的3倍多空交易。更多詳情請關注LBank官網公告。[2020/7/28]
二、原理分析
漏洞爆出后,成都鏈安安全團隊第一時間對本次事件進行跟蹤分析,根據鏈上分析結果發現,此次事件中漏洞產生的主要原因是智能合約BancorNetwork存在一個調用權限為public的函數safeTransferFrom,通過調用此函數,可以將用戶授權給智能合約BancorNetwork的資金轉出到任意地址。
由源碼可以知,該函數為一個public函數,詳細代碼如下圖所示:
LBank將于6月15日上線ABTC:據官方消息,LBank將于2020年6月15日18:00上線ABTC/BTC和ABTC/USDT交易對,并于6月12日18:00開啟充值和提現。
此外,LBank將于6月12日11:00啟動ABTC答題領空投活動,總獎勵共26,000ABTC。6月15日18:00開啟ABTC交易大賽,總獎勵共72,000ABTC。更多詳情請關注LBank官網公告。[2020/6/11]
圖二
safeTransferFrom函數內部調用了execute函數。而execute函數的功能是調用safeTransferFrom參數中的_token代幣智能合約的transferFrom函數進行代理轉賬。execute函數源碼如下圖所示:
圖三
聲音 | 億萬富翁Mark Cuban:Facebook推出Libra的舉動是“非常危險”的:據The Verge消息,億萬富翁Mark Cuban近期接受采訪時表示,Facebook推出加密貨幣Libra的舉動是“非常危險”的,他對此解釋稱:“我根本不反對加密貨幣。我并不反對加密貨幣的分布式特性。但我認為沒有中央控制的想法有點過頭了,因為有太多的分叉,并且有很多變化和管理問題,總有一些外部因素迫使控制出現。但就Facebook而言,我認為其處于一個獨特的位置,畢竟它在全球擁有超22億用戶。通過在全球各地擁有這些觸角,他們有機會在穩定性較差的國家更具影響力。當你得到一個像Facebook這樣的公司,擁有他們擁有的權力和杠桿以及財政資源時,他們的觸角將會選擇那些貨幣和政府不穩定的非洲國家,可能產生的問題甚至導致人們死亡。因此,Facebook如果只是在發達的歐美國家推出Libra,我們尚可靜而待之。但是當它想要將其擴展到全球22億用戶時,意外后果將不可避免,而且最有可能的是一個負面的產出。”[2019/7/31]
我們通過一筆鏈上交易可以清晰的看到調用此函數的具體作用。如地址“0xc802”發起一筆交易,調用了智能合約“0x5f58”的safeTransferFrom函數,使地址”0x8a39”中的0.000000000000000003代幣MFG發送到”0x2955”,具體如下圖所示:
圖四
以上就是本次事件漏洞的原理分析,該漏洞的原理十分簡單,是因為函數的調用權限設置錯誤,將本應該只有合約本身調用的函數,設置成了任何人都可以調用。而當BancorNetwork擁有用戶的授權額度時,任何人都可以通過調用safeTransferFrom函數,以BancorNetwork的身份對用戶的資金進行代理轉賬。
針對該漏洞,有兩點值得我們進行深入分析:
1.?為什么BancorNetwork合約的safeTransferFrom函數會將權限設置成public。
2.?BancorNetwork合約的主要功能是代幣轉換,并非一個錢包,為什么用戶會有未使用的授權。
對于第一個問題,我們追蹤了safeTransferFrom函數的調用情況,發現safeTransferFrom函數只在handleSourceToken函數中被調用,用于將用戶的代幣轉移到本合約中。handleSourceToken函數源碼如下圖所示:
圖五
既然只是在handleSourceToken函數中調用,那么顯然是沒有必要設置成public權限,且根據業務來看,BancorNetwork的主要作用是用于代幣交換,并不需要用戶主動調用safeTransferFrom,也就沒有必要將safetransferFrom設置為public權限。于是我們對比了合約中其他的幾個函數,這幾個函數均被設置成了public權限。如下圖所示:
圖六
由此,針對第一個問題,我們推測將這些函數設置為public權限可能是因為合約開發人員的疏忽。而目前來看,BancorNetwork團隊新部署的合約也驗證了這個推測。根據鏈上代碼顯示,官方部署的新合約已經將相關函數權限全部進行了更改。具體代碼如下圖所示:
圖七
針對第二個問題,我們跟蹤了漏洞爆出后被轉移資金的地址,發現這些地址在對BancorNetwork授權額度時,往往超過了所需要兌換代幣的數量,且在兌換完成后,并沒有收回額度。如下圖所示:
圖八
“0x624f”開頭的地址對BancorNetwork合約授權了900000000000000個ONG代幣,此額度已經超過了ONG的發行量,相當于將“0x624f”所擁有的ONG代幣全部授權給BancorNetwork合約。而跟蹤“0x624f”開頭地址的交易我們發現,在進行完代幣兌換后,未使用完所有授權額度,但并未將授權額度收回。
綜上所述,我們推測可能是用戶考慮到要隨時使用,為了方便,一次性將所有代幣都授權給了BancorNetwork合約。也可能是BancorNetwork的前端對授權金額設定了默認值。但這種行為存在巨大的風險,一旦智能合約爆發漏洞,資金極易被攻擊者竊取。而在對后續新的BancorNetwork合約進行分析時發現,BancorNetwork團隊和用戶似乎也意識到了此問題存在的巨大風險,并做出了相應的安全防護。如下圖九、十為用戶對新合約的授權情況,對比兩筆線上交易不難看出,兩次授權的時間間隔很短,當用戶成功兌換完代幣后,剩余授權即被收回。
圖九
圖十
三、結語
BancorNetwork本次爆出的漏洞,是一個較為簡單的漏洞,此類漏洞在代碼審計過程中十分容易被發現,但此次漏洞的影響卻很大,上線僅兩天,涉及的資金就已經超過50w美元。幸而BancorNetwork團隊及時發現并修復了漏洞,否則后果不堪設想。成都鏈安-安全研究團隊在此提醒各大智能合約運營商,因區塊鏈合約部署后不可更改的特性,對比傳統軟件,上線前做好充分的代碼審計十分重要,此次事件雖未造成太大的經濟損失,但勢必會讓用戶對BancorNetwork團隊產品的安全性產生質疑。另外也提醒廣大用戶和運營商,在授權資金給第三方合約時,都應保持謹慎,切不可盲目相信“大公司”,對任何合約的授權都應當秉承最小原則,不要使自己的資金安全掌握在他人手中。
不得不說,眼下全球經濟形勢的確很糟糕,所謂二零二零,活著就好看似是自嘲,其實也是個扎心的現實。受全球新冠疫情的持續影響,過去一個月,美國失業人口已經超過3000萬,而作為人口大國,我國的城鎮人口.
1900/1/1 0:00:006月23日消息,據外媒CoinDesk的IanAllison報道稱,支付巨頭PayPal和其子公司Venmo計劃在未來三個月內為其3.25億用戶提供加密貨幣購買和出售服務,據三位知情人士透露稱.
1900/1/1 0:00:00據科創板日報消息,深交所深證區塊鏈50指數今日如期調整成分股。*ST晨鑫、奧馬電器、光環新網、文化長城、新國都5股被剔除,新納入傳化智聯、奧拓電子、紅相股份、博思軟件、數字認證5股.
1900/1/1 0:00:00本文來源:科技日報,記者張蓋倫《關于加強殘疾兒童少年義務教育階段隨班就讀工作的指導意見》明確,要發揮資源中心作用,鼓勵運用大數據、區塊鏈技術提高服務的精準性.
1900/1/1 0:00:00富國銀行預計美國企業養老金將有350億美元轉入固定資產收益領域。分析師認為,這可能會導致股市大幅拋售,并且鑒于比特幣和股票之間的相關性,這可能會使比特幣很容易出現回調.
1900/1/1 0:00:00或許多年后當人們回憶起2020年第二季度加密貨幣行業有什么熱點時,大家會不約合同的想起一個英文單詞——DeFi.
1900/1/1 0:00:00