Bancor居然在智能合约中留了三个后门?

事件回顾:

根据加密货币交易所Bancor发布的一份最新声明,由于在7月9日遇到“安全漏洞”,已经进入暂时停业状态。据外媒报道此次黑客攻击事件,涉及金额超过1250美元。

在安全事件发生后不久,公司在官方推特账号上表示,目前没有出现用户电子钱包被盗现象。

 

Bancor居然在智能合约中留了三个后门?

据外媒体报道,此次被盗令牌包括Bancor的原生令牌BNT,约25,000个以太坊(ETH)(1220万美元)和300,000个Pundi X(NPXS)(1200美元)

Bancor称本次黑客事件发生在7月9日夜间,当时一个钱包正在升级某些智能合约时发现受到攻击,之后该钱包撤回了以太坊和ERC-20tokenNPXS和BNT。

此外,他们已经通过Bancor协议内置机制冻结了被盗的BNT。

公告如下:

Bancor居然在智能合约中留了三个后门?

管理员权限过高

Bancor 主要合约包括 SmartToken 和 BancorConverter,分别为 ERC20 Token 合约以及与业务相关的 Token 转换交易合约。

本次 Bancor 平台被盗事件与 BancorConverter 合约有关,攻击者(黑客/内鬼)极有可能获取了 0x009bb5e9fcf28e5e601b7d0e9e821da6365d0a9c 账户的私钥。

而此账户正是转换token合约 BancorConverter(0x3839416bd0095d97bE9b354cBfB0F6807d4d609E)的 owner,同样拥有极高权限。owner 作为该合约的所有者和管理员,有唯一的权限通过 withdrawTokens() 方法提走合约中的全部 ERC20 Token 至任意地址。

Bancor居然在智能合约中留了三个后门?

第一次攻击发生在以太坊主网区块高度 5930096,北京时间 7 月 9 日 8 时 6 分。攻击者利用 owner 身份,首先调用 withdrawTokens() 转走 0.1 ERC20 ETH 进行攻击测试 。

三分钟后,攻击者再次转走 22000 巨额数量的 ERC20 ETH 至其控制的地址(0x33ed22f4b6b05f8a5faac4701550d52286bd735a)上 

随后,攻击者再调用 Ether Token 合约(0xc0829421C1d260BD3cB3E0F06cfE2D52db2cE315)的 withdrawTo() 方法,将 ERC20 版本的以太token兑换为真实以太币 。

至此,22000 个 ETH 便完全被攻击者借用管理员身份所盗走。

攻击者还控制了以下账户,如法炮制地偷走其账户余额,以及其所管理合约中的token。

Bancor居然在智能合约中留了三个后门?

目前,区块链浏览器网站 EtherScan 已将攻击者的地址标注为 Fake_Phishing1701 和 Fake_Phishing1702。 

Bancor居然在智能合约中留了三个后门?

此外,Bancor SmartToken ERC20 合约也由 owner 完全控制,目前是一个名为 MultiSigWallet 的合约,暂未被盗用。

owner 对 SmartToken 合约具有以下权限:

owner 可通过 disableTransfers() 任意禁用转账功能

owner 可通过 issue() 任意增发token

owner 可通过 destroy() 任意销毁token

以上这些功能均通过 ownerOnly 进行限定,换句话说,owner 对 Bancor 合约拥有最高权限。

Bancor的三个后门:

早在一年前就有人曾吐槽Bancor智能合约,为自己留有了三个后门。

Bancor居然在智能合约中留了三个后门?

我们在外媒论坛中发现:

Bancor居然在智能合约中留了三个后门?

第一个门:

团队可以随时出于任何原因,禁用使用BNTtoken的所有交易。据推测,团队有能力让token在艾希欧之后,立即冻结大约一周,直到Bancor的主要产品准备就绪。但是,出于某种原因,在他们解冻token后,团队将保留随时再次冻结交易的选项。惊!! 上代码:在Bancor Token 合约中,允许所有者随时禁止token交易:

Bancor居然在智能合约中留了三个后门?

在Bancor Crowdsale 合约中,所有者(Bancor团队)可以使用Bancor Token Contract(上图)中的禁用交易函数

Bancor居然在智能合约中留了三个后门?

第二个门:

团队可以随时发布新token。 Bancor的“更换器”产品,需要基于另一个智能合约中提炼的做市商公式(market-making formula)通过编程方式创建token。因此它有能力创建更多token(令牌)。但是,出于某种原因,团队居然有能力随意创建新的token,无论他们选择什么原因Bancor Token 合约,合同所有者可以任意签发新的token(令牌):

Bancor居然在智能合约中留了三个后门?

Bancor Crowdsale合约,合同所有者(Bancor团队)被允许使用Bancor Token Contract(上图)中的函数,任意发行新令牌:

Bancor居然在智能合约中留了三个后门?

第三个门:(此次Bancor被盗事件的处理方法)

这次的Bancor被盗事件,该团队采取的解决方式就是利用第三个门:团队可以随时从任何账户中删除任何token。Bancor的“更换器”产品,可以通过编程方式,销毁发送给其合同的token,它居然具有销毁token的功能—— 但它很容易被限制为:仅销毁发送给该合同的token。相反,团队有权随时随地,以任何理由,挑选任何帐户的token,并且销毁任何数量的token。

经调查,Bancor 管理员实际动用了 destroy() 方法来“销毁”用户手中的 Token。

Bancor居然在智能合约中留了三个后门?

管理员可以从任意账户 _from 中扣除任意金额 _amount 的 Token,同时将总供应量 totalSupply  缩减。

这就是常说的 烧币 功能。由于攻击者在得手后,将偷来的币分散到若干个地址中。Bancor 的管理员不得不挨个依次调用destroy() 来销毁对应地址的token,再调用 issue() 方法将烧毁的币重新增发到自己手中。但此补救方法对于 NPXS Token 和已转走的 ETH 无效,这些被盗的币将被转至交易所抛售。

Bancor居然在智能合约中留了三个后门?

Bancor 团队也发表声明称普通用户的钱包没有受到影响,并进一步解释铸币、烧币以及存储大量以太币是他们协议中价格发现机制的一部分。

对于这三个门的设定一直都具有广泛的争议,当时就曾有审计人员质疑他们,不过当时该团队的推理说法似乎是:目前他们主要的智能合约仍在测试中,但如果出现任何问题,他们应该保留完全控制权。他们计划随着时间的推移逐渐减少控制权,但并没有提到上面代码截图列出的后门。

文章作者: 曲速未来安全区 我要纠错
声明:本文由入驻金色财经的作者撰写,观点仅代表作者本人,绝不代表金色财经赞同其观点或证实其描述。
提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

金色财经 > 区块链 > Bancor居然在智能合约中留了三个后门?