La niebla persistente acaba de divulgar un incidente en el que se atacó un antiguo pool de Balancer V1. La pérdida es de aproximadamente 234.000 dólares.
Lo interesante es que esta vez no se trata de la falsificación de firmas o de un reingreso, algo habitual, sino de una brecha en el manejo de la precisión de joinswapPoolAmountOut dentro del contrato BPool de V1. El atacante primero reduce las reservas del pool, que eran $WBTC , hasta dejarlas casi en 0; luego, con aproximadamente 1 “satoshi” de WBTC, hace un join para acuñar una cantidad enorme de $BPT. Después, sale del pool en lotes en función de la proporción de canje de BPT, extrayendo de una sola vez DPI, USDC, WETH y WBTC del pool.
Algunos puntos a destacar:
1. V1 es una versión antigua que se anunció que quedaba descontinuada desde 2022, pero los fondos siguen en la cadena; el mantenimiento de seguridad es prácticamente nulo.
2. Los bugs de precisión son una trampa clásica en AMM de tipo “AMM ponderado” como Curve y Balancer: con valores extremadamente pequeños, es fácil provocar truncamientos por enteros.
3. Mientras el pool siga activo, cualquier “contrato antiguo que aparentemente nadie toca” podría ser descubierto por scripts de escaneo automatizados.
Recordatorio para los tenedores: en los pools de LP de protocolos antiguos, o bien retírenlos cuanto antes, o bien verifiquen que el contrato se haya migrado y que el código haya sido auditado. No basta con fijarse solo en que el TVL sea alto para sentirse en calma.
Recordatorio para desarrolladores: las funciones relacionadas con join/swap deben usar precisión fija o bien amplificar antes y redondear después. En las pruebas, asegúrense de ejecutar casos con entradas en valores límite como 1 unidad.
#DeFi #Security
Lo interesante es que esta vez no se trata de la falsificación de firmas o de un reingreso, algo habitual, sino de una brecha en el manejo de la precisión de joinswapPoolAmountOut dentro del contrato BPool de V1. El atacante primero reduce las reservas del pool, que eran $WBTC , hasta dejarlas casi en 0; luego, con aproximadamente 1 “satoshi” de WBTC, hace un join para acuñar una cantidad enorme de $BPT. Después, sale del pool en lotes en función de la proporción de canje de BPT, extrayendo de una sola vez DPI, USDC, WETH y WBTC del pool.
Algunos puntos a destacar:
1. V1 es una versión antigua que se anunció que quedaba descontinuada desde 2022, pero los fondos siguen en la cadena; el mantenimiento de seguridad es prácticamente nulo.
2. Los bugs de precisión son una trampa clásica en AMM de tipo “AMM ponderado” como Curve y Balancer: con valores extremadamente pequeños, es fácil provocar truncamientos por enteros.
3. Mientras el pool siga activo, cualquier “contrato antiguo que aparentemente nadie toca” podría ser descubierto por scripts de escaneo automatizados.
Recordatorio para los tenedores: en los pools de LP de protocolos antiguos, o bien retírenlos cuanto antes, o bien verifiquen que el contrato se haya migrado y que el código haya sido auditado. No basta con fijarse solo en que el TVL sea alto para sentirse en calma.
Recordatorio para desarrolladores: las funciones relacionadas con join/swap deben usar precisión fija o bien amplificar antes y redondear después. En las pruebas, asegúrense de ejecutar casos con entradas en valores límite como 1 unidad.
#DeFi #Security