加载中 ...

4000万假币流入波场, 发生在凌晨的BTT假币攻击事件始末及细节披露

2019-12-04 08:29 编辑:btc268.com 来源:区块链资讯

  

  

  作者 | 成都链安

  责编 | Aholiab

  出品 | 区块链大本营(blockchain_camp)

  

  4月11日凌晨1点,波场DApp tronbank遭受假币攻击

  11日上午BEOSin成都链安技术团队作出初步分析,判断该次假币攻击事件主要原因,在于合约没有严格验证代币的唯一标识符代币ID,错误地将攻击者自己发行的无价值代币识别为价值85万元的BTT代币,从而造成了损失。

  同时及时发出预警,预判黑客团队未来可能将攻击重点转向波场。

  接下来我们就来一起看看这次事件的造成原因。

  首先,我们先看此次BTT假币攻击事件中的漏洞源码,如下图:

  

  经过分析发现,该假币漏洞是由invest函数只判断了msg.tokenvalue,而没有判断msg.tokenid是否为真实BTT代币的ID:1002000所导致。

  TRC10标准是波场本身支持的技术代币标准,标准规定了两个重要参数:msg.tokenvalue和msg.tokenid。其中msg.tokenvalue表示当前msg调用的代币数量,而msg.tokenid表示当前调用者使用的代币种类标记ID。每种TRC10标准的代币都有一个独一无二的标记ID作为代币种类证明

  BTTBank合约在收取代币时没有对收到代币的tokenid做任何判断,合约中仅仅判断了msg发送代币的数量msg.tokenvalue。

  当合约收到调用者发送的代币数量msg.tokenvalue时,合约错误的认为该代币数量是BTT的数量。但实际上调用者使用的是假币tokenid为1002278的代币数量。BTTBank将假币视同于真币(真币的tokenid为10022000)记录到投资者账号。

  而攻击者账号TRC10代币中存在BTT和BTTx两种代币,可见两种代币的ID差异,BTT代币ID:1002000,BTTx代币ID:1002278。

  

  攻击者于4月11日凌晨创建发行990,000,000,000,000,000个名为BTTx的假币(代币ID:1002278)

  

  随后,假币创建完成,攻击者将四千万创建的假币BTTx发送给四个攻击小号:

  TB9jB76Bk4tk2VhzGAb6t1aCYgW7Z4iicY

  TQM4uEWPQvVe2kGbWPZtVLMDFrTLERfmp4

  TKp1stjapNqr4pkDQjU9GTitsYBUrKAGkh

  TF2EWZJZSokGdtk4fj7PqCmuGpJasVXJ3K

  

  

  当攻击小号收到假币后,攻击者又调用BTTBank合约有缺陷的invest函数。

  

  接下来在触发invest函数后,BTTBank项目方将大量BTT转入了预先设置的投资账号TPk,TT4,TGD,这笔资金实际上未被黑客获得,但项目方在没有收到BTT的情况下进行了真实的投资。

  下图为源码中对三个投资地址的具体设置代:

  

  

  

  

  BTTBank投资的三个投资账号中都收到了大量BTT代币,如下图所示。

  

  账号1

  

  账号2

  

   账号3

  黑客触发invest函数后通过withdraw函数取到了BTTBank奖励池的真正的BTT代币,最终四个小号将赃款集中转向黑客主账号:

  TCX1Cay4T3eDC88LWL7vvvLBGvBcE7GAMW

  

  

  

  

  

  

  攻击者账户中的BTT赃款和攻击使用的假币BTTx如下:

  

  此外,在对Github上开源的其他项目方代码进行检查后,发现还有其他项目方存在此安全问题:

  

  有问题的合约地址如下:

  TF3YXXXXXXXXXXXXXXXXXXXXXXXWt3hx

  TKHNXXXXXXXXXXXXXXXXXXXXXXXAEzx5

  TK8NXXXXXXXXXXXXXXXXXXXXXXXZkQy

  TUvUXXXXXXXXXXXXXXXXXXXXXXXxLETV

  TG17XXXXXXXXXXXXXXXXXXXXXXXkQ9i

  因此营长呼吁广大项目方提高警惕予以重视,检查自己的合约是否存在上述安全漏洞,并及时进行更新。

  这里,我们再次总结一下这次攻击发生的原因:

  开发者对波场代币的使用机制研究不足,可能套用了以太坊的代币使用方法;

  攻击者在迁移其它公链上存在的攻击方式,如EOS已经存在的假币攻击方式。

  想要修复此漏洞,项目方要在收取代币时应同时判断

  msg.tokenvalue

  和

  msg.tokenid是否符合预期。

  可参考以下方法为Invest函数增加代码:

  require(msg.tokenid==1002000);

  require(msg.tokenvalue >= minimum);

  minimum设置最小投资额。

  黑客团队最近可能盯上了波场,原因很可能在于波场公链的DApp市场高度繁荣,但一直未曾遭到过EOS公链级别的高强度攻击

  攻击者目前主要是将其他公链上已成熟的攻击方式,迁移到波场并进行大范围攻击测试,寻找安全防护较为薄弱的合约。此阶段后,攻击者可能更进一步深度挖掘波场本身可能被利用的机制,进行更高强度和威胁的攻击。

  最后,营长再次提醒各大项目方加强合约的安全防护级别和安全运维强度,尽量防范未然,避免不必要的损失。必要时可联系第三方专业审计团队,在上链前进行完善的代码安全审计,共同维护公链安全生态。

  *关于作者:

  成都链安科技有限公司,专注于区块链全生态安全。其核心技术为形式化验证,是全球最早一批将此技术应用到区块链安全领域的公司。自主研发出全球首个同时支持ETH、EOS、Fabric、ONT、TRON等多个区块链平台的高度自动化的智能合约形式化验证平台VaaS。

  

  中国人的区块链论文闯入国际学术顶会

  4月21日相约北京,不见不散!!

  

  推荐阅读:

  微软加速器檀林: 5G 会催生一个新的 Web3.0时代 | 视频访谈

  V神玩起freestyle! 5位以太坊核心大咖在悉尼的演讲精华全在这了!| 直击EDCON

  偷电、挖矿、赚快钱,这些大学生到底怎么了?

  频繁跳槽涨工资?会影响征信的! | 畅言

  京东或将裁员 12000 人!雷军年薪百亿;马云:阿里没人敢跟我打赌 | 极客头条

  39个国外SCI抢发6万篇中国英文论文?然而,真正的问题是……

  终于有人把5G和边缘计算的关系说清楚了  | 技术头条

  曝光!月薪 5 万的程序员面试题:73% 人都做错,你敢试吗

  猛戳"阅读原文"有惊喜哟

  老铁在看了吗?

关键词:比特币新闻 币牛牛

转载自比特币新闻网(www.btc268.com),提供比特币行情走势分析与数字货币投资炒币最新消息。

原文标题:4000万假币流入波场, 发生在凌晨的BTT假币攻击事件始末及细节披露

原文地址:http://www.btc268.com/szhb/ph/17456.html

本文来源:区块链资讯编辑:btc268.com

本文仅代表作者个人观点,与本网站立场无关。

本网站转载信息目的在于传递更多信息。请读者仅作参考,投资有风险,入市须谨慎!

'); })();