主页 > tp钱包导入imtoken > EOS假充值(hard_fail状态攻击)红色预警详情披露及修复方案
EOS假充值(hard_fail状态攻击)红色预警详情披露及修复方案
by 慢雾安全团队
披露时间表
漏洞详情
参考官方文档,我们可以知道EOS交易有多种执行状态,对应的类别和对应的描述是:
executed:事务被正确执行,没有触发错误处理器
soft_fail:事务客观上失败(未执行),但正确触发了错误处理器
hard_fail:交易客观上失败了,但没有触发错误处理器
delayed:交易被延迟/延迟/在待执行队列中
过期:交易过期
这次的攻击方式是利用上述状态中的hard_fail状态进行攻击。 在之前的开发过程中,很多开发者都没有遇到过这种交易执行状态,而常规的区块浏览器无法查询到相关交易,导致开发者对这种交易状态缺乏认知。 开发中通常的思路是只有合约才能发起延迟交易。 但是在cleos中通过具体的参数来配置delay-sec参数:
即使您使用非合约账户,您也可以正常发起延迟交易。 对于使用中心化彩票奖品的DApp项目方或使用中心化管理的交易所和钱包,如果不验证EOS交易的执行状态,可能存在“虚假充值”攻击,攻击者无需支付任何费用,但可以获得大量EOS。 这是一种全新的攻击方式,也是很容易被大家忽视的一点,但是造成的危害却是巨大的。 对于这种方法,我们已经捕捉到了真实的攻击,并成功阻止了一次损失达1亿元人民币的攻击,以及数次巨额损失。 但不幸的是,还有几次被攻击成功的事件usdt转账记录查询,这超出了我们的能力范围,我们的客户或合作伙伴只是这个生态中的一小部分。
基于以上情况,我们在 3 月 12 日发布了红色预警,但由于我们的翻译不够严谨,引起了 EOS 社区的恐慌,让 EOS 社区误认为这是 EOS 的一个漏洞。 我们为此道歉。 部分EOS社区成员认为,只要交易所和钱包做好检查工作,就不会出现此类问题。 但是,我们很难要求所有程序员都编写具有最佳安全实践的代码。 当验证方法不精确时,就会导致攻击。
经过我们的分析,我们更倾向于交易状态是EOS的一个特性,历史上已经出现过很多与该特性相关的“假充值”漏洞案例。
据我们透露:
我们参与披露:
这些问题并不是链本身的漏洞,而是由于链本身的特性以及开发者对这些特性缺乏严格的验证,导致了攻击的发生。 这就是我们发布红色警报的原因。 这不是恐吓(FUD),更像是一种容易被忽视的攻击。 这种攻击方式之前EOS上没有类似的攻击案例,但是在我们公布了相关的攻击方式之后,根据我们联合EOSPark数据分析系统,已经有十几个账户开始分别攻击DApps、交易所和钱包。 攻击测试,这些账号是:
博布库拉博布
寸寸2323
测试superdex
张家驿坝
justjiezhan1
wnze2qwdiyne
havls3k3iyge
ha11w4zzmpge
wkdoptxcjvdn 的
xm曲快恋
异特龙
cholr1ub2ku
钱包托马斯
fuckhakcer.x
强威克队
求职者
peospeospeos
欧洲经济委员会
等待另一个帐户
他们中的许多人已经成功地攻击了帐户。 因此,我们继续发布后续预警,提醒相关项目方做好防范工作。 此外,Twitter账号Whale Alert也关注了此类攻击。 Whale Alert官方账号3月11日发推称,账号fuckhacker.x转账1万亿EOS,后被官方证实为虚假交易。 可见攻击范围之广。 应该给予足够的重视。
维修方案
对于此类交易,相关项目方、交易所和钱包需要验证EOS转账的执行状态,确保交易执行状态为“已执行”。 要以下几点来防止其他类型的“虚假充值”攻击
判断动作是否为转移
判断合约账户是eosio.token还是其他token的官方合约账户
判断令牌名称和准确性
判决金额
判断to是否为自己平台的入金账户
后记问答
Q:节点是否可以通过开启只读模式来防止此类攻击?
A:根据官方文档中对只读模式的描述
节点开启只读模式后,可以查询记录在案并在线存在的确认交易。 这种攻击方式是先发出defer交易,defer交易是保存在链上的真实交易,然后交易会转化为hard_fail,所以开启只读模式无法阻止这种攻击方法。 事务的状态从delay变为hard_fail,而不是rollback,这是需要注意的地方。
Q:为什么我在其他区块浏览器上找不到hard_fail交易,比如EOSX?
A:现有的查询交易通过EOS的历史插件查询,根据历史插件的代码
可以发现,除了executed和soft_fail交易外,其他交易是查询不到的。
Q:使用历史插件获取交易是否可以避免此类攻击?
答:无法保证。 不同的节点历史插件有不同的实现方式。 不排除节点提供者自行修改history plugin实现,导致被查询交易出现除executed和soft_fail以外的其他状态。
Q:交易所、钱包等项目平台应该如何配置自己的节点来避免攻击?
A:使用默认的历史插件配置,另外还要检查EOS转账的交易状态,确保交易执行状态为“已执行”。 同时,还需要判断以下几点,以防止其他类型的“假充值”
判断动作是否为转移
判断合约账户是eosio.token还是其他token的官方合约账户
判断令牌名称和准确性
判决金额
判断to是否为自己平台的入金账户
这几点都是历史上出现过的问题。 我们认为EOS生态是一个非常强大的、灵活的、全新的生态。 EOS主网上线以来,我们参与了很多次安全突发事件。 生态安全的发展确实是一个挑战。 要做好各方面的安全检查,确保资产不丢失。
结语
希望阅读本文的EOS生态用户不要模仿本文中的攻击方式。 我们无意在 EOS 社区引起恐慌。 慢雾安全团队旨在为EOS生态带来更多安全感usdt转账记录查询,及时披露相关安全事件的详情,为更多EOS生态成员提供安全保障。 相关项目方应及时确保充提款系统安全,实施相应的风险控制策略,确保自身财产安全。
相关参考
如何使用 State History Plugin 监控状态:
官方文档描述了nodeos的三种模式:
XRP官方披露的虚假充值漏洞及相关分析:
EOS智能合约最佳安全开发指南:
谢谢你
EOS公园
IMEOS
jerry@EOSlive 钱包
慢雾媒体平台
电报
推特
@slowmist_team
中等的
@慢雾
碧湖
知识星球