慢雾团队:比特币RBF假充值风险分析_RBF:SOL

前言

据链闻消息,加密钱包ZenGo发布报告称其在Ledger、BRD和Edge等主流加密货币钱包中发现了一个漏洞(命名为「

BigSpender」)。该漏洞可能会使未确认的交易计入用户的总余额中,而此时,攻击者可在交易确认之前撤销该笔交易。攻击者利用了比特币协议中的一项费用替代「

Replace-by-Fee」功能。该功能可通过支付更高的手续费来替换此前的一笔交易。攻击者可以连续多次使用该功能进行BigSpender攻击。下面,

慢雾安全团队将基于此次事件分析比特币协议RBF特性对交易所和钱包所产生的影响。

慢雾:攻击Ronin Network的黑客地址向火币转入3750枚 ETH:3月30日消息,慢雾发推称,攻击Axie Infinity侧链Ronin Network的黑客地址向交易所火币转入3750枚ETH。此前金色财经报道,Ronin桥被攻击,17.36万枚ETH和2550万USDC被盗。[2022/3/30 14:26:38]

什么是RBF

RBF,全称?

Replace-by-fee,是比特币内存池中的一种协议,允许使用其他交易将未确认交易进行替换的方式,

RBF?的方案主要有以下几种:

慢雾安全预警:Solana出现恶意合约授权钓鱼事件 可转走用户全部原生资产:3月5日消息,Solana上出现多起授权钓鱼事件。攻击者批量给用户空投 NFT (图 1) ,用户通过空投 NFT 描述内容里的链接 (www_officialsolanarares_net) 进入目标网站,连接钱包(图 2),点击页面上的“Mint”,出现批准提示框(图 3)。注意,此时的批准提示框并没有什么特别提示,当批准后,该钱包里的所有 SOL 都会被转走。当点击“批准”时,用户会和攻击者部署的恶意合约交互:3VtjHnDuDD1QreJiYNziDsdkeALMT6b2F9j3AXdL4q8v

该恶意合约的功能最终就是发起“SOL Transfer”,将用户的 SOL 几乎全部转走。从链上信息来看,该钓鱼行为已经持续了几天,中招者在不断增加。

提醒:1. 恶意合约在用户批准(Approve)后,可以转走用户的原生资产(这里是 SOL),这点在以太坊上是不可能的,以太坊的授权钓鱼钓不走以太坊的原生资产(ETH),但可以钓走其上的 Token。于是这里就存在“常识违背”现象,导致用户容易掉以轻心。

2. Solana 最知名的钱包 Phantom 在“所见即所签”安全机制上存在缺陷(其他钱包没测试),没有给用户完备的风险提醒。这非常容易造成安全盲区,导致用户丢币。(慢雾区)[2022/3/5 13:39:42]

1、FullRBF?:使用更高的手续费替换前一笔交易

慢雾MistTrack:DeFi项目Pickle Finance pDAI池被盗资金再次发生异动,多次使用Uniswap进行兑换:据慢雾MistTrack监测信息显示,2020-11-22 攻击 pickle pDAI池的黑客地址(0x701781...7a4E08)继1月8日异动后,再次于1月14日发生异动。此前黑客地址转移了1500万DAI到五个新地址,现除了地址5(0x64bA3e...fF62DB),其余四个地址均发生异动,其中地址1(0x607d65...04e461)和地址2(0x17d4fe...2b7a39)分别向另一个地址3(0x157b0f...862a01)转入400万DAI。除此之外,慢雾MistTrack监测到1月9日、11日,黑客均向地址3(0x157b0f...862a01)分别转入176万DAI、300万DAI,紧接着地址3(0x157b0f...862a01)于当天通过Uniswap、1inch将一部分DAI兑换成CORN或COMP,另一部分DAI转到地址1(0x607d65...04e461)、地址2(0x17d4fe...2b7a39)。

目前地址1(0x607d65...04e461)有1亿9千万cDAI,地址2(0x17d4fe...2b7a39)有4亿3千万cDAI,地址3(0x157b0f...862a01)有32万DAI,地址5(0x64bA3e...fF62DB)有400万 DAI。[2021/1/15 16:15:10]

2、First-seen-safeRBF:初见替换,即替换交易本身的输出金额必须大于等于被替换交易

3、Opt-inRBF:选择性替换交易,通过追加手续费的形式将旧交易替换,节点可选择开启或关闭此功能

4、DelayedRBF:当旧交易首次被网络中节点接收,如果在给定数量的区块数之后,旧交易仍然未被打包,则允许新交易无条件地替换旧交易

目前BitcoinCore采用的是Opt-inRBF的方案,即通过声明一笔交易为可替换的形式,后续可使用其他交易替换这笔交易。关于Opt-inRBF的详细说明可参考BitcoinCore的说明?https://bitcoincore.org/en/faq/optin_rbf/

如何利用RBF进行攻击

RBF?主要针对的是0确认交易,即对内存池中的未确认交易进行替换,当交易所或钱包在处理0确认的交易时,没有正确处理交易相关的状态时,就会导致双花和假充值的问题,具体攻击手法如下:

1、攻击者发送一笔?RBF?交易,输出地址指向交易所或钱包,并支付低额手续费,防止交易过快被打包;

2、在交易所检索到这笔0确认的交易后,攻击者立刻发送一笔替换交易,并将输出地址改为攻击者可控的其他地址,替换先前的发送给交易所或钱包的交易;

3、由于交易所或钱包在对0确认交易的处理存在问题,没有校验交易是否为?RBF交易和交易的确认状态,直接在未确认的情况下入账?RBF?交易,导致交易所或钱包被假充值、双花、欺诈攻击及对钱包进行DoS攻击;

攻击流程图如下:

目前,慢雾安全团队对市面上的几款去中心化的钱包进行测试,已在部分钱包中发现此类问题,并将问题同步给相应的项目方以及协助修复。

防御方案

1、交易所或钱包应禁止采用0确认的方式对比特币充值进行入账;

2、如需要对0确认交易进行入账,必须检测该交易不能为?RBF?交易,具体为交易Input中的nSequence字段值必须为0xffffff,任意未确认交易中包含非0xffffff值的nSequence应拒绝入账;

3、检查交易状态,如检查比特币交易是否被打包,或已达到相应的确认数;

4、钱包应展示对应的交易确认状态,防止欺诈攻击;

5、慢雾安全团队已支持该攻击的检测,如钱包或交易所不确定自己的入账方式是否存在问题,可联系慢雾安全团队进行检测。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

水星链

[0:15ms0-1:14ms