本文由灵踪安全原创,授权金色财经独家发布,转载请注明出处。
熟悉DeFi生态的用户都听过Sushi,它是DeFi生态中知名的去中心化交易所,和Uniswap在圈内都是顶流的交易所项目。但和Uniswap专注交易的纵向发展路径不同,Sushi除了交易所,也注重在其它领域布局。
拍卖就是Sushi除交易所之外布局的领域。而MISO就是Sushi开发的代币发售平台。这个平台今年2月上线,迄今为止运营了6个多月,整体运行处于比较平稳的状况。
但就在北京时间8月18日凌晨,多名海外的白帽黑客发现MISO平台合约中存在安全漏洞,并联手从众筹资金池中拯救回10.9万枚ETH(约合 3.5 亿美元),使Sushi避免了一场潜在的灾难。
以金额看,恐怕此次联手行动是DeFi发展史上“最大的白帽拯救行动”。此次白帽拯救行动导致BitDAO在MISO平台进行的荷兰拍中的ETH资金池提前结束。
尽管事件得以妥善解决,没有酿成大祸,但这次事件仍然给我们留下了很多值得深思的问题和教训。
灵踪安全对此次漏洞的细节分析如下:
这次出现安全漏洞的是MISO的荷兰式拍卖合约。其拍卖合约地址为:
0x4c4564a1FE775D97297F9e3Dc2e762e0Ed5Dda0e
在合约中,首要存在漏洞的是delegatecall函数调用。
delegatecall函数所执行的交易是外部传入的。本合约代码对delegatecall的调用使得每个交易在执行时,使用msg.value不会发生变化,因此调用者可以利用此漏洞支付一笔拍卖费用而提交多笔相同金额的拍卖订单,这相当于免费参与多次拍卖。
这部分代码在BoringBatchable.sol文件中,具体代码如下所示:
除此以外,合约的退款逻辑放大了漏洞的攻击力。
当拍卖超过上限即auctionSuccessful()条件成立时,合约会执行退款。这个逻辑结合上面的漏洞就产生了这样的情景:
攻击者免费参与拍卖,并设置拍卖金额超过上限,从而触发合约的退款行为,取走拍卖中其他用户的资金。
退款逻辑由DutchAuction.sol合约中的withdrawTokens()函数实现,其具体代码如下所示:
这个安全漏洞最值得注意的地方是,它很早就已经被圈内认识了,并不是新发现的漏洞,因此其表现形式和特点对于成熟的审计公司而言是很容易被发现的。这样的漏洞完全可以通过审计发现,而不用等到合约上线冒如此大的风险。毕竟并不是每一个项目都能这么幸运,得到白帽黑客的帮助。但每一个项目在上线前进行详细的合约审计却是每个项目团队都应该做也必须做的。
因此我们再次提醒所有的项目方,做好项目审计是保障项目发展的第一要素。灵踪安全永远以严谨的态度和专业的技能为项目方提供踏实、周全的服务。
关于灵踪安全:
灵踪安全科技有限公司是一家专注区块链生态安全的公司。灵踪安全科技主要通过“代码风险检测+逻辑风险检测“的一体化综合方案服务了诸多新兴知名项目。公司成立于2021年01月,团队由一支拥有丰富智能合约编程经验及网络安全经验的团队创建。
团队成员参与发起并提交了以太坊领域的多项标准草案,包括ERC-1646、ERC-2569、ERC-2794,其中ERC-2569 被以太坊团队正式收入。
团队参与了多项以太坊项目的发起及构建,包括区块链平台、DAO组织、链上数据存储、去中心化交易所等项目, 并参与了多个项目的安全审计工作,在此基础上基于团队丰富的经验构建了完善的漏洞追踪及安全防范系统。
作者:
灵踪安全CEO 谭粤飞
美国弗吉尼亚理工大学(Virginia Tech, Blacksburg, VA, USA) 工业工程(Industrial Engineering) 硕士(Master)。曾任美国硅谷半导体公司 AIBT Inc(San Jose, CA, USA) 软件工程师,负责底层控制系统的开发、设备制程的程序实现、算法的设计,并负责与台积电的全面技术对接和交流。自2011至今,从事嵌入式,互联网及区块链技术的研究,深圳大学创业学院《区块链概论》课程教师,中山大学区块链与智能中心客座研究员,广东省金融创新研究会常务理事 。个人拥有4项区块链相关专利、3本出版著作。
查看更多