El 22 de mayo de 2025, Cetus Protocol, el mayor DEX de liquidez concentrada en Sui, sufrió un exploit catastrófico que drenó liquidez en múltiples pools, resultando en pérdidas estimadas de aproximadamente ~$223 millones. Este incidente es el mayor hackeo DeFi de 2025, poniendo de relieve vulnerabilidades críticas en la seguridad de contratos inteligentes, particularmente en lo que respecta a la aritmética de punto fijo.
El exploit se originó a partir de un fallo en una función personalizada de prevención de desbordamiento, checked_shlw(). Debido a una constante incorrecta y una comparación errónea, esta función no logró detectar condiciones inseguras antes de realizar un desplazamiento a la izquierda utilizado en la matemática de punto fijo u256. Este descuido permitió una truncación silenciosa de los bits más significativos durante cálculos de delta cruciales, como determinar la cantidad de tokens de entrada requerida para una liquidez dada. Al manipular cuidadosamente parámetros como el tamaño de liquidez y la configuración de tick/rango de precios, el atacante pudo engañar al protocolo para que calculara un depósito requerido de esencialmente 1 unidad de token, mientras que simultáneamente acreditaba a su posición una cantidad enorme de liquidez. Con esta posición inflada registrada en la cadena, el atacante luego retiró liquidez y extrajo reservas reales, vaciando efectivamente los pools.
Entendiendo la Liquidez Concentrada y la Matemática de Punto Fijo
Cetus Protocol utiliza un diseño de creador de mercado de liquidez concentrada (CLMM), un enfoque sofisticado donde los proveedores de liquidez (LPs) suministran activos únicamente dentro de un rango de precios elegido (un intervalo de tick). A diferencia de los AMMs tradicionales que distribuyen la liquidez de forma uniforme, los CLMMs permiten a los LPs concentrar capital entre límites inferior y superior específicos. Este diseño mejora significativamente la eficiencia del capital, pero introduce una gran dependencia de la matemática de punto fijo precisa para la conversión entre:
- La cantidad de liquidez acreditada a una posición.
- Las cantidades reales de tokens que deben depositarse o pueden retirarse.
Cuando un usuario añade liquidez, el protocolo calcula los deltas de tokens (cuántos tokens subyacentes se requieren) en función del precio actual y el rango seleccionado. Por el contrario, cuando se retira liquidez, el cálculo inverso determina la cantidad de activos que la posición tiene derecho a retirar.
La vulnerabilidad central del Incidente Cetus explotó esta intrincada relación: si el cálculo de "cuánto debes depositar" podía manipularse para ser demasiado pequeño, mientras que la posición seguía siendo acreditada con gran liquidez, un atacante podría luego retirar esa liquidez acreditada para extraer reservas reales del pool. Esto pone de relieve un vector de ataque común en los protocolos DeFi que involucran operaciones matemáticas complejas.
La Vulnerabilidad Crítica de Desplazamiento u256
La causa raíz de este enorme hackeo DeFi fue un error en una función auxiliar diseñada para realizar de forma segura un desplazamiento a la izquierda, una operación común en la aritmética de punto fijo u256 (típicamente << 64 para aplicar un factor de escala de 2^64). En sistemas basados en Move como Sui, las comprobaciones de desbordamiento no se aplican de forma uniforme en todas las operaciones, lo que hace que las salvaguardas manuales para el desplazamiento de bits sean cruciales.
Cetus implementó un auxiliar de prevención de desbordamiento, checked_shlw(), para verificar si desplazar un valor u256 a la izquierda 64 bits excedería el límite de 256 bits. Sin embargo, debido a una constante incorrecta y una comparación errónea, esta comprobación crítica podía eludirse para ciertas entradas grandes que deberían haber sido rechazadas.
Específicamente, la función get_delta_a, responsable de calcular la cantidad de tokens subyacentes (Token A) requerida para la provisión de liquidez entre dos precios (sqrt_price_0 y sqrt_price_1), llama a checked_shlw(). El propósito de checked_shlw() aquí es garantizar que el numerador en el cálculo del Token A no desborde al desplazarse.
El fallo residía en la comprobación de desbordamiento de checked_shlw(), que utilizaba una máscara de 0xffffffffffffffff << 192 (equivalente a 2^256 - 2^192). Esta máscara es significativamente mayor que el umbral correcto. En consecuencia, un valor de entrada mayor que 2^192 pero menor que esta máscara errónea podía pasar la comprobación, aunque desplazarlo a la izquierda excedería efectivamente el rango u256. El desplazamiento a la izquierda subsiguiente resultó en una truncación silenciosa, produciendo un valor incorrecto y significativamente menor.
La figura a continuación ilustra la diferencia entre la implementación vulnerable y la versión parcheada. El límite correcto debería haber sido 1 << 192, no el mucho mayor 0xffffffffffffffff << 192. El atacante explotó ingeniosamente esta comprobación defectuosa para acuñar una cantidad inusualmente grande de tokens LP mientras depositaba una cantidad mínima, como 1 wei de Token A.

Anatomía del Hackeo DeFi de Cetus
Aunque el atacante aplicó la misma técnica en múltiples pools, el flujo del ataque subyacente se mantuvo consistente. Analicemos una transacción específica para comprender los pasos involucrados en esta sofisticada brecha de seguridad en blockchain.
1. Manipular el Precio del Pool con un Flashloan
El ataque comenzó con el atacante utilizando un flashloan para adquirir rápidamente 10.024.321,28 haSUI. Luego intercambiaron 5.765.124,79 SUI, bajando intencionalmente el precio del pool de 18.956.530.795.606.879.104 a 18.425.720.184.762.886. Este movimiento estratégico de precios fue crucial, ya que permitió al atacante abrir una posición CLMM que requería solo una cantidad mínima de un token, aprovechando el comportamiento de liquidez "de un solo lado / casi de un solo token" inherente en los diseños de liquidez concentrada.

2. Añadir Liquidez con un Depósito "Casi Gratuito"
A continuación, el atacante seleccionó un rango de tick muy estrecho (por ejemplo, 300000–300200) y ajustó con precisión la liquidez objetivo. En los sistemas CLMM, los cálculos de delta de tokens dependen en gran medida de los precios de raíz cuadrada en los límites del rango, y los rangos estrechos pueden hacer que ciertos valores intermedios sean extremadamente sensibles a pequeños cambios.
Al ajustar cuidadosamente estos parámetros, el atacante provocó que una multiplicación interna produjera un valor intermedio u256. Este valor debería haber desbordado al desplazarse a la izquierda, pero superó con éxito la guardia defectuosa de checked_shlw(). Como consecuencia directa de la truncación inducida por el desplazamiento inseguro, el protocolo calculó la cantidad requerida de Token A como efectivamente 1 unidad, mientras simultáneamente acuñaba y registraba la posición con una cantidad masiva de liquidez (es decir, 10.365.647.984.364.446.732.462.244.378.333.008).

3. Retirar Liquidez para Extraer Reservas Reales
Con una posición en cadena que falsamente aparecía con liquidez inflada, el atacante procedió a retirar liquidez y extraer activos como si la posición hubiera sido financiada correctamente. Este paso crítico es donde las reservas reales del pool fueron sistemáticamente drenadas, llevando a la pérdida sustancial de $223 millones.
4. Repetir en Múltiples Pools
Tras validar con éxito el primitivo del exploit, el atacante replicó el mismo flujo de trabajo en múltiples pools, multiplicando rápidamente las pérdidas totales y ejecutando uno de los mayores hackeos DeFi hasta la fecha.
Best Security Auditor for Web3
Validate design, code, and business logic before launch
Conclusiones Clave y Lecciones de Seguridad en Blockchain
El Incidente Cetus sirve como un duro recordatorio de los intrincados desafíos en la seguridad blockchain, especialmente dentro de los complejos protocolos DeFi. La causa raíz fue una comprobación de desbordamiento defectuosa en torno a un desplazamiento a la izquierda u256 en la ruta de matemática de punto fijo. Esto permitió que un desplazamiento desbordado truncara silenciosamente los bits altos, haciendo que el depósito requerido pareciera casi nulo mientras se acreditaba a una posición LP una liquidez masiva, lo que en última instancia permitió la extracción de reservas.
Lecciones Aprendidas para la Seguridad de Contratos Inteligentes:
- Rigurosidad en Aritmética: Sea excepcionalmente riguroso al tratar con desplazamientos, factores de escala, redondeo y condiciones de límite en la aritmética de punto fijo. Estas son fuentes comunes de vulnerabilidades críticas.
- Primitivos Probados: Priorice el uso de primitivos de matemática segura probados o invariantes formalizados sobre el desarrollo de funciones auxiliares ad-hoc. Si se necesitan auxiliares personalizados, valide sus constantes y umbrales con extremo cuidado.
- Pruebas Exhaustivas: Implemente extensas pruebas de casos extremos y basadas en propiedades para cubrir valores máximos, ticks límite y combinaciones de parámetros adversariales. Este enfoque proactivo puede descubrir fallos sutiles antes del despliegue.
- Monitoreo Continuo: Incluso con auditorías robustas, las soluciones de monitoreo en tiempo real son cruciales. Herramientas como Phalcon Security de BlockSec pueden detectar actividades sospechosas en cadena y posibles exploits en curso, ofreciendo una vital última línea de defensa.
El Incidente Cetus subraya la importancia de un enfoque multicapa para la seguridad blockchain, combinando una revisión meticulosa del código, metodologías de prueba avanzadas y monitoreo continuo en cadena para protegerse contra sofisticados hackeos DeFi.
Referencia
Acerca de BlockSec
BlockSec es un proveedor integral de seguridad blockchain y cumplimiento criptográfico. Desarrollamos productos y servicios que ayudan a los clientes a realizar auditorías de código (incluyendo contratos inteligentes, blockchain y billeteras), interceptar ataques en tiempo real, analizar incidentes, rastrear fondos ilícitos y cumplir con las obligaciones AML/CFT, a lo largo del ciclo de vida completo de protocolos y plataformas.
BlockSec ha publicado múltiples artículos de seguridad blockchain en conferencias de prestigio, reportado varios ataques de día cero en aplicaciones DeFi, bloqueado múltiples hackeos para rescatar más de 20 millones de dólares, y asegurado miles de millones en criptomonedas.
- Sitio web oficial: https://blocksec.com/
- Cuenta oficial de Twitter: https://twitter.com/BlockSecTeam



