Análisis del Hook de Uniswap v4: Diseño de Arquitectura, Vulnerabilidades Comunes y Prácticas de Protección
Desde el lanzamiento de Uniswap v4 en la red principal, el mecanismo Hook se ha convertido en una de las innovaciones más destacadas en DeFi. Plataformas como Flaunch en Base utilizan Hooks para precios fijos en preventa y liquidaciones automáticas, mientras que protocolos como Bunni v2 los emplean para liquidez programable y modelos de re-staking. Sin embargo, el auge de estos casos de uso también ha traído un aumento significativo en ataques dirigidos a vulnerabilidades en la implementación de los Hooks.
Este artículo analiza la arquitectura de seguridad de los Hooks de Uniswap v4. La principal innovación es un contrato único PoolManager que gestiona todos los pools y utiliza un sistema de "flash accounting" (contabilidad temporal), donde los cambios en los saldos se resuelven al final de cada transacción. Cada pool puede vincular de forma permanente un contrato Hook, que se ejecuta en puntos clave como `beforeSwap` o `afterAddLiquidity`.
Un aspecto crítico es que los permisos del Hook (qué funciones ejecuta) están codificados en los últimos bits de su dirección de despliegue, lo que requiere un cálculo cuidadoso usando herramientas como HookMiner. Un error común es que funciones de callback como `beforeSwap` no tienen control de acceso por defecto en plantillas como BaseHook, dejándolas expuestas si el desarrollador no lo implementa explícitamente.
El análisis de la pila de llamadas, como en un intercambio (`swap`), revela que los Hooks pueden modificar los montos de la operación devolviendo un `delta`. Un Hook "asíncrono" o de "curva personalizada" puede incluso anular completamente la lógica de intercambio de Uniswap, asumiendo todo el riesgo. Aunque el sistema garantiza que el libro mayor final esté equilibrado (`NonzeroDeltaCount == 0`), esto no previene la manipulación maliciosa de los estados subyacentes.
El caso de Cork Protocol subraya estos riesgos, mostrando que auditar un Hook requiere tratarlo como un subprotocolo completo, dada su compleja interacción con el PoolManager y el potencial de confusiones entre tipos de tokens en diferentes mercados. En resumen, la seguridad en v4 se ha fragmentado: ya no depende solo del protocolo principal, sino de la correcta implementación de cada Hook individual en cada pool.
marsbitHace 39 min(s)