前言
北京时间2022年6月13日,知道创宇区块链安全实验室监测到BSC链上的FSwap去中心化交易所项目遭到闪电贷攻击,导致损失1751枚BNB约39万美元。
知道创宇区块链安全实验室第一时间跟踪本次事件并分析。
基础信息
FSwap是一个去中心化交易所项目,可实现对加密资产的链上高效清算和资产的跨链交易。
攻击者地址:0x000c84c59385b64c3ea4d48cc3fca1f08f3abcfc
攻击合约:0x7437e7a923a5b467a197c6fae991f0f0ced9af57
tx:0xe75e30dafd865331e6a002d50effe084c21e413c96d4550d5e09cf647686fcbe
FSwapPair合约:0x0d5F1226bd91b5582F6ED54DeeE739CAC49C37Db
漏洞分析
漏洞关键在于FSwapPair合约中的swap方法在每次交易计算手续费时会将pair合约中的储备token当作手续费发送给feeto地址,这将会导致池子中的代币数量减少,从而引起代币价格上涨,攻击者能够从中套利。
攻击流程
1、攻击者使用闪电贷在BiSwap中贷款300万枚BSC-USD代币,并使用255万枚BSC-USD代币在Fswap中换取54万余枚MC代币;
2、随后攻击者在合约中反复多次贷-还闪电贷以此消耗池子中的MC代币,使得池中中得MC代币数量急剧减少,价格也迅速上涨;
3、攻击者立刻在池子中置换手中的MC代币获取大量BSC-USD代币;
4、攻击者偿还闪电贷,将剩余BSC-USD代币进行swap,获利1751枚BNB,最后自毁合约离场。
总结
本次攻击事件核心是项目方误将手续费收取方设定为pair合约而不是用户本身,从而导致池子中的代币数量能够被消耗,发生套利风险。
建议项目方在编写项目时应对函数中的手续费收取逻辑实现进行严格的审查,此处应该将手续费收取对象设置为用户而不是pair合约。
在此提醒项目方发布项目后一定要将私钥严密保管,谨防网络钓鱼。另外,近期各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。