前几天有个NFT项目方犯了个非常低级的错误,导致项目合约直接成了提款机。后续的提款竞争过程也非常精彩,涉及到PGAs, Flashbots和Frontrunning。 最早是由@bertcmiller曝出的这个合约漏洞,但在曝光之后,竟然又发生一次,匪夷所思。下文是对这个事件的推测及还原。 https://twitter.com/bertcmiller/status/1544496577338826752?s=20&t=mBGED1J-GvWdrcMSJOXR5A 产生漏洞的合约来自NFT项目方FlippazOne,这是一个NFT项目,采用限时竞拍模式出售。 https://etherscan.io/address/0xE85A08Cf316F695eBE7c13736C8Cc38a7Cc3e944 在合约中,有一个ownerWithdrawAllTo()的方法,能讲合约中的所有余额转至指定地址。有这样的方法不奇怪,因为项目方总得要回笼资金。但在这么重要的一个方法中,合约编写者犯了个低级错误,并没有限定调用者的权限如onlyOwner。于是所有人都能调用,合约妥妥成了提款机。 搞...