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

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

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

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

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

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

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

Public - 可被所有人调用

External - 只可被外部所调用

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

Private - 只可被合约本身调用

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

马斯克:Web69的想法不错:金色财经报道,前 Twitter 首席执行官 Jack Dorsey 近日宣布推出“Web5”,他试图在比特币网络上构建 Web 组件并专注于身份而非 Token 化支付,同时解决现实个人数据保护问题,确保不会将这些数据出售给第三方,该项目旨在将去中心化身份和数据存储带入 Web 应用程序,同时将数据所有权归还给用户。

此消息发布后,一位名叫“Wandrinstar”的狗狗币社区用户在社交媒体上称:“如果Jack Dorsey 和比特币可以创建 Web5,那么狗狗币也可以创建 Web69。” 这条推文立刻引起了 Jack Dorsey 的注意,他在回复中 @ 了 Elon Musk 并表示“靠你搞定 Web69 了”,马斯克回复称“Web69 的想法会很热门”。[2022/6/12 4:20:04]

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

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

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

韩国现代汽车NFT平台正式上线并首发NFT系列Shooting Star:5月3日消息,据韩国现代汽车 NFT 平台官方社交媒体账户 Hyundai_NFT 透露,这家全球汽车制造巨头旗下 NFT 平台 hyundai-nft 已正式上线,同时现代汽车元宇宙 Hyundai Metamobility 也已开放。据悉,韩国现代汽车还首发了 NFT 系列Shooting Star,该 NFT 总计 10,000 枚,将会在 5 月 9-10 日在以太坊区块链上进行铸造(白名单预售在 5 月 9 日,公开销售在 5 月 10 日)。[2022/5/3 2:46:52]

0xc8021b971e69e60c5deede19528b33dcd52cdbd8,

0x14fa61fd261ab950b9ce07685180a9555ab5d665

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

0x052ede4c2a04670be329db369c4563283391a3ea

arden43y@gmail.com

此人称这个地址的背后是一个自动运行的交易系统,可能会无意利用人为的失误和合约的漏洞获取资金。如果能够证明这个地址通过漏洞得到了钱,他可以把钱归还。

东加勒比地区CBDC支付系统DCash新增两个实施地区:12月9日消息,东加勒比地区中央银行(ECCCB)于12月7日向多米尼加联邦和英国海外领地蒙特塞拉特(Montserrat)推出了其数字支付系统DCash,在计划实施该系统的八个国家中,目前只剩下安圭拉还未实施。据悉,ECCB在2021年3月与DCash合作向安提瓜和巴布达、格林纳达、圣克里斯托弗(圣基茨)和尼维斯以及圣卢西亚推出了中央银行数字货币(CBDC)。8月,它被扩展到圣文森特和格林纳丁斯。DCash是一个专门设计用于数字EC货币的支付系统。(Cointelegraph)[2021/12/9 13:01:01]

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

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

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

金宝趣谈

屎币寻找比特币鲸鱼:他们在何处?

如果观察比特币的持有量数据,你会发现匿名账户表现出一条令人担忧的趋势,即大户之间的联合的趋势越来越明显。鲸鱼通常指持有1000到100万比特币的投资者,被称为鲸鱼。 比特币鲸鱼,指在加密行业持有大量币的用户。它们是控制大量比特币的散户或者机构,鲸鱼顾名思义,比特币海洋中最大的鱼。市场中有各种各样的鲸鱼,例如BTC鲸、ETH鲸和BCH鲸。

USDT6.23午间行情:多头强势 不要做空

文章系金色财经专栏作者牛七的区块链分析记供稿,发表言论仅代表其个人观点,仅供学习交流!金色盘面不会主动提供任何交易指导,亦不会收取任何费用指导交易,请读者仔细甄别,谨防上当。 比特币终于迎来了变盘,从9278直接拉到了9785美金,走的非常强势。

Uniswap金色观察丨Compound登上DeFi王座的背后故事

金色财经 区块链6月25日讯  六月中旬,基于算法的去中心化金融协议Compound批准了一项提案,允许将其原生代币COMP代币分发给平台上的借款人和贷款人。此消息一出,立刻引起了用户关注,人们开始把资产汇聚到Compound协议上,短时间内其锁仓总价值就增长了近五倍,也成功超越MakerDAO,登上了去中心化金融领域的“王座”。

DYDX支付巨头 PayPal 支持买卖加密货币 但我的账户仍会被冻结?

据外媒消息,知情人士表示,金融科技巨头 PayPal 计划直接向其用户推出加密货币买卖服务,该服务有望“在未来三个月内或更早”推出。 据消息人士称,PayPal 和 Venmo 允许直接买卖加密货币,同时将上线具有某种内置的钱包功能,用户可以将加密货币存储在那里。

[0:15ms0-7:23ms