售前客服二维码
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!
前言
据连锁新闻报道,加密钱包曾戈发布了一份报告,称其在主流加密货币钱包中发现了一个漏洞(名为“大消费者”),如莱杰、BRD和Edge。该漏洞可能会导致未确认的交易包含在用户的总余额中,此时,攻击者可以在交易确认之前取消交易。攻击者利用比特币协议中的费用取代了“按费用替换”功能。该功能可以通过支付更高的手续费来替代以前的交易。攻击者可以连续多次使用此功能进行大规模攻击。接下来,慢雾安全团队将基于此事件分析比特币协议的径向基函数特性对交易所和钱包的影响。
什么是径向基函数
径向基函数是费用替换的全称,是比特币内存池中的一种协议,它允许未经确认的交易被其他交易取代。径向基函数的方案主要包括以下内容:
1.全径向基函数:用更高的手续费取代以前的交易
2.首见安全径向基函数:第一次替换,即替换事务本身的输出量必须大于或等于被替换的事务
3.选择加入径向基函数:选择性地替换交易,并通过增加手续费来替换旧的交易。节点可以选择打开或关闭此功能。
4.延迟径向基函数:当网络中的节点第一次接收到旧的事务时,如果在给定数量的块之后旧的事务仍然被解包,则允许新的事务无条件地替换旧的事务
目前,比特币核心采用的是选入式径向基函数方案,即通过声明一项交易是可替换的,将来可以使用其他交易来替换该交易。关于选择加入径向基函数的详细描述,请参考比特币核心对https://bitcoincore.org/en/faq/optin_rbf/的描述
如何利用径向基函数进行攻击
径向基函数主要针对0确认的事务,即替换内存池中未确认的事务。当交易所或钱包在处理0确认交易时,未能正确处理交易相关状态,将导致双花和虚假充值问题。具体攻击方法如下:
1.攻击者发送一个径向基函数事务,输出地址指向交换机或钱包,并支付较低的处理费用,以防止事务打包过快;
2.在交换机检索到由0确认的事务后,攻击者立即发送替换事务,并将输出地址更改为攻击者可控制的其他地址,以替换发送到交换机或钱包的前一个事务;
3.由于交易所或钱包在处理0确认交易时存在问题,没有验证交易是否为径向基函数交易以及交易的确认状态,径向基函数交易未经确认直接记录,导致虚假充值、重复消费、欺诈攻击和对钱包的拒绝服务攻击;
攻击流程如下:
目前,慢雾安全团队已经在市场上测试了几个分散的钱包,在一些钱包中发现了这样的问题,并将问题同步到相应的项目方,并协助修复它们。
防御计划
1.交易所或钱包应禁止使用0确认账户进行比特币充值;
2.如果需要记录确认为0的交易,必须检查该交易不能是径向基函数交易,具体来说,交易输入中的序列字段的值必须为0xffffff,任何非0xffffff值的序列的未确认交易都应拒绝记录;
3.检查交易状态,如检查比特币交易是否打包或已到达相应的确认号(如3);
4.钱包应显示相应的交易确认状态,以防止欺诈性攻击;
5.慢雾安全小组已经支持了这次攻击的检测。如果钱包或兑换不确定他们自己的帐户输入方法是否有任何问题,他们可以联系慢雾安全团队([emailprotected])进行检测。
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!