Weth permit
La vulnerabilidad WETH Permit es un posible atque relacionado con el token Wrapped Ether (WETH) en la red Ethereum.
WETH es una representación ERC-20 del Ether (ETH), que permite a los usuarios interactuar con contratos inteligentes que requieren tokens ERC-20, como los utilizados en las pools de liquidez de los protocolos de intercambio descentralizados (DEX). Aunque WETH es esencial para la interoperabilidad en la red Ethereum, su implementación puede presentar vulnerabilidades que podrían ser explotadas por actores malintencionados
La vulnerabilidad WETH Permit se refiere a un problema de seguridad en la función permit del contrato WETH. Esta función permite a los usuarios autorizar a otros contratos o direcciones para gastar una cantidad específica de WETH en su nombre, sin necesidad de que el propietario del token firme una transacción. Esto se hace mediante la firma de un mensaje que incluye el tipo de operación (por ejemplo, transfer), la cantidad de tokens, el destinatario de la operación, y un nonce (un número diferente para cada una de las transacciones).
El problema radica en que, si un atacante puede interceptar o manipular el mensaje firmado, podría autorizar transacciones no deseadas en nombre del propietario del WETH. Esto podría incluir la transferencia de tokens a una dirección controlada por el atacante, lo que le permitiría drenar los fondos del propietario.
Para mitigarla es crucial implementar medidas de seguridad robustas, como la siguiente:
En este ejemplo, la función permit verifica que la firma proporcionada coincida con la del propietario del token y que el nonce sea válido. La implementación estándar de la función permit en contratos como WETH utiliza dos funciones de hash por razones de seguridad y especificación. La primera función de hash, keccak256, se utiliza para crear un hash de la estructura de datos que incluye los detalles de la operación permitida, como el propietario del token, el destinatario, la cantidad de tokens, el nonce y el tiempo de vencimiento. Este hash se utiliza luego para crear un segundo hash, que incluye el dominio del contrato y el hash de la estructura de datos, para proporcionar una firma que puede ser verificada.
Este enfoque de doble hash es parte de la especificación ERC-2612, que define la función permit para tokens ERC-20. La razón detrás de este diseño es proporcionar una capa adicional de seguridad.
Aspectos importantes.
Verificación de la Firma: Asegurarse de que la firma proporcionada en la función permit sea válida y provenga del propietario del token.
Validación de Nonce: Utilizar un nonce para asegurarse de que cada mensaje firmado sea único y no pueda ser reutilizado.
La vulnerabilidad WETH Permit es un ejemplo de cómo las funcionalidades avanzadas de los contratos inteligentes pueden presentar riesgos de seguridad. Es esencial ser conscientes de estas vulnerabilidades e implementar medidas de defensa adecuadas para proteger los activos y la integridad de los contratos inteligentes.
También puedes ver este mismo artículo en Linkedin aqui.