當前位置:
首頁 > 最新 > Bancor 危機:Token 背後潛伏的「上帝之手」

Bancor 危機:Token 背後潛伏的「上帝之手」

本文作者:安比(SECBIT)實驗室 & 輕信科技(LedgerGo)

風險提示:包括 Status 和 FunFair 在內的部分國內外熱門區塊鏈項目,智能合約存在管理員許可權過高的問題,或導致項目存在過度中心化的風險,相關 Token 生態極易發生單點失效。致命問題可能會出現在兩個方面:一是項目方濫用許可權,二是超級管理員身份被盜用。這兩種情況一旦發生,相關 Token 生態可能會迅速崩塌。

恐怖的智能合約管理員許可權

作為比特幣和區塊鏈愛好者,我們崇尚去中心化。然而,很多持幣者可能還不太清楚,目前各類 Token 項目智能合約管理員擁有超級許可權竟已逐漸成為常態。據我們不完全統計,排名前 570 名的 Token 合約中,有342個合約存在只有管理員能調用的功能(onlyOwner),不少合約更存在管理員任意鑄幣燒幣凍結賬戶關停轉賬等過高許可權 [1]。

安比(SECBIT)實驗室研究了排名靠前的 Status (SNT) 和 FunFair (FUN) 項目。我們認為這兩個熱門項目都存在非常嚴重的管理員許可權過高問題。

Status 合約中有名為 Controller 的管理員角色,可調用 往任意地址增發代幣,可調用 銷毀任意地址上的代幣 [2]。但 Status 項目的白皮書並沒有相關特殊許可權聲明。而且,這兩個超級許可權函數在實現上,並沒有觸發 或 事件,只有普通的 事件。

倘若有人利用管理員身份作惡,社區可能難以第一時間發現。通過掃描區塊鏈數據我們發現,目前 Status 團隊僅於 2017 年 6 月 19 日依次傳入極小值成功調用了增發和銷毀的函數進行測試,因此普通用戶無需過分恐慌。但需要知道的是官方團隊隨時保留有這樣的超級許可權。

此外,Status 合約還應用了可升級的代理合約機制,管理員可以通過任意設置代理合約 controller 地址的方式,在關鍵函數前面插入可升級的校驗邏輯,來影響轉賬等關鍵操作。

知名的 FunFair (FUN) 項目也存在與 Status 類似的問題 [3]。白皮書中並未提及其 Token 合約中的特殊許可權;通常原本應當在眾籌後一定時間內關閉的鑄幣等功能,項目方依然未關閉。倘若有人作惡,增發巨額數量的 Token 至市場上拋售,後果不堪設想。

此外還有不少項目有同樣的問題。我們呼籲相關項目方應立即向社區做好風險告知特殊許可權披露,社區參與者也可以積極發揮監督力量。

Token 持有者有權了解,項目方也有義務披露以下這些內容:

Token 及業務合約中項目方擁有的特殊許可權明細

項目方為何需要這些特殊許可權

特殊許可權會在哪些情況下使用

特殊許可權被濫用會發生哪些後果

哪些特殊許可權可以被永久關閉以及何時關閉

特殊許可權動用歷史記錄的詳細說明

特殊許可權動用的監控渠道

項目方採取何種措施來保障特殊許可權不被濫用和盜用

如何通過更好的智能設計提升社區治理水平

此外,交易所作為區塊鏈項目生態中的中堅力量,也應當積極督促項目方限制過高許可權以及透明運營

管理員許可權過高造成損失的真實案例

目前為止還沒有熱門項目團隊利用超級許可權作惡的證據,或許我們可以舒一口氣。但即使在信任官方團隊不會主動作惡的前提下,惡性安全事件依然有可能發生。

加密貨幣交易平台 Bancor 於 7 月 10 日稱遭到攻擊,丟失 24,984 個 ETH,3,236,967 個 BNT,229,356,645 個 NPXS,折演算法幣金額為 1250 萬美金的以太坊,1000 萬美金的 Bancor 代幣和 100 萬美金的 Pundix 代幣。

初期不少媒體報道稱 Bancor 智能合約存在安全漏洞。安比(SECBIT)實驗室遂對此安全事件進行追溯分析

Bancor 主要合約包括 SmartToken 和 BancorConverter,分別為 ERC20 Token 合約以及與業務相關的 Token 轉換交易合約。

本次 Bancor 平台被盜事件與 BancorConverter 合約有關,攻擊者(黑客/內鬼)極有可能獲取了 賬戶的私鑰。

而此賬戶正是轉換代幣合約 BancorConverter()的 owner,同樣擁有極高許可權。owner 作為該合約的所有者和管理員,有唯一的許可權通過 方法提走合約中的全部 ERC20 Token 至任意地址。

第一次攻擊發生在以太坊主網區塊高度 5930096,北京時間 7 月 9 日 8 時 6 分。攻擊者利用 owner 身份,首先調用 轉走 0.1 ERC20 ETH 進行攻擊測試[4]。

三分鐘後,攻擊者再次轉走 22000 巨額數量的 ERC20 ETH 至其控制的地址()上 [5]。

隨後,攻擊者再調用 Ether Token 合約()的 方法,將 ERC20 版本的以太代幣兌換為真實以太幣 [6]。

至此,22000 個 ETH 便完全被攻擊者借用管理員身份所盜走。

攻擊者還控制了以下賬戶,如法炮製地偷走其賬戶餘額,以及其所管理合約中的代幣。

目前,區塊鏈瀏覽器網站 EtherScan 已將攻擊者的地址標註為 Fake_Phishing1701 和 Fake_Phishing1702。

此外,Bancor SmartToken ERC20 合約也由 owner 完全控制,目前是一個名為 MultiSigWallet 的合約,暫未被盜用。

owner 對 SmartToken 合約具有以下許可權:

owner 可通過 disableTransfers() 任意禁用轉賬功能

owner 可通過 issue() 任意增發代幣

owner 可通過 destroy() 任意銷毀代幣

以上這些功能均通過 進行限定,換句話說,owner 對 Bancor 合約擁有最高許可權。

Bancor 團隊如何處理被盜事件

Bancor 項目方在攻擊發生後,識別出攻擊者地址,聲稱凍結了攻擊者偷來的 BNT 代幣。經我們調查,Bancor 管理員實際動用了方法來「銷毀」用戶手中的 Token。

管理員可以從任意賬戶 中扣除任意金額 的 Token,同時將總供應量 縮減。

這就是常說的燒幣功能。由於攻擊者在得手後,將偷來的幣分散到若干個地址中。Bancor 的管理員不得不挨個依次調用 來銷毀對應地址的代幣,再調用 方法將燒毀的幣重新增發到自己手中。但此補救方法對於 NPXS Token 和已轉走的 ETH 無效,這些被盜的幣將被轉至交易所拋售。

Bancor 團隊也發表聲明稱普通用戶的錢包沒有受到影響,並進一步解釋鑄幣、燒幣以及存儲大量以太幣是他們協議中價格發現機制的一部分。

Bancor 安全事件的影響與反思

除開巨額被盜事件,Bancor 團隊的這一聲明和處理方式,同樣引起了社區的恐慌。人們紛紛質疑 Bancor 項目智能合約中 owner 管理員的超級許可權,甚至稱之為「後門」。

Udi Wertheimer 早在一年前就曾發文抨擊 Bancor 項目無論是眾籌合約還是 ERC20 Token 合約都缺乏良好的設計,稱所有的 Token 都由 Bancor 團隊完全掌控,管理員擁有絕對控制權,極度中心化 [7]。而 Bancor 團隊則一直聲稱自己十分重視安全,並採用業內最佳的錢包和私鑰管理方案 [8]。不過,他們並沒有披露此次被盜事件的細節,如攻擊者如何能控制多個管理員賬戶

我們把目光放至整個通證生態。社區參與者對管理員擁有的許可權知之甚少,而項目方的相關披露與風險提示更少。安比(SECBIT)實驗室也正在智能合約風險列表中收錄各類許可權過高問題[9],試圖藉此引導社區重視這些問題。

https://github.com/sec-bit/awesome-buggy-erc20-tokens

對於 Token 合約,當有賬戶存在超級許可權時,整個 Token 生態極容易發生單點失效。致命問題可能會出現在兩個方面,一是項目方作惡,二是超級管理員身份被盜用。當 Token 的價值全部依賴在某一個人或少數幾個人身上時,可想而知這其中暗藏的風險會非常之高。以 Bancor 為例,在巨大的經濟利益面前,即使我們信任了發行方不會濫用許可權,卻依然無法保證別有用心者不會藉此攻擊。對於發行與運營極度依賴項目方的 Token,可能我們永遠無法形成類似對比特幣的共識與信仰。

Bancor 危機也給我們帶來很多反思:

Bancor 是否是真正的去中心化交易協議

智能合約在哪些情況下需要管理員

合約管理員許可權的邊界在何處

如何保障錢包及私鑰安全

管理員許可權是把雙刃劍。在 Bancor 事件中,黑客利用了管理員許可權盜取代幣,而項目方也正利用了管理員許可權來降低損失。不過我們認為,開發者依然可以通過良好的代碼設計來降低 Token 和 協議合約對管理員的依賴。同時,我們也號召大家,去更多地了解相關項目的智能合約(它可能跟你想像的不太一樣),關注手中的 Token 到底由誰控制,利用社區力量監督項目管理員許可權。

參考文獻

[1] CoinAlpha 對 ERC20 亂象的總結 https://medium.com/finance-3/the-myth-of-the-erc-20-token-standard-ab0d76cf8532

[2] Status 合約代碼 https://etherscan.io/address/0x744d70fdbe2ba4cf95131626614a1763df805b9e#code

[3] FunFair 合約代碼 https://etherscan.io/address/0x419d0d8bdd9af5e606ae2232ed285aff190e711b#code

[4] 第一次攻擊測試 https://etherscan.io/tx/0xf9fd6ac9bb4e632cf07d5b80b59bb6e417fe52305ea720e552ca6ca204951629

[5] 第二次攻擊 https://etherscan.io/tx/0xf9fe97d642705fa016c4f8d11ea13ce581ba75c57ac455586254e15d915e9bde

[6] 兌換成 ETH https://etherscan.io/tx/0x43a964e635f31b0cc329db6f980f09096054e4e3a627c85654852fd026b92ba0

[7] 對 bancor 的質疑 https://medium.com/unchained-reports/bancor-unchained-all-your-token-are-belong-to-us-d6bb00871e86

[8] bancor 的回應 https://blog.bancor.network/response-to-bancor-unchained-cdb3bd2ba505

[9] SECBIT 智能合約風險列表 https://github.com/sec-bit/awesome-buggy-erc20-tokens/blob/master/ERC20_token_issue_list_CN.md#c-%E6%9D%83%E9%99%90%E7%AE%A1%E7%90%86%E9%97%AE%E9%A2%98%E5%88%97%E8%A1%A8

往期文章回顧

以太坊標準接納中國團隊安全建議 -- EIP827安全事件跟蹤構造形式化證明,解決智能合約安全問題——你的合約亟待證明

安比(SECBIT)實驗室

安比(SECBIT)實驗室專註於區塊鏈與智能合約安全問題,全方位監控智能合約安全漏洞、提供專業合約安全審計服務,在智能合約安全技術上開展全方位深入研究,致力於參與共建共識、可信、有序的區塊鏈經濟體。

安比(SECBIT)實驗室創始人郭宇,中國科學技術大學博士、耶魯大學訪問學者、曾任中科大副教授。專註於形式化證明與系統軟體研究領域十餘年,具有豐富的金融安全產品研發經驗,是國內早期關注並研究比特幣與區塊鏈技術的科研人員之一。研究專長:區塊鏈技術、形式化驗證、程序語言理論、操作系統內核、計算機病毒。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 共享財經 的精彩文章:

知名交易所紛紛退出,日本數字貨幣發展進入「冷靜期」
以太坊標準接納中國團隊安全建議-EIP827安全事件跟蹤

TAG:共享財經 |