首发 | Bancor智能合约为何会出现漏洞?该如何避免?

6.18期间正愁”千手观音“还不够剁,如果一觉醒来,突然发现爸妈的账户可以随便用了,前男友的钱因为权限设置错误而对你以及他所有前女友开放了。不是天上掉馅饼,而是老天可能漏了个洞。

我的是我的,你的还是我的。

这种漏洞恰好于6月18日发生在了Bancor部署的智能合约上。

Bancor 在6月16号部署了他们的 BancorNetwork v0.6的智能合约, 紧接着两天后合约被发现存在严重的安全漏洞。攻击者可利用此漏洞转走合约里的钱。

智能合约可能产生的漏洞有很多种,而本次Bancor智能合约所产生的漏洞与函数有关。

先科普一下,在智能合约里,函数有4种访问权限:

Public - 可被所有人调用

LBank蓝贝壳于5月3日20:00首发 CSPR(Casper),开放USDT交易:据官方公告,5月3日20:00,LBank蓝贝壳上线 CSPR(Casper),开放USDT交易,同时并开放充值,资料显示,Casper网络是基于CasperCBC规范构建的第一个实时权益证明区块链。Casper旨在加速当今企业和开发人员对区块链技术的采用,同时确保随着网络参与者需求的发展,其在未来仍能保持高性能。[2021/5/3 21:19:51]

External - 只可被外部所调用

Internal - 只可被合约本身以及继承合约调用

Private - 只可被合约本身调用

这里强调一下,当函数权限被设置为public时,任何人都可以调用这个函数,从而把合约里的钱转走。也就是说,当你的前男友不小心把他的钱包权限设置成了公开,那么包括他的现任、前任、前前任在内的世界上的任何人,都可以轻而易举地把他的钱转移走。此刻他一定非常心塞。

首发 | 火币集团全球业务副总裁:监管将决定区块链技术和加密货币的落地速度:1月21日,火币集团全球业务副总裁Ciara Sun在达沃斯世界经济论坛上表示,对区块链和数字货币的监管态度,2019年是重要的一年。在美国,到2019年底,针对加密货币和区块链政策有21项法案,这些法案包括税收问题,监管结构,跟踪功能和ETF批准,哪些联邦机构监管数字资产等。欧盟(EU)在2020年1月10日实施了一项新法律,要求加密货币平台采取更严格的反做法。瑞士,日本,立陶宛,马耳他和墨西哥通过法律,要求交易所必须根据KYC和AML准则获得许可。中国,土耳其,泰国等国家正在计划自己的中央银行数字货币(CBDC)。而监管将决定区块链技术和加密货币的落地速度。[2020/1/22]

下面我们来看一下此次Bancor漏洞的代码:

在漏洞合约的第45行我们看到safeTransferFrom函数,这个函数的功能是从一个地址往另一个地址转账,注意到此函数的权限被设置为public。

首发 | 此前18000枚BTC转账是交易所Bithumb内部整理:北京链安链上监测系统发现,北京时间10月24日,17:07分发生了一笔18000枚BTC的转账,经分析,这实际上是交易所Bithumb的内部整理工作,将大量100到200枚BTC为单位的UTXO打包成了18笔1000枚BTC的UTXO后转入其内部地址。通常,对各种“面值”的UTXO进行整数级别的整理,属于交易所的规律性操作。[2019/10/24]

有趣的是,CertiK团队通过进一步的调查发现,在有漏洞的合约部署的两天后,Bancor团队用了以下两个钱包地址去通过漏洞提取合约中的资金,来清空合约里的资金,防止被黑客盗取,也算是弥补漏洞的精明之举: 

0xc8021b971e69e60c5deede19528b33dcd52cdbd8,

0x14fa61fd261ab950b9ce07685180a9555ab5d665

几乎同时,两个第三方人员也开始利用这个漏洞提取资金,其中一位利用漏洞进行了16次取款交易,总共取出了131,889.34美元。这个第三方人员的ETH地址和邮箱分别是:

首发 | 蚂蚁矿机S17真机图首次曝光 采用双筒风扇及一体机设计 ?:继正式宣布在4月9日现货销售后,比特大陆即将发布的新品蚂蚁矿机S17又有了新动态。据悉,蚂蚁矿机S17真机图今天在网上首次曝光。

从曝光的图片来看,蚂蚁矿机S17延续上一代产品S15的双筒风扇设计,且采用一体机的机身设计。有业内人士认为,采用双筒设计可有效缩短风程,矿机出入风口的温差变小,机器性能将得到很大改善。

此前比特大陆产品负责人在接受媒体采访时表示,新品S17较上一代产品相比,无论是在能效比还是单位体积的算力等方面,均有较大提升。[2019/4/3]

0x052ede4c2a04670be329db369c4563283391a3ea

arden43y/img/2022811213429/4.jpg">

IMEOS首发 EOS Go公布新增两条复选条件 :据金色财经合作伙伴IMEOS报道:今日,EOS Go在 steemit上公布新增的两条复选条件为:

1. 保证安全的计划:候选节点是否在steemit上发布文章介绍该节点的安全方法和计划,“安全方法”标准是向EOS选民展示安全最佳实践知识和组织实施计划的机会;

2. 立场:描述该节点分享通胀奖励和/或向EOS代币持有人派发股息的立场(候选节点在steemit发布)。主要阐述以下两个问题:

该组织是否会出于任何原因向EOS令牌选民提供支付,包括BP选举和社区建议?

该组织是否有书面的无票付款政策?如果是这样,请提供一个链接。[2018/4/27]

而另一位的地址是以下两个: 

0x854B21385544c44121f912AEdF4419335004F8ec,

0x1ad1099487b11879e6116ca1ceee486d1efa7b00

他总共进行了四笔取款交易,共提取了3340美元。(折合人民币2万3千元左右,可以足足吃上2000多顿小龙虾。)

Bancor对此事件进行了官方回应(详情请见文末“其他参考链接”第一条): 

其中有一段提到他们利用这个漏洞把合约里的$455,349的余额转移到另一个钱包里了。

另一段称已与两位第三方人员取得联系,请求他们退回利用合约漏洞而转走的资金。

Bancor随后更新了有漏洞的合约。

可以明显看出public被改为了internal。

造成此严重漏洞的原因是开发人员在设置函数权限的时候犯了错误。在智能合约里,仅仅一个参数使用错误,就可导致合约里所有人的钱都处于危险之中。

值得庆幸的是,此次漏洞并没有被黑客利用,不然用户的钱将永远无法追溯。

智能合约类似于函数调用错误的漏洞还包括但不限于DOS、逻辑错误、越权访问、重入及整数溢出等一千种可能。这一千种可能里面任意的一种可能,都会给公司及用户带来巨大的财产损失,而且合约具有一旦部署就不可更改的属性。

因此,保证智能合约没有漏洞,是非常重要的。合约在部署前,交给专业的安全公司进行安全审计是不可或缺的环节。

CertiK会使用形式化通过数学层面的验证去证明智能合约的正确性。以上则是CertiK安全审计的部分内容。

程序测试可以证明漏洞的存在,但永远不能说明漏洞不存在。

而CertiK的存在,就是为了让漏洞不存在。

我们绝不仅仅是寻找漏洞,而是要消除哪怕只有0.00000001%被攻击的可能性。

文中所提及智能合约及地址链接如下:

存在漏洞的智能合约: 

https://github.com/bancorprotocol/contracts-solidity/blob/4394c0e1d1785a71044101b1d6df57e332b73ba9/solidity/contracts/utility/TokenHandler.sol

漏洞合约部署的地址:

0x8dFEB86C7C962577deD19AB2050AC78654feA9F7

0x5f58058C0eC971492166763c8C22632B583F667f

0x923cAb01E6a4639664aa64B76396Eec0ea7d3a5f

修改后的智能合约:

https://github.com/bancorprotocol/contracts-solidity/blob/master/solidity/contracts/utility/TokenHandler.sol

其他参考链接:

https://blog.bancor.network/bancors-response-to-today-s-smart-contract-vulnerability-dc888c589fe4

https://github.com/bancorprotocol/contracts-solidity/blob/4394c0e1d1785a71044101b1d6df57e332b73ba9/solidity/contracts/utility/TokenHandler.sol#L45

https://explore.duneanalytics.com/public/dashboards/mEUEd9rQCPjeMkryEIgbtC0YUZwOXESQPTkkqdPX

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

DOT视频 | 减半后 我采访了五个矿圈大神

2020年5月23日,张姨参加了百团大战矿业峰会,盛(wei)情(zhui)邀(du)请(jie)了几位矿业大佬,让我们来看看大佬们都说了些什么?CZ:不在香港,将视频参与会议:金色财经报道,币安创始人CZ发推表示,“不在香港.

OKBCME期权交易者几乎全都看多比特币 这对比特币意味着什么?

比特币近来一直处于一个低迷的价格走势中。在过去的一周里,它在很大程度上一直在巩固当前的价格,由于阻力位在10,000美元,目前买家无法带动情绪也无法拉动上涨。一些华尔街的分析师也认为,由于一些关键因素,比特币可能面临进一步走软的趋势.

[0:0ms0-3:561ms