Ho appena dedicato del tempo a controllare l'attacco yeth da $9M di @yearnfi. Mentre la maggior parte delle persone sottolinea che l'hacker ha coniato una grande quantità di yeth con pochi wei di token (P1), penso che questa non sia l'unica causa principale. Il motivo? L'hacker in realtà NON ha ritirato il yeth coniato, ha solo venduto parte di esso nel pool yETH-ETH per 1000 ETH (~3M), molto meno del profitto reale dell'hacker (P2). Ci sono 2 cause principali (o vettori d'attacco) secondo me: (Dichiarazione: È solo un'analisi basata sulla mia analisi preliminare. Potrei e a volte faccio errori!) (1) un errore di arrotondamento ha portato al conio di yETH quasi infinito. Questo è in realtà simile all'hack del balancer. Il fattore di scala (in yETH chiamato rate) è un numero intorno a 1e18+x%, e una moltiplicazione-divisione fa sì che il bilancio virtuale rompa le invarianti. Il codice utilizza effettivamente il bilancio virtuale arrotondato per calcolare il nuovo totale dell'offerta di yETH e coniato (new_supply - old_supply) per l'attaccante (P3). (2) la funzione update_rate ha portato a enormi perdite del vault yETH. In realtà l'attaccante ha chiamato "update_rates" 2 volte su OETH avvolto e yETH ha letteralmente perso circa 1000 ETH ogni volta (dove yETH è stato bruciato dal vault st-yeth, P4). -> 6M di perdita. Inoltre, il profitto totale dalla vendita di yETH arriva a ~9M. Questo potrebbe essere stato causato da un calcolo errato dell'invariante piuttosto che da un semplice errore di arrotondamento. ---- Aggiornerò nei commenti di questo tweet per qualsiasi nuova comprensione che ho riguardo a questo attacco.
@yearnfi Aggiornamento (1), sono stato bannato per aver cercato di offrire il mio aiuto nel discord di @yearnfi 🤣
@yearnfi Aggiornamento, il link sopra non è un pm ufficiale. Ma penso che stia già rivelando la causa principale e indica il codice vulnerabile.
28,6K