3月19日凌晨,有社区用户反馈 Filecoin 主网存在双花风险,币安、OKex 等交易所均已关闭 Filecoin 主网代币 FIL 的充值功能,Cobo Custody 也第一时间暂停了 FIL 的充值和提币。
Cobo Custody 技术团队对此次 Filecoin 安全事件保持高度关注并进行了详细复盘:
据 Filfox 和 FileStar 的 Filecoin 矿工反馈,周三币安遭遇了价值数百万美元的FIL双花充值攻击。
起因为有一笔61,000 FIL(约合460万美元)的交易所入账花费了太长时间,于是Filfox 和 FileStar 矿工为了加速而发起了一笔 RBF 交易。而该笔 RBF 交易导致币安账户两次入金,最终入账 120,000 FIL。事后,Filfox和FileStar开发者回应称,Filecoin 的 RPC 代码里存在“严重的漏洞”。该漏洞导致币安在看到两笔有冲突的交易后,选择了同时入账。
FIL突破70美元关口 日内涨幅为3.47%:火币全球站数据显示,FIL短线上涨,突破70美元关口,现报70.668美元,日内涨幅达到3.47%,行情波动较大,请做好风险控制。[2021/8/20 22:27:06]
FilFox和FileStar开发者已经第一时间联系了币安,并在第一时间通知了Filecoin官方。
交易所和中心化钱包等中心化托管机构会依据链上的转账行为给用户入账,因此如何高效、准确、及时的解析链上的转账行为是非常关键的,常见的做法是先获取某个区块内的所有交易ID,然后基于交易ID获取对应的交易内容和交易执行结果。
Filecoin网络目前总质押量约为2907万枚FIL:据IPFS100.com报道,Filfox浏览器数据显示,Filecoin网络当前区块高度为398554,全网有效算力为1.812EiB,总质押量约为2907万枚FIL,活跃矿工数为1030个,每区块奖励为18.061FIL,近24小时产出量为255244FIL,24小时平均挖矿收益为0.1349FIL/TiB,目前FIL流通量为66858945FIL。 目前有效算力排名前三的分别为:F01248(智合云zh)以73.44PiB暂居第一,F02770(时空云&灵动)以72.63PiB位居第二,F09652(RRmine)以45.3PiB位居第三。[2021/1/10 15:47:40]
Filecoin lotus 节点提供了多个API用于链上交易的获取,例如 ChainGetBlockMessages 可以获取指定区块内的所有交易内容,StateGetReceipt 可以获取指定交易ID对应的执行结果,此次被攻击的交易所就是采用这两个 API 来进行链上转账行为的解析,并基于此为用户入账。
Gemini开发“wFIL”服务,使其本机代币FIL在以太坊使用:总部位于美国的加密交易所Gemini在9日的一篇博客文章中表示,它正在努力与以太坊的开发者合作,希望将wFIL添加到自己的产品和平台中。一旦完成用户将能以1:1的比例将帐户中的FIL转换为wFIL,然后可以将其提取到任何以太坊地址。[2020/11/10 12:14:29]
不过他们没有注意到,StateGetReceipt 接口有个比较不符合常规逻辑思维的设计,就是在获取指定交易ID的执行结果时,如果这笔交易已经被 RBF(replace by fee),则会返回最终 RBF 成功的那笔交易的执行结果,并且在返回值里没有任何的提示表明这笔是 RBF 后的交易的执行结果。
Filecoin发布主网点火和启动阶段,预计10月15日启动主网:9月29日消息,分布式存储项目Filecoin(FIL)表示已过渡到主网点火阶段并已经为Filecoin主网启动做好准备。Filecoin将采用分段式方法来启动主网,在阶段性的时间内将不同群体和社区加入到网络中直至主网启动。在接下来的几周内,Filecoin社区的各个群体,包括矿工、用户、托管方、应用程序、网络服务等等将在主网启动完毕之前加入网络。
这个预启动阶段称为主网点火阶段,使网络参与者有时间进行初始化、学习、设置他们的系统和优化他们的部署。Filecoin主网将在epoch148888正式开启,预期将在10月15日左右到达这个epoch,然后将开始一段时间的监控和解决问题来保证过渡后网络的正常运行(与预期相符)。几天之后,将举行Filecoin主网启动,10月19日至10月23日为期一周的启动活动。[2020/9/29]
假设攻击者首先发送了 TX1,对应的交易ID 为 TXID1,随后攻击者对 TX1 进行了 RBF,生成 TX2,对应的交易ID 为 TXID2,最终 TX2 上链成功。此时通过 StateGetReceipt 对 TXID1 和 TXID2 分别查询,都能得到执行正确的结果。
攻击行为发生后,Filecoin 官方开发人员对 API 进行了补充说明,明确了 StateGetReceipt 的返回逻辑,并将在 v1 版本后废弃此 API
https://github.com/filecoin-project/lotus/pull/5838/files
Cobo Custody 技术团队在对接 Filecoin 的过程中已经发现了上述问题,因此没有采用 ChainGetBlockMessages 和 StateGetReceipt 来获取链上的转账行为,而是采用 ChainGetParentMessages 和 ChainGetParentReceipts 来获取已经成功上链的交易,从而从根本上避免了被双花充值的风险,因此未受此次双花充值攻击的影响。
在使用 ChainGetParentMessages 和 ChainGetParentReceipts 的过程中,Cobo Custody 技术团队发现 lotus 节点的一些返回值也并不是很符合常规逻辑思维,例如对于空块的处理是有一些问题的。Cobo Custody 技术团队对此做了妥善的安全处理,在此也提示其他中心化托管机构需要仔细检查相关的对接代码,避免其他的双花充值攻击行为。
双花(Double-spending)即使用上一次交易的代币,再次进行交易,进而导致产生虚假交易。
2018 年比特币黄金 (BTG) 就曾受到一名矿工的恶意攻击,该矿工临时控制了 BTG 区块链,在向交易所充值后迅速提币,再逆转区块,成功实施双花攻击。此次攻击者窃取超过 388200 个 BTG,价值高达 1860 万美元,也是区块链史上最著名的双花攻击之一。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。