-
La vulnerabilidad se debe a una "integraciรณn problemรกtica" de la ERC-2771 y el estรกndar Multicall.
-
La falla derivรณ en el robo de 17.394 USDC y 87 ETH.
OpenZeppelin, empresa especializada en seguridad en redes blockchain, revelรณ una vulnerabilidad crรญtica en la integraciรณn de los estรกndares ERC-2771 y Multicall en Ethereum. El problema puso en riesgo a muchos usuarios y proyectos, y hasta permitiรณ el robo de fondos en ethers (ETH) y en la stablecoin USD Coin (USDC).
La ยซintegraciรณn problemรกticaยป de ERC-2771 y Multicall que describe OpenZeppelin en su comunicado afecta a una amplia gama de contratos inteligentes, incluyendo aquellos que respaldan a los tokens ERC-20 (que usan las stablecoins, por ejemplo) y ERC-721 (el de los tokens no fungibles o NFT).
Esta vulnerabilidad generaba un potencial ataque de ยซaddress spoofingยป, es decir, ยซengaรฑo de direcciรณnยป o ยซparodia de direcciรณnยป. Efectivamente, se registraron ataques que llevaron al robo de 87 ETH (aproximadamente USD 205.000, segรบn el รญndice de precios de CriptoNoticias) y 17.394 USDC.
Cabe destacar que la vulnerabilidad se detectรณ el 20 de noviembre. Open Zeppelin habรญa recibido una advertencia sobre la vulnerabilidad por parte del equipo de ThirdWeb, empresa que brinda soluciones tecnolรณgicas para proyectos en la denominada web3. El tema se hizo pรบblico dos semanas mรกs tarde para poder trabajar en una soluciรณn antes de anunciarlo, como suele pasar en estos casos.
El equipo de OpenZeppelin ยซvalidรณ rรกpidamente que el problema no es especรญfico de las implementaciones contenidas en la biblioteca de contratos de OpenZeppelinยป, segรบn informรณ la empresa. Asimismo, ThirdWeb reconociรณ dos casos de contratos inteligentes afectados y recomendรณ ciertas medidas de mitigaciรณn a sus clientes.
Cรณmo identificar el riesgo y prevenir ataques
Segรบn detalla el comunicado, los contratos inteligentes de Ethereum que implementan tanto Multicall como ERC-2771 son vulnerables al ยซArbitrary Address Spoofingยป. Esto permite a los atacantes cambiar la identidad del remitente, utilizando datos engaรฑosos y aprovechando una funciรณn especรญfica llamada delegatecall de Multicall. En resumen, podrรญan hacerse pasar por otra persona o entidad de manera fraudulenta.
Para la identificaciรณn de los contratos vulnerables, OpenZeppelin proporciona herramientas como Code Inspector. De igual modo, ThirdWeb ofrece una plataforma para consultar sobre la seguridad de contratos inteligentes implementados usando su biblioteca de contratos.
Algunas de las medidas de mitigaciรณn recomendadas consisten en desactivar los forwarders de confianza, pausar contratos si es posible, y alentar a los usuarios a revocar aprobaciones de permisos. Ademรกs, se sugiere la preparaciรณn de una actualizaciรณn o la evaluaciรณn de opciones de tomar instantรกneas para volver los contratos irrecuperables a un estado seguro previo, dice el texto.
Mientras tanto, OpenZeppelin lanzรณ una actualizaciรณn para OpenZeppelin Contracts (versiones 4.x y 5.x) que sรญ habilita un uso seguro de Multicall con ERC-2771. La nueva versiรณn de Multicall incorpora una longitud de sufijo de contexto para identificar y adaptarse a llamadas de forwarders confiables, de modo que consigue minimizar riesgos, explican.
En el contexto de Ethereum, un ยซforwarderยป es un contrato que facilita transacciones entre usuarios y contratos inteligentes. Este contrato actรบa como un intermediario, retransmitiendo o ยซreenviandoยป las transacciones desde el usuario al contrato inteligente y viceversa.
Los estรกndares afectados por la vulnerabilidad
El estรกndar ERC-2771 en Ethereum se refiere a un ยซrequerimiento de comentario en Ethereumยป (ERC, por sus siglas en inglรฉs) que establece un estรกndar para transacciones de metatransacciones. En lugar de que la direcciรณn del remitente en una transacciรณn sea directamente la del usuario, el estรกndar ERC-2771 permite que un ยซforwarderยป actรบe como intermediario. El remitente real se verifica mediante una firma en los datos de la transacciรณn.
Este estรกndar asegura que la informaciรณn sobre el remitente original se transmita adecuadamente al contrato que se estรก llamando. Ademรกs, permite que un tercero pague el gas necesario en nombre del emisor original de la transacciรณn. Asรญ, mejora la eficiencia y la usabilidad de las transacciones en la red Ethereum.
Por otro lado, el estรกndar ยซMulticallยป o ERC-6357, se refiere a un contrato inteligente que permite realizar mรบltiples llamadas a funciones en una รบnica transacciรณn. En lugar de enviar transacciones separadas para cada funciรณn que se desea ejecutar, Multicall agrupa estas llamadas en una sola transacciรณn, lo que ahorra costos de gas.
En el contexto de la vulnerabilidad discutida, la integraciรณn problemรกtica de Multicall con ERC-2771 en algunos contratos Ethereum ha creado una vulnerabilidad conocida como ยซArbitrary Address Spoofingยป. Esta vulnerabilidad permite a los atacantes manipular la resoluciรณn del remitente de manera maliciosa, lo que puede resultar en el robo de fondos u otras actividades fraudulentas.