.@OnyxDAO foi atacado, resultando em uma perda de quase US$ 4 milhões. A causa raiz foi a entrada não verificada do usuário durante o processo de liquidação. Especificamente, os parâmetros-chave da função liquidateWithSingleRepay no contrato NFTLiquidation eram controláveis ​​pelo invasor, permitindo a manipulação da variável extraRepayAmount por meio do parâmetro repayAmount. Ao explorar isso, o invasor conseguiu liquidar todas as garantias com apenas um token.

As principais etapas do ataque são resumidas da seguinte forma:

1. O invasor primeiro depositou oETH e tomou emprestado vários ativos para atingir o limite de liquidação. Simultaneamente, eles criaram um novo contrato que, por meio de um ataque de doação e perda de precisão (inerente ao fork do Compound V2), reduziu a taxa de câmbio do oETH, tornando a posição do invasor elegível para liquidação.

2. O invasor então realizou a liquidação. Devido à validação insuficiente dos parâmetros, o invasor manipulou a variável extraRepayAmount, que foi adicionada ao cálculo de quantos tokens precisavam ser liquidados. Isso permitiu que o atacante obtivesse mais oETH por meio da liquidação, levando a um lucro.

Ataque Tx: