SharkTeam: Análisis del ataque KyberSwap

星球日报

El 23 de noviembre de 2023, KyberSwap fue hackeado en múltiples redes como Ethereum y Arbitrum debido a la manipulación de ticks y el doble conteo de liquidez, y los atacantes han obtenido un beneficio de unos 48 millones de dólares.

SharkTeam:KyberSwap攻击事件原理分析

SharkTeam realizó un análisis técnico de este incidente por primera vez y resumió las precauciones de seguridad, con la esperanza de que los proyectos de seguimiento puedan tomar esto como una advertencia y construir conjuntamente una línea de defensa de seguridad para la industria blockchain.

I. Análisis de transacciones de ataque

Este ataque es más complejo y la implementación del ataque es más ingeniosa, por lo que seleccionamos una de las transacciones de ataque para un análisis y explicación detallados.

Operaciones de ataque:

0x09a3a12d58b0bb80e33e3fb8e282728551dc430c65d1e520fe0009ec519d75e8

Dirección del atacante:

0x50275E0B7261559cE1644014d4b78D4AA63BE836

Contrato de atacante:

0xaF2Acf3D4ab78e4c702256D214a3189A874CDC13

En esta transacción, el atacante realizó una serie de operaciones contra 3 pools de liquidez diferentes para drenar los pools. Elegimos un grupo para el análisis del flujo de ataques, que existían independientemente unos de otros.

Proceso de ataque:

  1. El atacante primero tomó prestados 10,000 wstETH a través de un préstamo flash, luego agregó alrededor de 2,998 wstETH al pool y cambió alrededor de 2,842 WETH.

SharkTeam:KyberSwap攻击事件原理分析

  1. En este momento, el estado de tick correspondiente en el grupo es -110, 910 y el precio de wstETH cambia de 1.05 ETH a 0.000015257. En este momento, la liquidez del pool es 0, lo que allana el camino para la creación de falsa liquidez;

SharkTeam:KyberSwap攻击事件原理分析

  1. El atacante agrega 3.4 wstETH de liquidez y elimina 0.56 wstETH en el rango de [0.000014659 , 0.000015260].

SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:KyberSwap攻击事件原理分析

  1. A continuación, el atacante realiza dos intercambios, que son WETH->wstETH, wstETH-> WETH. Después del primer intercambio, el precio bajó a 0.000014657, que es ligeramente inferior a 0.000014659. Después del segundo intercambio, eleve el precio a 0.000016368;

SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:KyberSwap攻击事件原理分析

  1. Al principio, había alrededor de 3 wstETH de liquidez en el pool (mint 3.4 wstETH - quemar 0.56 wstETH), y ahora hay alrededor de (1, 056 + 3, 911) en el pool, que obviamente es más;

  2. Después del ataque devuelve el préstamo flash y los fondos se transfieren desde el contrato de ataque

SharkTeam:KyberSwap攻击事件原理分析

2. Análisis de la causa de la vulnerabilidad

La causa raíz de este ataque: en la función computeSwapStep, hay una pérdida de precisión al calcular los ticks. Dado que el tick se puede manipular, evita con éxito la función _updateLiquidityAndCrossTick, lo que permite aumentar la liquidez repetidamente.

  1. En el primer intercambio, el atacante utiliza la función calcReachAmount para calcular la cantidad de wstETH y, finalmente, calcula 1, 056.056735638220800000;

SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:KyberSwap攻击事件原理分析

  1. Después de llamar a las funciones estimateIncrementalLiquidity y calcFinalPrice, el número pasado es 1, 056.056735638220799999. Después de redondear hacia arriba y redondear hacia abajo, el tick es -111311 y el tick inferior es -111310. Por lo tanto, al usar nextTick = currentTick+ 1 y usar “!=” para juzgar los dos parámetros sqrtP, la función _updateLiquidityAndCrossTick se omite correctamente y se evita la actualización de la liquidez.

SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:KyberSwap攻击事件原理分析 SharkTeam:KyberSwap攻击事件原理分析

  1. En el segundo swap, se pagó _updateLiquidityAndCrossTick, lo que aumentó la liquidez. Debido a la pérdida de precisión en el cálculo de la cantidad durante el primer swap, la liquidez no se actualiza y se elimina, lo que resulta en una doble situación cuando la liquidez se calcula por segunda vez.

SharkTeam:KyberSwap攻击事件原理分析

III. Recomendaciones de seguridad

En respuesta a este ataque, los desarrolladores deben tomar las siguientes medidas de seguridad en su desarrollo diario:

  1. Preste atención al cálculo correcto de los invariantes y la lógica matemática en el negocio para evitar la pérdida de precisión.

  2. Antes de que se publique el proyecto, es necesario cooperar con un equipo de auditoría profesional externo para realizar una auditoría de contrato.

Sobre Nosotros

La visión de SharkTeam es asegurar el mundo Web3. El equipo está formado por profesionales de seguridad experimentados e investigadores sénior de todo el mundo, que conocen bien la teoría subyacente de blockchain y los contratos inteligentes. Proporciona servicios que incluyen análisis de big data en cadena, advertencia de riesgos en cadena, auditoría de contratos inteligentes, recuperación de criptoactivos, etc., y ha creado ChainAegis, una plataforma de análisis de big data y alerta temprana de riesgos en cadena, que admite niveles ilimitados de análisis de gráficos en profundidad y puede combatir eficazmente el riesgo de Amenaza Persistente Avanzada (APT) en el mundo Web3. Ha establecido relaciones de cooperación a largo plazo con actores clave en varios campos del ecosistema Web3, como Polkadot, Moonbeam, polygon, Sui, OKX, imToken, ChainIDE, etc.

Sitio web oficial:

Twitter:

Discordia:

Telegrama:

Aviso legal: La información de esta página puede proceder de terceros y no representa los puntos de vista ni las opiniones de Gate. El contenido que aparece en esta página es solo para fines informativos y no constituye ningún tipo de asesoramiento financiero, de inversión o legal. Gate no garantiza la exactitud ni la integridad de la información y no se hace responsable de ninguna pérdida derivada del uso de esta información. Las inversiones en activos virtuales conllevan riesgos elevados y están sujetas a una volatilidad significativa de los precios. Podrías perder todo el capital invertido. Asegúrate de entender completamente los riesgos asociados y toma decisiones prudentes de acuerdo con tu situación financiera y tu tolerancia al riesgo. Para obtener más información, consulta el Aviso legal.
Comentar
0/400
Sin comentarios