04月11日凌晨00:17,PeckShield态势感知平台监测到TCX1Cay…开头的黑客,创建了名为BTTx,tokenid为1002278的TRC10token,并于凌晨00:25至01:00之间向多个地址转入4,000万个BTTx代币,这多个地址对TXHFhq…开头的BTTBank理财类合约实施攻击。BTTBank项目介绍
BTTBank又名TronBankBTT,是属于TronBank旗下的一款专属于BitTorrent(BTT)-ThetokenthatwillenableblockchainmassadoptionBTTtoken的投资产品,根据官网TronBank介绍:TronBankBTT的智能合约将为您产生每天3.6-6.6%的投资收益:
孙宇晨:波场TRON主网启动5年来成就斐然,肩负全新使命再出发:据官方消息,6月25日,波场TRON创始人、火必Huobi全球顾问委员会成员孙宇晨发布推文庆祝波场TRON 5周年独立日,孙宇晨表示,作为波场TRON的创始人,在这个特殊的日子里,他由衷感谢大家的一路相伴和支持。“让我们一同共创未来,我们的故事才刚刚开始。”孙宇晨说。
孙宇晨在推文附带的庆祝视频中表示,“过去5年,我们一直致力于推动互联网去中心化。如今我们又有了建设元宇宙金融自由港的全新使命。在此过程中,我们不断加快国际化与合规化的脚步,积极推动生态繁荣发展,布局行业各类赛道,并在教育、环保、人工智能等领域长期落实工作。我们构建了一套成熟的由公链、交易所和稳定币组成的基础设施,充分服务于社区每一个用户。我们可以自豪的说,我们一直热爱并忠于这份事业。”
此外,孙宇晨直言,用户的信任是波场TRON最核心的竞争力。他希望在未来携手全球80亿人,共同实现金融自由。[2023/6/25 21:59:16]
其理财过程大致如下:用户根据收益率和投资期限购买相应的理财产品;投资期限到期之后,用户提现理财产品到自己的钱包使用上,和当前的各类P2P理财产品类似,用户的使用门槛仅在于一个TRON钱包,但从产品收益率来看,这个资产回报率还是相当可观的。攻击回溯
Tether在波场链上增发10亿USDT:Tokenview区块浏览器数据显示:北京时间2021年04月12日20:16,Tether在波场链上增发10亿USDT,交易哈希:807aa65d982ad759fd5915e4e5b50ed94a4bb0e6f9fba8693b34b8e36a5dd4f7[2021/4/12 20:11:18]
攻击事件简述
去年年底,波场孙老板发起12号提议,即符合波场TRC10规范的Nativetoken的名字将不再唯一,涉及到TRC10token的转账等操作将使用ID来代替。这使得波场创建token的流程变得简单易上手,然而却带来一个潜在的威胁,一旦合约疏于检查tokenid的匹配性,就会存在假币攻击的可能。简而言之,本次BTTBank遭受攻击正是因为缺乏tokenid的一致性验证造成的。背景知识
波场TRON已被imKey硬件钱包正式支持:据最新消息,imKey硬件钱包正式支持波场TRON。据悉,imKey 是一款内置CC EAL 6+ 安全芯片,超薄机身,蓝牙连接,与 imToken 深度集成的硬件钱包。波场 TRON 以推动互联网去中心化为己任,致力于为去中心化互联网搭建基础设施。旗下的 TRON 协议是大的基于区块链的去中心化应用操作系统协议之一,为协议上的去中心化应用运行提供高吞吐,高扩展,高可靠性的底层公链支持。波场 TRON 还通过创新的可插拔智能合约平台为以太坊智能合约提供更好的兼容性。[2021/1/21 16:41:40]
TRON中的token分为几种规范:TRXTRC20TRC10其中,TRX为TRON的平台币,类似于Ethereum中的ETH。而TRC20是与EthereumERC20兼容的token,实质是一种可编程的智能合约,由用户通过智能合约创建token之后,其token的转账、发送等操作均在智能合约内部完成,对于一般的小白用户来说,ERC20/TRC20使用过于复杂,不便于上手使用。故此,TRON中引入了TRC10token,这是一种可以由用户直接操控的token,每一个自然用户支付1024TRX便可创建一个TRC10token,同时一个用户只能创建一个TRC10token。每一个TRC10token在创建之后,由系统分配一个唯一ID,这是一个从1,000,001开始往后自增的整数,一个tokenId标识一个唯一的token,当前TRON平台上共有1850+个TRC10。为了提高TRC10的流动性和使用价值,TRON平台在Odyssey3.2版本之后,使能了在智能合约内部转账TRC10token的功能,参考TRC10TransferinSmartContracts,其示例代码如下所示:
波场基金会与孙宇晨发布永久1:1刚性承认OKEX波场系代币TRX, BTT, JST, SUN的决定:据官方最新消息,波场基金会与孙宇晨发布永久1:1刚性承认OKEX波场系代币TRX, BTT, JST, SUN的决定。公告显示:“首先,我们要说明,该决定与10月20日波场官方宣布的《兑付公告》相比,最大的不同是与OKEX平台本身没有任何关系,这是波场基金会对于波场系代币 TRX, BTT, JST, SUN的单方面永久1:1刚性承认,由波场基金会的自有资金完成兑付,无需OKEX平台的任何承认与支持。
其次,随着事态发展,若最坏情况发生,无论OKEX平台内波场系资产最终归属何处,波场基金会都将会对OKEX平台内波场系代币TRX, BTT, JST, SUN的实际持币人进行1:1刚性兑付,本决定的生效完全由波场基金会自身决定,不依赖于事态发展与不可抗力。
其三,本决定是行业自救的一次尝试,本着对于波场系代币TRX, BTT, JST, SUN持币人的利益负责,我们对于OKEX平台永远给予最大限度的支持与帮助,OKEX平台是支持波场最早的平台之一,也是最早上线波场期货的平台。作为项目方,我们永远支持OKEX的发展,也祝愿OKEX尽早从风波中恢复,回归往日辉煌,我们的出发点永远是报团取暖,行业自救。”[2020/10/31 11:19:01]
上述代码简单解释如下:transferTokenTest()接口内部用于转账TRC10token,接口调用方可以通过address.transferToken(uint256tokenValue,trcTokentokenId)往address转账数量为tokenValue的tokenid为tokenid的TRC10token;msgTokenValueAndTokenIdTest()接口表明,调用者可以直接在发送的message中加入tokenid和tokenvalue字段,这也说明了TRC10是TRON平台上的一等公民,属于内置类型,与TRC20通过函数参数的形式来表征token价值是完全不同的;getTokenBalanceTest()通过tokenid获取账号的余额。由此可知,TRC10token可以在智能合约内部通过tokenid完成转账,TRC10token作为价值承载者,在智能合约内部即反映在tokenid的差异上。因此,合约开发者在处理TRC10转账相关逻辑时,需要特别注意tokenId的有效性和真实性。攻击事件
动态 | CoinMarketCap 2019报告:波场TRON的访问量始终保持前五:根据CoinMarketCap 2019报告显示,波场TRON的访问量始终保持前五,波场TRON在第一季度排名第三,在第二季度排名第四,在第三季度排名第五,此外,BitTorrent在第一季度排名第五。波场TRON以推动互联网去中心化为己任,致力于为去中心化互联网搭建基础设施。旗下的TRON协议是全球最大的基于区块链的去中心化应用操作系统协议之一,为协议上的去中心化应用运行提供高吞吐,高扩展,高可靠性的底层公链支持。波场TRON还通过创新的可插拔智能合约平台为以太坊智能合约提供更好的兼容性。波场TRON在2018年7月24日完成了对P2P下载网络BitTorrent及其旗下所有产品的收购。[2020/1/22]
PeckShield安全人员在分析BTTBank合约时,发现其合约源码实现中存在致命漏洞,可导致项目方资金受损。下图为黑客攻击的原过程:
黑客先行创建一个名为BTTx的TRC10token;黑客往一批自己控制的账号中转入4,000万个BTTxtoken;通过控制的账号往BTTBank合约发起数次攻击;最后顺序将BTT提取到控制的账号中。下文从BTTBank投资及赎回的过程还原本次BTT假币攻击的全过程。投资投资的核心代码如下:
public接口的invest()提取msg.tokenvalue,并调用private的_invest()函数完成投资的过程,_invest()内部计算并保存用户这一次的投资数量、时间等信息到合约的内部资产账单上。值得注意的是,这里invest()只提取了msg.tokenvalue,这里并没有提取msg.tokenid,也没有验证msg.tokenid是否属于BTTToken的tokenid(为1002000)。前面我们提到BTTBank是一款投资理财类DApp,用户存入BTTtoken,资产到期之后,再赎回投资的BTT和对应的利息,在这里并没有检查是否是真正的BTT,也就是不论你投资的阿猫阿狗币,都被认为是BTTtoken。提现
提现的核心代码如下:
赎回的过程比较简单,先从合约的内部投资账单上计算用户已经到期的投资金额,并将这一部分投资金额转回给用户,注意:msg.sender.transferToken(withdrawalAmount,BTT_ID)中是固定的BTT_ID即1002000.至此,用户投入BTT,收获BTT;而黑客投入BTTx,收获BTT,一个完美的『狸猫换太子』过程。防御策略
PeckShield安全人员在此提醒广大开发者,虽然TRC10/TRC20都是token,但两者在TRON平台上有着本质的差异性,若要在智能合约内部转账TRC10,一定要检查所转移的TRC10对应的tokenid是否为预期值。针对上例,可将投资代码增强如下:
另外,PeckShield安全人员根据上述的代码样式分析TRON平台上其它类BTTBank合约时,也发现了相似的问题。在此,PeckShield安全人员提醒在进行智能合约开发的时候,虽然复用现有代码可能会带来开发功能上面的便利,但也须注意可能带来的安全风险。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。