哪个平台交易比特币手续费最低:波场假币攻击全过程:BTTBank理财合约遭黑客假BTT攻击

  04月11日凌晨00:17,PeckShield态势感知平台监测到TCX1Cay… 开头的黑客,创建了名为 BTTx, token id 为 1002278 的 TRC10 token,并于凌晨 00:25 至 01:00 之间向多个地址转入 4,000 万个 BTTx 代币,这多个地址对 TXHFhq… 开头的 BTTBank 理财类合约实施攻击。

  BTTBank 项目介绍

  BTTBank 又名 TronBank BTT, 是属于 TronBank 旗下的一款专属于 BitTorrent (BTT) - The token that will enable blockchain mass adoption BTT token 的投资产品,根据官网 TronBank 介绍:

  TronBank BTT 的智能合约将为您产生每天 3.6 - 6.6%的投资收益(取决于你购买的产品计划),自动发放到你的收益余额中。举例,购买 4.6% 收益计划,21 天你即可获得超过 100% 收益。收益每秒都会计算,你甚至每秒都可以提取收益或重新投资。当您重新投资收益时,投资金额会增加,可以更快的获得更多收益。

  其产品界面如下(由于当前 BTTBank 在维护中,主站无法打开,援引 TronBank 明星产品 TRX 的投资图片,详见 TronBank):

  

  其理财过程大致如下:

  1. 用户根据收益率和投资期限购买相应的理财产品;

  2. 投资期限到期之后,用户提现理财产品到自己的钱包

  使用上,和当前的各类 P2P 理财产品类似,用户的使用门槛仅在于一个 TRON 钱包,但从产品收益率来看,这个资产回报率还是相当可观的。

  攻击回溯

  攻击事件简述

  去年年底,波场孙老板发起 12 号提议,即符合波场 TRC10 规范的 Native token 的名字将不再唯一,涉及到 TRC10 token 的转账等操作将使用 ID 来代替。这使得波场创建 token 的流程变得简单易上手,然而却带来一个潜在的威胁,一旦合约疏于检查 token id 的匹配性,就会存在假币攻击的可能。简而言之,本次 BTTBank 遭受攻击正是因为缺乏 token id 的一致性验证造成的。

  背景知识

  TRON 中的 token 分为几种规范:

  · TRX

  · TRC20

  · TRC10

  其中,TRX 为 TRON 的平台币,类似于 Ethereum 中的 ETH。

  而 TRC20 是与 Ethereum ERC20 兼容的 token,实质是一种可编程的智能合约,由用户通过智能合约创建 token 之后,其 token 的转账、发送等操作均在智能合约内部完成,对于一般的小白用户来说,ERC20/TRC20 使用过于复杂,不便于上手使用。

  故此,TRON 中引入了 TRC10 token, 这是一种可以由用户直接操控的 token,每一个自然用户支付 1024 TRX 便可创建一个 TRC10 token,同时一个用户只能创建一个 TRC10 token。每一个 TRC10 token 在创建之后,由系统分配一个唯一 ID(即 token id),这是一个从 1,000,001 开始往后自增的整数,一个 tokenId 标识一个唯一的 token,当前 TRON 平台上共有 1850+(2019-04-12)个 TRC10。

  为了提高 TRC10 的流动性和使用价值,TRON 平台在 Odyssey 3.2 版本之后,使能了在智能合约内部转账 TRC10 token 的功能,参考 TRC10 Transfer in Smart Contracts, 其示例代码如下所示:

  

  上述代码简单解释如下:

  1. transferTokenTest() 接口内部用于转账 TRC10 token,接口调用方可以通过 address.transferToken(uint256 tokenValue, trcToken tokenId) 往 address 转账数量为 tokenValue 的 token id 为 token id 的 TRC10 token;

  2. msgTokenValueAndTokenIdTest() 接口表明,调用者可以直接在发送的 message 中加入 token id 和 tokenvalue 字段,这也说明了 TRC10 是 TRON 平台上的一等公民,属于内置类型,与 TRC20 通过函数参数的形式来表征 token 价值是完全不同的;

  3. getTokenBalanceTest() 通过 token id 获取账号的余额。

  由此可知,TRC10 token 可以在智能合约内部通过 token id 完成转账,TRC10 token 作为价值承载者,在智能合约内部即反映在 token id 的差异上。

  因此,合约开发者在处理 TRC10 转账相关逻辑时,需要特别注意 token Id 的有效性和真实性。

  攻击事件

  PeckShield 安全人员在分析 BTTBank 合约时,发现其合约源码实现中存在致命漏洞,可导致项目方资金受损。

  下图为黑客攻击的原过程:

  

  1. 黑客先行创建一个名为 BTTx 的 TRC10 token;

  2. 黑客往一批自己控制的账号中转入 4,000 万个 BTTx token;

  3. 通过控制的账号往 BTTBank 合约发起数次攻击;

  4. 最后顺序将 BTT 提取到控制的账号中。

  下文从 BTTBank 投资及赎回的过程还原本次 BTT 假币攻击的全过程。

  投资

  投资的核心代码如下:

  

  public 接口的 invest( ) 提取 msg.tokenvalue ,并调用 private 的 _invest( ) 函数完成投资的过程,_invest( ) 内部计算并保存用户这一次的投资数量、时间等信息到合约的内部资产账单上。值得注意的是,这里 invest( ) 只提取了 msg.tokenvalue,这里并没有提取 msg.tokenid,也没有验证 msg.tokenid是否属于 BTT Token 的 token id(为 1002000)。

  前面我们提到 BTTBank 是一款投资理财类 DApp,用户存入 BTT token,资产到期之后,再赎回投资的 BTT 和对应的利息,在这里并没有检查是否是真正的 BTT,也就是不论你投资的阿猫阿狗币,都被认为是 BTT token。

  提现

  提现的核心代码如下:

  

  赎回的过程比较简单,先从合约的内部投资账单上计算用户已经到期的投资金额,并将这一部分投资金额转回给用户,注意:msg.sender.transferToken(withdrawalAmount, BTT_ID) 中是固定的 BTT_ID 即 1002000.

  至此,用户投入 BTT,收获 BTT;而黑客投入 BTTx, 收获 BTT,一个完美的『狸猫换太子』过程。

  防御策略

  PeckShield 安全人员在此提醒广大开发者,虽然 TRC10/TRC20 都是 token, 但两者在 TRON 平台上有着本质的差异性,若要在智能合约内部转账 TRC10,一定要检查所转移的 TRC10 对应的 token id 是否为预期值。针对上例,可将投资代码增强如下:

  

  另外,PeckShield 安全人员根据上述的代码样式分析 TRON 平台上其它类 BTTBank 合约时,也发现了相似的问题。在此,PeckShield 安全人员提醒在进行智能合约开发的时候,虽然复用现有代码可能会带来开发功能上面的便利,但也须注意可能带来的安全风险。

文章内容系本站作者个人观点,不代表本站对其观点赞同或支持,文章的版权归该作者所有。如需转载,请注明文章来源。本文地址:http://www.cis.net.cn/kejikuaixun/43491.html
留言与评论(共有 条评论)
验证码:

最新文章

区块链将如何变革供应链管理

科技快讯
有句老话说的好:“团队精神促使梦想成真”。对于那些从事供应链管理的人来说,他们的梦想就是拥有高效可靠的报告。利用区块链技术,数百甚至数千台计算机可以通过共同努力,使这一梦想成为可能。要理解这是如何实现的,您首先需要了解SCM和区块链。供应链管理(SCM)涉及到制造中使用的原材料的采购。原材料的运输和

数字货币先生:大家都在恐惧,说明币市很快就有机会

科技快讯
比特币从昨天中午开始回落,截止到现在,日内最低下探到6600美元这个区域,离前期低点已近在咫尺。相对于其它主流币,BTC今天的回撤要更大一些,算是延续补跌的姿势吧。这一轮的回调走势中,比特币是在今天才开始释放比较多的卖盘筹码,现在币价所运行的这个区域,可以留意左侧布局的机会。无论是比

比特币扩容纷争: 用闪电网络还是BCH?

科技快讯
3月15号,LightningLabs发布了第一个正式的“公测版”闪电网络,版本号是0.4-beta。beta意味着这套软件基本上可以用了,虽然还有可能有些小bug,但主要功能应该已经实现并经过严格测试,可以给公众使用了。同时,LightningLabs也宣布他们获得了250万美金的种子投资,用于进一步的开发。比特币做储值,山寨币搞应用,行得通

Opus区块链:用以太坊和IPFS技术颠覆流媒体产业

科技快讯
音乐产业近年来经历了诸多方面的变化和发展。2016年,全球音乐市场总收益达到157亿美元,年增速高达5.9%。然而,音乐人获得收入的方式却始终存在问题。唱片公司以及流媒体平台,例如Youtube,Spotify,Tidal,苹果音乐以及Deezer等,可收取高达80%的收益分成;因此,虽然少数流行艺人仍然可以通过所剩的分成致富,更加小众的音乐人则往往

设想中的区块链大学

科技快讯
牛津大学的两位教授设想了一种与众不同的分布式的、民主的大学。哲学系的乔舒亚·布罗吉(JoshuaBroggi)是伍尔夫发展(WoolfDevelopment)的创始人。伍尔夫发展是一个初创平台公司,其目标是利用分布式分类账

数字货币早评:强扭的【大阳线】不甜!

科技快讯
币圈!一直都是财富的【娱乐圈】,去中心化的组织和个人,刷着段子,唱着歌,割着韭菜,骗着炮。昨晚BTC独舞大阳线,谁拉的?局部濒死结构,瞬间被拉成强势突破形态。垂死病中惊坐起,一柱擎天不要脸!。如此野蛮干涉你知道原因吗?BTC的配图你就明白了。仔细看【主跌趋势】那条线,自己画一画,一切一切,在技术面前,看似人力可控,实则规律

矩阵元(Juzix)让数据交换与协同更加简单 安全 高效

科技快讯
矩阵元(Juzix),是全球分布式账本技术的领导厂商,致力于在数字化时代提供分布式数据交换及协同计算服务。为数据的流动提供全方位的治理服务,让数据交换与协同更加简单、安全、高效。矩阵元金融致力于基于分布式账本技术带来的全新视野,为新一代金融基础设施提供技术视角的建造、运营与咨询服务。矩阵元技术基于完全自主开发的数

区块链在证券领域对融资,贷款和信用有何影响?

科技快讯
据了解,寻找风投融资是一个困难的事情。需要与投资人进行无数次交谈,就股权和估值进行谈判,希望能为公司换来一笔资金。使用项目,你不需要通过去和投资人谈判来融资,你不需要风险资本家。任何人(在银行下注册账户的)都可以随时从任何人那里融资,任何人都可以投资他们感兴趣的项目。区块链融资可以是“完全开放的、分布式

挖矿奖励减半或提前到来 ,矿工们正在加速生产比特币

科技快讯
在2019年,比特币矿工们一直在加速他们的ASIC矿机生产,以利用在2020年5月减半之前的最后12.5个比特币挖矿的区块奖励。大量的挖矿活动也意味着在某些时期,网络生成一个区块之间的间隔不到10分钟。比特币区块产出时间提前2019年,比特币网络比原计划提前生产了第1800万枚比特币。基于TrustNodes的研究,矿工们每天发现约147个区块,而不