Bancor智能合约漏洞及防范措施

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册
币安app

binance币安交易所

币安交易所app是全球排名第一的虚拟货币交易所,注册领取盲盒礼包!

APP下载   官网注册

6.18期间发生了令人头疼的事情。当你醒来时,你突然发现父母的账户可以随便使用,前男友的钱因为权限设置错误而被他以及他的前女友们共享。这不是意外之财,而是可能是老天犯了个错误。

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

Bancor在6月16日部署了他们的BancorNetworkv0.6智能合约,然后两天后发现合约存在严重的安全漏洞。攻击者可以利用这个漏洞转走合约里的钱。

智能合约可能会有很多漏洞,而这次Bancor智能合约的漏洞与函数权限有关。

在智能合约中,函数有4种访问权限,分别是Public(可被所有人调用)、External(只可被外部调用)、Internal(只可被合约本身及继承合约调用)和Private(只可被合约本身调用)。

需要强调的是,当函数权限设置为public时,任何人都可以调用这个函数,将合约中的钱转走。也就是说,如果你的前男友不小心将他的钱包权限设置为公开,那么包括他的现任、前任和前前任在内的任何人,都可以轻易地把他的钱转走。这对他来说肯定很郁闷。

接下来我们来看一下Bancor漏洞的代码。

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

有趣的是,CertiK团队通过进一步调查发现,在有漏洞的合约部署两天后,Bancor团队用两个钱包地址来提取合约中的资金,以防止被黑客盗取。同时,两个第三方人员也开始利用这个漏洞提取资金。其中一位利用漏洞进行了16次取款交易,总共取出了131,889.34美元。这个第三方人员的ETH地址和邮箱分别是0x052ede4c2a04670be329db369c4563283391a3ea和arden43y@gmail.com。他声称这个地址背后是一个自动运行的交易系统,可能会无意利用人为失误和合约的漏洞获取资金。如果能够证明这个地址通过漏洞获取了钱,他可以将资金归还。而另一位的地址是0x854B21385544c44121f912AEdF4419335004F8ec和0x1ad1099487b11879e6116ca1ceee486d1efa7b00,他总共进行了四笔取款交易,共提取了3340美元。

Bancor对此事件进行了官方回应,其中提到他们使用漏洞将合约中的455,349美元转移到另一个钱包。他们还联系了两位第三方人员,请求他们退还利用合约漏洞转走的资金。随后,Bancor更新了有漏洞的合约,将public修改为internal。

这次严重漏洞发生的原因是开发人员在设置函数权限时犯了错误。在智能合约中,只要一个参数使用错误,就会导致合约中所有人的资金处于危险中。

幸运的是,这次漏洞没有被黑客利用,否则用户的资金将永远无法追回。

智能合约可能存在许多漏洞,包括但不限于DOS、逻辑错误、越权访问、重入和整数溢出等。这些漏洞中的任何一个都会给公司和用户带来巨大的财产损失,而且合约一旦部署就无法更改。

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

CertiK通过数学验证在形式层面上证明智能合约的正确性,他们的目标是消除即使是0.00000001%被攻击的可能性。他们不仅仅寻找漏洞,而是要让漏洞不存在。

以上是CertiK安全审计的部分内容。

需要注意的是,程序测试只能证明漏洞的存在,而不能证明漏洞不存在。

文中提到的智能合约和地址链接可以在以下链接找到:

存在漏洞的智能合约:https://github.com/bancorprotocol/contracts-solidity/blob/4394c0e1d1785a71044101b1d6df57e332b73ba9/solidity/contracts/utility/TokenHandler.sol

漏洞合约部署的地址:0x8dFEB86C7C962577deD19AB2050AC78654feA9F70x5f58058C0eC971492166763c8C22632B583F667f0x923cAb01E6a4639664aa64B76396Eec0ea7d3a5f

修改后的智能合约: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-dc888c589fe4https://github.com/bancorprotocol/contracts-solidity/blob/4394c0e1d1785a71044101b1d6df57e332b73ba9/solidity/contracts/utility/TokenHandler.sol#L45https://explore.duneanalytics.com/public/dashboards/mEUEd9rQCPjeMkryEIgbtC0YUZwOXESQPTkkqdPXhttps://explore.duneanalytics.com/public/dashboards/mEUEd9rQCPjeMkryEIgbtC0YUZwOXESQPTkkqdPX

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://czxurui.com/zx/43684.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年08月05日
下一篇 2023年08月05日

相关推荐

  • 合约杠杆多少倍合理,期权杠杆是多少倍

    一、合约市场杠杆100倍的存活机率是多少几乎是没有存活可能的,100倍杠杆理论标的波动1个点爆仓,实际操作下不会给你这么大的空间,为了防止你穿仓,你至少要维持80%的保证金,也就是说0.2%的波动就会触发强平,且一般是市价强平,滑点严重,与楼上不同意见之处为,你只能抢短

    2025-04-17 00:00:01
    10 0
  • 低倍合约怎么做,什么是比特币合约

    一、什么是比特币合约一种是指比特币合同,其中提及的合同是非标准交易,可以改写Bitoind、BitCoin钱包代码或使用bitcoinj来生成非标准交易,虽然正常钱包不会接受这些非标准交易,但是有矿池如Eligius.st接受非标准交易并且可以打入到块链中,这样有些钱包软件就能正常处理。

    2025-04-15 03:30:01
    16 0
  • btc怎么算爆仓,BTC合约如何规避爆仓

    一、BTC合约如何规避爆仓合约对冲,简单易操作,保本且盈利在漫长的金融演变中也有一部分富有经验的分析师上下求索研究出保本且能适当盈利的全新方法比如双仓对冲在AB两个仓位里同时建立相反方向的单子行情不论走哪个方向都有一个仓位是盈利的这便能达到保本的效果但是如何产

    2025-04-13 11:00:01
    13 0
  • 什么是云挖矿合约,云平台区块链是什么东西

    一、云平台区块链是什么***云平台区块链是什么东西***区块链BaaS平台是什么?随着区块链技术不断在实体领域应用落地,越来越多科技公司提出自己的底层技术框架,以及垂直领域的行业解决方案,BaaS平台的英文名是BlockchainasaService,直接翻译就是BlockchainasaService,简称

    2025-04-13 09:00:02
    12 0
  • 合约莱特币是什么意思,比特币合约是什么意思

    一、莱特币是什么意思莱特币是一种加密数字货币,也被称为一种电子货币或虚拟货币。它是比特币的一个衍生版本,与比特币有着相似之处,但也有其自身的特点和优势。莱特币是一种基于区块链技术的数字货币,具有去中心化、匿名性和安全性等特点。它使用了一种称为Scrypt的加密算

    2025-04-12 21:00:02
    18 0
  • 比特币合约群怎么带,比特币合约玩法规则

    一、比特币喊单群他们是怎么赚钱的包月包年类、分成类带单、依靠手续费返点、与交易所分成赚钱。(1)包月包年类:这种收费方式的带单,至少从利益驱动的角度来讲,可能还是个最靠谱的玩法。因为带单群主收你一次的费用,以后就再也不收费了,如果想要让你下个月继续缴费的话

    2025-04-12 14:00:01
    52 0

发表回复

8206
验证码

评论列表(0条)

    暂无评论

ok交易所
已有100万用户加入ok交易所

立即下载