¿Volver a afianzar la vulnerabilidad? Analiza el ataque a la Arena de las Estrellas

Antecedentes

Según la advertencia de seguridad del sistema Slow MistEye, el 7 de octubre de 2023, el Stars Arena, el protocolo social on-chain de Avalanche, fue atacado, lo que supuso una pérdida de unos 2,9 millones de dólares. El equipo de seguridad de Slow Mist analizó brevemente el ataque y compartió los resultados a continuación.

Información relacionada

Dirección del atacante:

Contrato de ataque:

Comercio de ataque:

Núcleo de ataque

Un atacante explota una vulnerabilidad de reentrada para manipular el precio correspondiente a su cuota de depósito. Posteriormente, al vender, una manipulación de precios similar es causada por la dependencia de la manipulación maliciosa de los cálculos de precios. Al calcular con precisión el precio de la acción actualizado en el reentrante, el atacante roba los fondos del contrato.

Análisis de transacciones

Podemos encontrar que hay una llamada de reentrada en la transacción de ataque, y analizamos el método de llamada paso a paso descompilando el código.

! [¿Volver a entrar?] Análisis del ataque al Stars Arena] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-98a298d9bb-dd1a6f-69ad2a.webp)

El atacante primero crea un contrato de ataque (0x7f283 y 0xdd9af), llama al método 0xe9ccf3a3 de Stars Arena: Acciones contrato a través del contrato de ataque y luego deposita 1 token AVAX.

! [¿Volver a entrar?] Análisis del ataque al Stars Arena] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-fccaa140dd-dd1a6f-69ad2a.webp)

De acuerdo con el seguimiento paso a paso del código descompilado, el método 0xe9ccf3a3 utilizado primero por el atacante es una función similar a un depósito que llama a los métodos 0x326c y 0x2058. El método 0x326c es una llamada que se devuelve solo como parámetro, mientras que el método 0x2058 es similar a una función que maneja la compra o el intercambio de algún tipo de token, y el método utiliza la cantidad y la dirección de los tokens AVAX pasados por el 0xe9ccf3a3 para calcular la siguiente operación y el cálculo de acciones y tarifas.

! [¿Volver a entrar?] Análisis del ataque a la Arena de las Estrellas] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-9279aef172-dd1a6f-69ad2a.webp)

Siguiendo la lógica de llamada de la línea 92 del método 0x2058, se puede encontrar que el método 0x1a9b es una función de cálculo, y el resultado calculado es un valor similar al precio, y su valor devuelto es el v24 / 0xde0b6b3a7640000 o _initialPrice recién calculado.

Las siguientes líneas 109, 110 y 116 de los métodos 0x307c y 0x30ef tienen una llamada a una llamada de bajo nivel, y la llamada 0x30ef sigue siendo una llamada externa a g1, es decir, la dirección de contrato de ataque 0xdd9af entrante. La función no tiene una restricción de bloqueo de reentrada y, después de ejecutar la llamada externa, este método solo ejecutará el juicio if posterior para actualizar los parámetros field0.length y field0. No hay duda de que la reentrada está ocurriendo aquí.

! [¿Volver a entrar?] Análisis del ataque a la Arena de las Estrellas] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-3c9611d0bb-dd1a6f-69ad2a.webp)

Echemos un vistazo a los datos que el atacante construye en la llamada de reentrada.

! [¿Volver a entrar?] Análisis del ataque al Stars Arena] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-ce911c42e9-dd1a6f-69ad2a.webp)

La reentrada externa llama al método 0x5632b2e4 y pasa cuatro parámetros construidos por el atacante, que convierten 153005ce00 en 9100000000000 por decimal.

Como se mencionó anteriormente, la llamada externa al método 0x5632b2e4 se ejecuta antes del juicio if(g0 == _getMyShares[address(g1)][msg.sender]). En este momento, el valor field0.lengt es 0 y no se actualiza. De esta manera, el atacante omite el juicio en el método 0x5632b2e4 y modifica el estado de los siguientes cuatro parámetros de msg.sender, es decir, el 0xdd9af de contrato de ataque, que se construirá cuando se realice la llamada externa.

! [¿Volver a entrar?] Análisis del ataque al Stars Arena] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-53695512db-dd1a6f-69ad2a.webp)

Después de hacer esto, el atacante llamó a sellShares para vender su parte, obteniendo 266,102.97278 AVAX.

! [¿Volver a entrar?] Análisis del ataque al Stars Arena] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-54e5a2f231-dd1a6f-69ad2a.webp)

Profundizando en la función sellShares, la función llama inicialmente al método 0x1a9b, que se llamó en el método 0x2058 anterior, que es una función que maneja la compra o el intercambio de algún tipo de token. Podemos ver que el método 0x2329 en el método 0x1a9b actualiza el propietario_9f[g0] y este parámetro se ha modificado a 9100000000000 construido por el atacante en la reentrada.

! [¿Volver a entrar?] Análisis del ataque al Stars Arena] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-60823d09ab-dd1a6f-69ad2a.webp)

De vuelta en el método 0x1a9b, vuelva a calcular en función del valor construido previamente de forma maliciosa (consulte la nota para ver la cantidad calculada).

! [¿Volver a entrar?] Análisis del ataque al Stars Arena] (https://img-cdn.gateio.im/webp-social/moments-69a80767fe-764b869b64-dd1a6f-69ad2a.webp)

Después del cálculo anterior, el precio correspondiente a la acción recién calculada ha cambiado y el resultado es 274,333.061476814e18. Después de cobrar una serie de tarifas, el atacante utiliza construcciones maliciosas para manipular el precio sin modificar la acción, vender la acción y obtener ganancias con éxito.

Resumen

En el centro de este ataque se encuentra la actualización de la dependencia del cálculo de precios causada por el ataque de reentrada, que conduce a una manipulación maliciosa de precios similar. El equipo de seguridad de Slow Mist sugiere que el equipo del proyecto debe intentar ser auditado por varias empresas de seguridad antes de implementar el contrato. Al mismo tiempo, al codificar, debe cumplir con la especificación de codificación Checks-Effects-Interactions tanto como sea posible y agregar un bloqueo anti-reentrada.

Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • Comentar
  • Compartir
Comentar
0/400
Sin comentarios
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)