Un bug en Bancor puso en peligro el sistema DeFi de Ethereum
Una falla descubierta en Bancor el 18 de junio le habría permitido a los hackers vaciar de forma muy sencilla los fondos de cualquiera que hubiera interactuado con sus contratos inteligentes. El exploit (fragmento de un software o de datos que suele ser utilizado para aprovecharse de la vulnerabilidad en un sistema y así conseguir el control o acceso al mismo) se basaba en el concepto de autorización de retiro, introducido en el estándar ERC-20. Esto permite a varios DApps de Ethereum (ETH) retirar automáticamente el dinero de las billeteras de los usuarios.
Como señaló Oded Leiba, ingeniero de investigación de ZenGo, la función de retiro de fondos en el contrato inteligente de Bancor se fijó erróneamente para que cualquiera pudiera utilizarla.
Bancor actuó de manera preventiva para “quitar” los fondos de los usuarios antes de que los criminales pudieran intervenir.
A esto se sumó el hecho de que los contratos de Bancor requerían una autorización ilimitada para retirar dinero incluso en la primera interacción con el protocolo. Aun cuando los usuarios sólo planeaban probar el protocolo con una cantidad limitada de fondos, el sistema podía retirar todo el saldo de esa cuenta en particular.
Aprobación ilimitada por tiempo ilimitado
Como le dijo Leiba a Cointelegraph, muchas aplicaciones conocidas de finanzas descentralizadas, o DeFi, solicitan las mismas autorizaciones. Entre las probadas por el equipo de ZenGo, Compound, Uniswap, bZX, Aave, Kyber y dYdX todas cuentan con autorizaciones infinitas o extremadamente amplias.
Kain Warwick, fundador de Synthetix, le comentó a Cointelegraph que estas autorizaciones permiten un mejor uso y un menor consumo de energía, con el inconveniente de un mayor riesgo. Hasta ahora, la mayoría de las plataformas DeFi parecen preferir la utilidad. Sin embargo, tras el accidente, Bancor decidió modificar sus contratos para aprobar sólo la cantidad necesaria con cada comercio.
Cointelegraph también se puso en contacto con Aave para saber más sobre su decisión de utilizar las autorizaciones ilimitadas, pero no recibió respuesta.
Warwick cree que “es un tema serio ya que a cada nuevo contrato al que le das una amplia autorización te expone a un mayor riesgo si el contrato se ve comprometido”.
Incluso cuando la plataforma ya no se utiliza, las autorizaciones siguen en vigencia. Leiba señaló que más de 160 direcciones siguen siendo vulnerables al contrato de la inteligencia de Bancor, presumiblemente sin fondos. Sin embargo, si volvieran a la actividad, los hackers podrían robar el dinero en cualquier momento.
¿Los estándares tienen la culpa?
Hay limitaciones fundamentales en el estándar de tokens ERC-20 que se utilizan comúnmente hoy en día. Por un lado, las autorizaciones no pueden tener un límite de tiempo, lo que podría haber ayudado a mitigar algunos de los efectos a largo plazo de las autorizaciones infinitas.
Varias normas competentes, como la ERC-223, trataron de mitigar el problema eliminando la necesidad de conceder autorizaciones en su totalidad. En la mayoría de las aplicaciones existentes, las interacciones con un contrato inteligente pueden ser firmadas manualmente cada vez sin afectar significativamente a la experiencia del usuario.
Sin embargo, los contratos inteligentes no pueden responder a las llamadas de transferencia unilateral realizadas por un usuario. En cambio, deben recoger las tokens por su cuenta utilizando la función “transferFrom”, que requiere la configuración de la concesión mediante el método de ” autorización”.
Warwick explicó que el equipo utilizó inicialmente el estándar más avanzado ERC-223. Sin embargo, los problemas y errores con los contratos que no apoyaban el nuevo estándar obligaron a la comunidad a abandonarlo. Añadió:
“Los estándares son duros, y cuando todo está diseñado para el ERC20, pasar unilateralmente al ERC223 crea mucha fricción”.
¿Cómo arreglar esto?
Algunas billeteras le permiten a los usuarios modificar el monto específico de la autorización durante la solicitud de aprobación, aunque pocas revelan claramente cuál es el valor predeterminado. ZenGo implementó un sistema en el que las autorizaciones se envían simultáneamente con cada transferencia, lo que puede ayudar a proteger a los usuarios.
Warwick reveló sus prácticas de seguridad:
“Doy a los contratos amplias autorizaciones pero soy muy cuidadoso con cuáles de mis cuentas lo hago y a cuáles contratos se lo doy porque hay menos fricción, pero mucho más riesgo”.
También sugirió que “vale la pena hacer el mantenimiento” eliminando los permisos de los contratos no utilizados a través de herramientas como Revocar, Zona Aprobada y TAC.
Sigue leyendo: