2022年7月1日,成都链安链必应-区块链安全态势感知平台舆情监测显示,OPtimism链的Quixotic项目遭受黑客攻击,黑客获利847个BNB。成都链安安全团队对事件进行了分析,结果如下。
据悉,Quixotic 是一个可以使用ERC20代币和NFT进行买卖的平台,本次攻击事件发生后,平台目前所有市场活动都已暂停。
•攻击者地址
攻击者:
0x0A0805082EA0fc8bfdCc6218a986efda6704eFE5
攻击者合约:
0xbe81eabdbd437cba43e4c1c330c63022772c2520
•攻击交易
0xcdfb8b3cbe85452192196713f371e3afdeb908c3198f0eec334beff9462ab5df
0x1b0fd785391f804a373575ace3e81a28f4a35ade934c15b5dc62ddfbbde659b4
•被攻击合约:
0x065e8A87b8F11aED6fAcf9447aBe5E8C5D7502b6
1. 攻击者先创建NFT攻击合约,如图所示。
2.因为用户将ERC20代币过度授权给了ExchangeV4(被攻击合约),并且ExchangeV4合约存在漏洞。导致攻击者利用ExchangeV4合约的fillSellOrder函数进行NFT订单创建通过向用户出售攻击合约中的NFT来转移用户向ExchangeV4合约授权的代币。
3.攻击完成后,攻击者将所盗资产转移至Tornado.Cash。
本次攻击主要利用了在ExchangeV4合约中创建的NFT订单地址可以被指定,并且在交易中只验证了卖方签名就进行转账,导致用户在有向ExchangeV4进行ERC20代币授权的情况下,攻击者可以创建自己的NFT单方面进行交易,将虚假的NFT转移给用户换出用户向ExchangeV4合约授权的代币。
在fillSellOrder函数中,攻击者可以指定出售的NFT地址,并且在验证中只验证了攻击者的签名,而未验证买方的签名。那么攻击者可以通过验证,并在调用_fillSellOrder函数时,将攻击合约的NFT转移给买方,并执行_sendERC20PaymentsWithRoyalties函数转移买方向合约授权的ERC20代币
截止发文时,攻击者获利约847个BNB,当前攻击者已将所盗资金向Tornado.Cash转移。
针对本次事件,成都链安安全团队建议:
1.在实现签名交易的功能时,需要验证买卖双方的签名。
2.用户需要避免过度授权保证财产安全。
3.项目上线前,建议选择专业的安全审计公司进行全面的安全审计,以规避安全风险。