2022年6月13日,成都链安链必应-区块链安全态势感知平台舆情监测显示,BSC的Fswap合约遭受黑客闪电贷攻击,黑客获利约1751.6293 WBNB,价值约40万美元。成都链安安全团队第一时间对事件进行了分析。
#1 什么是闪电贷
闪电贷概念最早由 Marble 协议于 2018 年提出。Marble 自诩「智能合约银行」,其产品是很简单、但很具智慧的 DeFi 创新:通过智能化合约完成的零风险贷款。
闪电贷的基本工作原理是:在单笔交易中贷出借款人需要的金额。然而在交易结束时,借款人必须偿还不少于贷款金额的数目。如果借款人做不到,贷款机构会自动回滚交易。
简单讲,闪电贷是自动的:如果借款人不能偿还贷款,整个交易就会回滚,就像贷款根本没发生一样。
好,接下来我们来看本次事件是如何发生的。
#2 事件相关信息
回到本次Fswap合约被攻击事件:
攻击交易
0xe75e30dafd865331e6a002d50effe084c21e413c96d4550d5e09cf647686fcbe
攻击者地址
0x0007D40F29c7A1713b251c69f5d999f16eC09Dfc
攻击合约
0x7437e7a923a5b467a197c6fae991f0f0ced9af57
被攻击合约
0x0d5F1226bd91b5582F6ED54DeeE739CAC49C37Db
#3 攻击流程
第一步,攻击者先通过另外一个项目闪电贷一笔BSC-USD,将其中的大部分购买MC代币。
第二步,攻击者反复在pair中进行BSC-USD新的闪电贷,再将剩余的初始资金作为手续费支付。
第三步,每当用户在进行交换时,pair合约会向地址
0xe8a374c386d94b9b9d8feb801aec1ee44aad06ec发送交易对中的MC代币作为手续费。在这里会大量消耗合约里的MC,从而使MC的价格迅速上升。
第四步,攻击者再以初始购买的MC,交换大量的BSC-USD。偿还初始闪电贷后,将获利其兑换为WBNB。
最终,黑客就这样空手套白狼,获利约1751.6293WBNB。
#4 漏洞分析
本次攻击主要利用了Fswap中pair合约在交易时会将合约中的reserve作为手续费发送给指定地址,从而导致价格的变化。
#5 资金追踪
截止发文时,被盗资金1751.6293WBNB(约39.34万美元)已全部转移到Tornado.cash。
#6 总结
闪电贷本身的存在是没有问题的,但有心之人将其利用,以极低的成本撬动巨量资金,在多个协议间进行价格操纵或套利,就存在风险。
针对本次事件,成都链安安全团队建议:Swap时的产生的手续费应该由用户支付,而不是用pair合约自身reserve支付。此外建议项目上线前选择专业的安全审计公司进行全面的安全审计,规避安全风险。