Solo me ha llevado un tiempo revisando el ataque de yeth de 9 millones de @yearnfi dólares. Aunque la mayoría señala que el hacker acuñó una gran cantidad de yeth con unos pocos wei de tokens (P1), creo que esta no es la única causa raíz. ¿La razón? El hacker en realidad NO retiró el yeth acuñado, solo vendió parte en el pool yETH-ETH por 1000 ETH (~3M), mucho menos que el beneficio real del hacker (P2). En mi opinión, hay dos causas raíz (o vectores de ataque): (Aviso: Es solo un análisis basado en mi análisis preliminar. ¡Puede que y a veces cometa errores!) (1) un error de redondeo llevaba a acuñar yETH casi infinito. Esto es en realidad similar al hack del balanceador. El factor de escala (en yETH llamado tasa) es un número alrededor de 1e18+x%, y una división múltiple hace que el equilibrio virtual rompa los invariantes. El código utiliza en realidad el balance virtual redondeado para calcular el nuevo suministro total de yETH y acuñado (new_supply - old_supply) al atacante (P3). (2) update_rate función provocó una gran pérdida de la bóveda yETH De hecho, el atacante llamó "update_rates" 2 veces en OETH envolvido y yETH literalmente perdió ~1000 ETH cada vez (donde yETH se quemó desde la bóveda st-yeth, P4). -> pérdida de 6 millones. Además, el beneficio conjunto de yETH vendido se eleva a ~9M. Esto pudo deberse al cálculo incorrecto del invariante y no a un simple error de redondeo. ---- Actualizaré en los comentarios de este tuit para cualquier nueva comprensión mía sobre este ataque.
@yearnfi Actualización (1), me banearon por intentar ofrecer mi ayuda en el Discord 🤣 de @yearnfi
@yearnfi Actualización, el enlace anterior no es un mensaje privado oficial. Pero creo que ya está revelando la causa raíz y señala el código vulnerable.
28.61K