Acabei de dedicar algum tempo a analisar o ataque de $9M @yearnfi yeth. Enquanto a maioria das pessoas aponta que o hacker criou uma enorme quantidade de yeth com alguns wei de tokens (P1), eu acho que esta não é a única causa raiz. A razão? O hacker na verdade NÃO retirou o yeth criado, apenas vendeu parte dele no pool yETH-ETH por 1000 ETH (~3M), muito menos do que o lucro real do hacker (P2). Na minha opinião, existem 2 causas raízes (ou vetores de ataque): (Disclaimer: É apenas uma análise baseada na minha análise preliminar. Posso e às vezes cometo erros!) (1) um erro de arredondamento levou à criação de yETH quase infinito. Isto é na verdade semelhante ao hack do balancer. O fator de escala (em yETH chamado de taxa) é um número em torno de 1e18+x%, e uma multiplicação-divisão faz com que o saldo virtual quebre as invariantes. O código na verdade usa o saldo virtual arredondado para calcular a nova oferta total de yETH e mintou (new_supply - old_supply) para o atacante (P3). (2) a função update_rate levou a uma enorme perda do vault de yETH Na verdade, o atacante chamou "update_rates" 2 vezes no OETH embrulhado e o yETH literalmente perdeu cerca de 1000 ETH a cada vez (onde o yETH foi queimado do vault st-yeth, P4). -> 6M de perda. Além disso, o lucro total da yETH vendida chega a ~9M. Isto pode ter sido causado pelo cálculo errado da invariante em vez de um mero erro de arredondamento. ---- Vou atualizar nos comentários deste tweet sobre qualquer nova compreensão que eu tenha sobre este ataque.
@yearnfi Atualização (1), fui banido por tentar oferecer a minha ajuda no discord do @yearnfi 🤣
@yearnfi Atualização, o link acima não é um pm oficial. Mas já está a revelar a causa raiz, eu acho, e aponta o código vulnerável.
28,61K