注:原文来自rekt。 回想起来,这是不可避免的。 这是发生在币安智能链(BSC)上的首次令人印象深刻的攻击事件,Meerkat Finance丢失的资金排到了排行榜的第三位。 在仅仅运营一天之后,Meerkat Finance就卷走了1300万BUSD以及大约73000 BNB,目前涉及资金总额约为3100万美元。 我们一直在观察币安智能链,其网络似乎正复制以太坊DeFi夏天的发展走势,当一些项目方通过复制的代码建立足够的资本后,就出现了卷款跑路(rug pull)的现象。 而这一事件的后续,将会是一种非常有趣的情况。 CZ及其团队会不会回滚他们的公司链,或者就这么让用户遭受损失? 这样的骗局使得小偷无处藏身,在这么一条链上,他们能跑到哪里去呢?币安关闭了桥梁,甚至bscscan.com也暂停了一会儿。是流量太大,还是某种类型的烟幕弹? Meerkat Finance最初声称这是一次黑客攻击,但随后该项目方删除了他们的账户,只剩下BSC用户自己,或者去怪币安。 感谢0xdeadf4ce提供的帮助。 Meerkat Finance部署者升级了该项目的2个金库。攻击者地址通过Vault代理调用无需许可初始化函数,有效地允许任何人成为Vault所有者[2]。攻击者随后通过调用签名为0x70fcb0a7的函数来耗尽金库,该函数接受了一个代币地址作为输入。升级为智能合约的反编译,显示了所调用函数的唯一用途是移除以所有者为受益人的资金。通常,如果合约具有允许所有者主动取回策略/金库中使用资产的函数,那么你就是在信任这个项目团队。 而他们可以随时选择跑路。 这就是为什么像yearn这样的项目会添加如下图所示的检查函数,这样项目方就只能取回那些没有被策略/机枪池所使用的资金。 两个受影响的金库都使用了OpenZeppelin的透明代理升级模式,通过在Vault代理级别上调用upgradeTo(address newImplementation)函数,可以将Vault逻辑升级到新的逻辑实现。 BUSD金库的先前实现部署在0x49509a31898452529a69a64156ab66167e755dfb,而WBNB金库的先前实现部署在0x3586a7d9904e9f350bb7828dff05bf46a18bb271,两者都是相当不起眼的。 Meerkat Finance部署者调用了upgradeTo()函数两次: 在区块高度5381239时,将WBNB Vault实施地址设置为0x9d3a4c3acee56dce2392fb75dd274a249aee7d57;在区块高度5381246时,将BUSD Vault实施地址设置为0xb2603fc47331e3500eaf053bd7a971b57e613d36;这改变了金库逻辑,引入连个值得注意的函数,而它们并非是最初实现的一部分。 init(地址所有者)根据反编译字节码,此函数将存储slot 0上的地址设置为提供给该函数的地址; (责任编辑:admin) |