.@OnyxDAO byl napaden, což vedlo ke ztrátě téměř 4 milionů $. Hlavní příčinou byl neověřený uživatelský vstup během procesu likvidace. Konkrétně klíčové parametry funkce liquidateWithSingleRepay ve smlouvě NFTLiquidation byly ovladatelné útočníkem, což umožňovalo manipulaci s proměnnou extraRepayAmount prostřednictvím parametru repayAmount. Tím, že toho útočník využil, dokázal zlikvidovat veškeré zajištění pouze jedním tokenem.
Klíčové kroky útoku jsou shrnuty takto:
1. Útočník nejprve vložil oETH a vypůjčil si různá aktiva, aby dosáhl prahu likvidace. Současně vytvořili novou smlouvu, která prostřednictvím donačního útoku a ztráty přesnosti (inherentní forku Compound V2) snížila směnný kurz oETH, díky čemuž byla pozice útočníka způsobilá k likvidaci.
2. Útočník následně provedl likvidaci. Kvůli nedostatečné validaci parametrů útočník manipuloval s proměnnou extraRepayAmount, která byla přidána do výpočtu, kolik tokenů je potřeba zlikvidovat. To útočníkovi umožnilo získat více oETH prostřednictvím likvidace, což vedlo k zisku.
Útok Tx: