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.項目上線前,建議選擇專業的安全審計公司進行全面的安全審計,以規避安全風險。