慢霧:QBridge遭受攻擊,對充值代幣進行白名單檢查後未檢查是否為native代幣

星球日報訊據慢霧區,Qubit的QBridge遭受攻擊損失約8000萬美元。 1. 攻擊者通過ETH上QBridge合約進行存款操作,存款時傳入所要跨的目標鏈destinationDomainID、所要跨鏈資產resourceID及跨鏈資金數量與接收地址等參數構成的data。 2. 攻擊者指定傳入resourceID為跨ETH代幣所需值,但調用QBridge的deposit函數,因此首先繞過跨鏈資金數量與msg.value檢查。由於攻擊者傳入的是真實跨ETH代幣所需要的值所以可以順利調用handler合約的deposit函數。 4. handler合約的deposit函數中會根據resourceID取出的所要充值的代幣是否在白名單內進行檢查,由於攻擊者傳入的resourceID對應ETH,因此映射中取出的所要充值的代幣為0地址,即會被認為是充值ETH而通過白名單檢查。但deposit函數中卻並沒有對所要充值的代幣地址再次進行檢查,隨後直接通過safeTransferFrom調用所要充值的代幣的transferFrom函數。 5. 由於所要充值的代幣地址為0地址,而call調用無code size的EOA地址時其執行結果都會為true且返回值為空,因此通過transferFrom的轉賬操作通過safeTransferFrom的檢查,最後觸發Deposit跨鏈充值事件。 6. 由於傳入的resourceID為跨ETH所需要的值,因此觸發的Deposit事件與真正充值ETH的事件相同,這讓QBridge認為攻擊者進行ETH跨鏈,因此在BSC鏈上為攻擊者鑄造大量qXETH。攻擊者利用此qXETH憑證耗盡Qubit借貸池。本次攻擊的主要原因在於對白名單內代幣進行轉賬操作時未對其是否是0地址再次進行檢查,導致本該通過native充值函數進行充值的操作卻能順利走通普通代幣充值邏輯。

Total
0
Shares
Related Posts