Acabo de tomarme un tiempo para revisar el ataque de $9M a @yearnfi yeth. Mientras que la mayoría de la gente 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 de él en el pool yETH-ETH por 1000 ETH (~3M), muy por debajo de la ganancia real del hacker (P2). En mi opinión, hay 2 causas raíz (o vectores de ataque): (Descargo de responsabilidad: Es solo un análisis basado en mi análisis preliminar. ¡Puedo y a veces cometo errores!) (1) un error de redondeo llevó a la acuñación de yETH casi infinito. Esto es en realidad similar al hackeo de balancer. El factor de escalado (en yETH llamado tasa) es un número alrededor de 1e18+x%, y una multiplicación-división hace que el balance virtual rompa las invariantes. El código en realidad utiliza el balance virtual redondeado para calcular el nuevo suministro total de yETH y acuñó (nuevo_suministro - antiguo_suministro) al atacante (P3). (2) la función update_rate llevó a una gran pérdida del vault de yETH. En realidad, el atacante llamó a "update_rates" 2 veces en OETH envuelto y yETH, literalmente perdió ~1000 ETH cada vez (donde yETH fue quemado del vault st-yeth, P4). -> 6M de pérdida. Además, la ganancia total de yETH vendido asciende a ~9M. Esto puede haber sido causado por el cálculo incorrecto de la invariante más que por un simple error de redondeo. ---- Actualizaré en el comentario de este tweet cualquier nuevo entendimiento que tenga sobre este ataque.
@yearnfi Actualización (1), fui baneado por intentar ofrecer mi ayuda en el discord de @yearnfi 🤣
@yearnfi Actualización, el enlace anterior no es un pm oficial. Pero ya está revelando la causa raíz, creo, y señala el código vulnerable.
28,61K