Bancor被盜事件之上帝視角區塊鏈
Bancor團隊在智能合約中留了三個后門?
Bancor被盜事件之上帝視角
事件回顧:
根據加密貨幣交易所Bancor發布的一份最新聲明,由于在7月10日遇到“安全漏洞”,已經進入暫時停業狀態。據外媒報道此次黑客攻擊事件,涉及金額超過1250美元。
在安全事件發生后不久,公司在官方推特賬號上表示,目前沒有出現用戶電子錢包被盜現象。
據外媒體報道,此次被盜令牌包括Bancor的原生令牌BNT,約25,000個以太坊(ETH)(1220萬美元)和300,000個Pundi X(NPXS)(1200美元)
Bancor稱本次黑客事件發生在7月9日夜間,當時一個錢包正在升級某些智能合約時發現受到攻擊,之后該錢包撤回了以太坊和ERC-20代幣NPXS和BNT。
此外,他們已經通過Bancor協議內置機制凍結了被盜的BNT。
公告如下:
管理員權限過高
Bancor 主要合約包括 SmartToken 和 BancorConverter,分別為 ERC20 Token 合約以及與業務相關的 Token 轉換交易合約。
本次 Bancor 平臺被盜事件與 BancorConverter 合約有關,攻擊者(黑客/內鬼)極有可能獲取了 0x009bb5e9fcf28e5e601b7d0e9e821da6365d0a9c 賬戶的私鑰。
而此賬戶正是轉換代幣合約 BancorConverter(0x3839416bd0095d97bE9b354cBfB0F6807d4d609E)的 owner,同樣擁有極高權限。owner 作為該合約的所有者和管理員,有唯一的權限通過 withdrawTokens() 方法提走合約中的全部 ERC20 Token 至任意地址。
第一次攻擊發生在以太坊主網區塊高度 5930096,北京時間 7 月 9 日 8 時 6 分。攻擊者利用 owner 身份,首先調用 withdrawTokens() 轉走 0.1 ERC20 ETH 進行攻擊測試 。
三分鐘后,攻擊者再次轉走 22000 巨額數量的 ERC20 ETH 至其控制的地址(0x33ed22f4b6b05f8a5faac4701550d52286bd735a)上
隨后,攻擊者再調用 Ether Token 合約(0xc0829421C1d260BD3cB3E0F06cfE2D52db2cE315)的 withdrawTo() 方法,將 ERC20 版本的以太代幣兌換為真實以太幣 。
至此,22000 個 ETH 便完全被攻擊者借用管理員身份所盜走。
攻擊者還控制了以下賬戶,如法炮制地偷走其賬戶余額,以及其所管理合約中的代幣。
目前,區塊鏈瀏覽器網站 EtherScan 已將攻擊者的地址標注為 Fake_Phishing1701 和 Fake_Phishing1702。
此外,Bancor SmartToken ERC20 合約也由 owner 完全控制,目前是一個名為 MultiSigWallet 的合約,暫未被盜用。
owner 對 SmartToken 合約具有以下權限:
owner 可通過 disableTransfers() 任意禁用轉賬功能
owner 可通過 issue() 任意增發代幣
owner 可通過 destroy() 任意銷毀代幣
以上這些功能均通過 ownerOnly 進行限定,換句話說,owner 對 Bancor 合約擁有最高權限。
Bancor的三個后門:
早在一年前就有人曾吐槽Bancor智能合約,為自己留有了三個后門。

我們在外媒論壇中發現:

第一個門:
團隊可以隨時出于任何原因,禁用使用BNT代幣的所有交易。據推測,團隊有能力讓代幣在ICO之后,立即凍結大約一周,直到Bancor的主要產品準備就緒。但是,出于某種原因,在他們解凍代幣后,團隊將保留隨時再次凍結交易的選項。驚??! 上代碼:在Bancor Token 合約中,允許所有者隨時禁止代幣交易:

在Bancor Crowdsale 合約中,所有者(Bancor團隊)可以使用Bancor Token Contract(上圖)中的禁用交易函數

第二個門:
團隊可以隨時發布新代幣。 Bancor的“更換器”產品,需要基于另一個智能合約中提煉的做市商公式(market-making formula)通過編程方式創建代幣。因此它有能力創建更多代幣(令牌)。但是,出于某種原因,團隊居然有能力隨意創建新的代幣,無論他們選擇什么原因
Bancor Token 合約,合同所有者可以任意簽發新的代幣(令牌):

Bancor Crowdsale合約,合同所有者(Bancor團隊)被允許使用Bancor Token Contract(上圖)中的函數,任意發行新令牌:

第三個門:(此次Bancor被盜事件的處理方法)
這次的Bancor被盜事件,該團隊采取的解決方式就是利用第三個門:團隊可以隨時從任何賬戶中刪除任何代幣。Bancor的“更換器”產品,可以通過編程方式,銷毀發送給其合同的代幣,它居然具有銷毀代幣的功能—— 但它很容易被限制為:僅銷毀發送給該合同的代幣。相反,團隊有權隨時隨地,以任何理由,挑選任何帳戶的代幣,并且銷毀任何數量的代幣。
經調查,Bancor 管理員實際動用了 destroy() 方法來“銷毀”用戶手中的 Token。

管理員可以從任意賬戶 _from 中扣除任意金額 _amount 的 Token,同時將總供應量 totalSupply 縮減。
這就是常說的 燒幣 功能。由于攻擊者在得手后,將偷來的幣分散到若干個地址中。Bancor 的管理員不得不挨個依次調用destroy() 來銷毀對應地址的代幣,再調用 issue() 方法將燒毀的幣重新增發到自己手中。但此補救方法對于 NPXS Token 和已轉走的 ETH 無效,這些被盜的幣將被轉至交易所拋售。

Bancor 團隊也發表聲明稱普通用戶的錢包沒有受到影響,并進一步解釋鑄幣、燒幣以及存儲大量以太幣是他們協議中價格發現機制的一部分。
對于這三個門的設定一直都具有廣泛的爭議,當時就曾有審計人員質疑他們,不過當時該團隊的推理說法似乎是:目前他們主要的智能合約仍在測試中,但如果出現任何問題,他們應該保留完全控制權。他們計劃隨著時間的推移逐漸減少控制權,但并沒有提到上面代碼截圖列出的后門。
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。