.@OnyxDAO 遭受攻擊,損失近 400 萬美元。根本原因是清算過程中未經驗證的用戶輸入。具體來說,NFTLiquidation 合約中的 liquidateWithSingleRepay 函數的關鍵參數可由攻擊者控制,從而允許通過 repayAmount 參數操縱 extraRepayAmount 變量。通過利用這一點,攻擊者能夠僅用一個代幣清算所有抵押品。
關鍵攻擊步驟總結如下:
1. 攻擊者首先存入 oETH 並借入各種資產以達到清算門檻。同時,他們創建一個新合約,通過捐贈攻擊和精度損失(源自 Compound V2 分叉),降低 oETH 匯率,使攻擊者的頭寸符合清算條件。
2. 攻擊者隨後執行清算。由於參數驗證不充分,攻擊者操縱了 extraRepayAmount 變量,該變量被添加到需要清算多少代幣的計算中。這使得攻擊者能夠通過清算獲得更多的 oETH,從而獲利。
攻擊 Tx: