By:慢雾安全团队
据慢雾区消息,2021年6月29日,去中心化跨链交易协议THORChain发推称发现一个针对THORChain的恶意攻击,THORChain节点已作出反应并进行隔离和防御。慢雾安全团队第一时间介入分析,经分析发现,这是一起针对跨链系统的“假充值”攻击,结果分享如下:
什么是“假充值”?
当我们在谈论“假充值”攻击时,我们通常谈的是攻击者利用公链的某些特性,绕过交易所的充值入账程序,进行虚假充值,并真实入账。
慢雾在早期已经披露过多起“假充值”攻击事件:
?
USDT假充值:USDT虚假转账安全?险分析|2345新科技研究院区块链实验室
EOS假充值:EOS假充值(hard_fail状态攻击)红色预警细节披露与修复方案以太坊代币假充值:以太坊代币“假充值”漏洞细节披露及修复方案
火币:警惕假币局,务必认准 TRC20-HT 官方合约地址:据官方消息,火币全球站已于9月18日在波场TRON网络中发行 TRC20-HT跨链资产(非增发式发行,此部分TRC20-HT将锚定等量ERC20资产,HT总量保持不变)。
同时有用户反馈,波场网络近期出现了一批假的HT合约地址和HT代币。为谨防用户上当受,火币提示用户,切勿轻易相信陌生人提供的代币地址,不要交易任何非官方合约地址的代币,请务必认准TRC20-HT官方合约地址:TDyvndWuvX5xTBwHPYJi7J3Yq8pq8yh62h
对伪造HT合约代币用于的行为,火币保留追究相关责任人法律责任的权利。其中部分假HT合约地址如下:[2020/9/23]
比特币RBF假充值风险:比特币RBF假充值风险分析
随着RenVM、THORChain等跨链服务的兴起,跨链节点充当起了交易所的角色,通过扫描另一条公链的资产转移情况,在本地公链上生成资产映射。THORChain正是通过这种机制,将以太坊上的代币转移到其它公链。
警惕 Omni 假币导致USDT假充值风险:近日,根据慢雾区情报,有黑客采取新型 USDT 假充值手法,黑客采取在 Omni 上发行其他类型的代币伪造成 USDT 对交易所或钱包进行 USDT 假充值,当交易所或钱包在检测 USDT 充值时如果没有校验交易中的 propertyid,就会导致假充值情况的发生。经慢雾安全团队验证,已有交易所因此问题导致损失。由于 USDT 在 Omni 协议上的广泛使用,大多数人认为 Omni 协议上只有 USDT,导致忽略 Omni 协议上的其他类型的不知名币种,容易造成假充值问题。
慢雾安全团队建议交易所或钱包自查 USDT 入账逻辑,必要时联系慢雾安全团队进行验证。[2020/3/7]
漏洞分析
我们从业务逻辑入口去追踪分析此漏洞的成因。
首先看到在处理跨链充值事件时,调用了getAssetFromTokenAddress方法去获取代币信息,并传入了资产合约地址作为参数:
动态 | 账号创建10亿个EOS假币,项目方应提高警惕:Beosin成都链安态势感知安全预警:今日下午14:20:11?根据成都链安区块链安全态势感知系统Beosin-Eagle Eye检测发现,账户larry5555555 发布了10亿 EOS假币并分发到了数个小号(pandoras1111,pandoras.e等),鹰眼将持续追踪这些假币的流向,请各项目方持续关注事件走势,做好及时应急措施预警准备和自查,检查自己的合约是否正确判断接收代币的发行方,必要时可以找区块链安全公司进行代码审计,并可加入成都链安鹰眼态势感知系统,我们将第一时间为大家免费提供预警报警服务,避免用户资产受损。[2019/6/21]
-bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go
?
在getAssetFromTokenAddress方法里,我们看到它调用了getTokenMeta去获取代币元数据,此时也传入了资产合约地址作为参数,但在此处有一个定义引起我们的警觉,在初始化代币时,默认赋予了代币符号为ETH,这就是漏洞的关键点之一:asset:=common.ETHAsset,如果传入合约地址对应的代币符号为ETH,那么此处关于symbol的验证将被绕过。
分析 | 慢雾发布TronBank “假币攻击”手法技术分析:TRC10 是 TRON 区块链本身支持的技术代币标准,没有 TRON 虚拟机(TVM)。TRC10 提供了 2 个新参数:tokenValue、tokenId,msg.tokenvalue 表示当前 msg 调用中的标记值,默认值为 0。 msg.tokenid 表示当前 msg 调用中的标记 id,默认值为 0。tokenId 也是 Odyssey_v3.2 中的新功能。它可以在帐户中名为 assetV2 的新地图字段中找到。 使用 GetAccount(Account)获取 tokenId 及其值。 TokenId 由系统从数字 1_000_001 开始设置。 创建新的 TRC10 代币时,数字加 1 并设置此代币的 ID。
TronBank 合约在 invest 函数内没有判断 msg.tokenid 导致任意的代币(假币)转入,合约都以为是真币 BTT。然后攻击者再调用 withdraw 从合约中提取真币 BTT。[2019/4/11]
-bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go
动态 | 去年2月至今年1月期间共收录虚假币368个:根据BT110的数据统计,从2018年2月至2019年1月的12个月间,共收录虚假币368个,相当于一天发一币。368个虚假币中被查获的只有11个,占比不到3%。另外还有22个项目潜逃,占比不到6%。剩余的虚假币仍在运营中。记录在案的虚假币中,币占比68%,空气币占比24%,剩余部分是其他虚假币行为,包括基金代币、虚拟资产交易代币等。[2019/3/15]
继续验证我们的猜测,我们看到当代币地址在系统中不存在时,会从以太坊主链上去获取合约信息,并以获取到的symbol构建出新的代币,此时所有的漏洞成因都已经显现:
-bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go
-bifrost/pkg/chainclients/ethereum/tokens_db.go
-bifrost/pkg/chainclients/ethereum/ethereum_block_scanner.go
总结一下,首先是由于错误的定义,如果跨链充值的ERC20代币符号为ETH,那么将会出现逻辑错误,导致充值的代币被识别为真正的以太币ETH。
还原攻击真相
我们来看一笔攻击交易的执行过程,可以提取出充值的代币合约地址:
我们在Etherscan上查看这个代币合约地址:
发现这个地址对应的合约的代币符号正是ETH,攻击者正是通过部署了假币合约,完成了这次跨链假充值。
漏洞修复
漏洞补丁:
项目方在发现攻击后快速对代码进行了修复,删除了默认的代币类型,使用common.EmptyAsset进行空代币定义,并在后续逻辑中使用asset.IsEmpty()进行判断,过滤了没有进行赋值的假充值代币。
总结
幸运的是项目方及时发现了本次攻击,未造成巨额财产损失,但作为跨链系统,未来可能聚集巨额的多链资金,安全性不容忽视,因此慢雾安全团队建议在进行跨链系统设计时应充分考虑不同公链不同代币的特性,充分进行“假充值”测试,做好状态监控和预警,必要时可联系专业安全公司进行安全审计。
****
往期回顾
强扭的瓜不甜——SafeDollar被黑分析
“不可思议”的被黑之旅——ImpossibleFinance被黑分析
走过最长的路,竟是自己的套路——Alchemix事件分析
HPOOL入驻慢雾区,发布「安全漏洞与威胁情报赏金计划」
重磅!慢雾的安全审计结果已集成到CoinMarketCap
慢雾导航
慢雾科技官网
https://www.slowmist.com/
慢雾区官网
https://slowmist.io/
慢雾GitHub
https://github.com/slowmist
Telegram
https://t.me/slowmistteam
https://twitter.com/@slowmist_team
Medium
https://medium.com/@slowmist
币乎
https://bihu.com/people/586104
知识星球
https://t.zsxq.com/Q3zNvvF
火星号
http://t.cn/AiRkv4Gz
链闻号
https://www.chainnews.com/u/958260692213.htm
免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。
本文来源于非小号媒体平台:
慢雾科技
现已在非小号资讯平台发布68篇作品,
非小号开放平台欢迎币圈作者入驻
入驻指南:
/apply_guide/
本文网址:
/news/10123951.html
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场
上一篇:
简析三个典型DAO模型,揭示DAO社区的运作机制
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。