El proyecto Ethereum sufrió un ataque de 300,000 dólares, siendo la deficiencia del almacenamiento transitorio la causa principal.

robot
Generación de resúmenes en curso

Un defecto de almacenamiento transitorio causa un ataque de 300,000 dólares al proyecto Ethereum

El 30 de marzo de 2025, un sistema de monitoreo de seguridad detectó un ataque a un proyecto de trading apalancado en la cadena de Ethereum, con pérdidas de más de 300,000 dólares en activos. El equipo de seguridad realizó un análisis de este evento y ahora comparte los resultados a continuación:

Conocimientos de fondo

La versión 0.8.24 de Solidity introdujo la característica de almacenamiento transitorio (transient storage), que es una nueva ubicación de almacenamiento de datos. Su característica central es que los datos son válidos solo durante la ejecución de la transacción actual y se eliminan automáticamente al finalizar la transacción. Se accede y modifica a través de dos nuevas instrucciones EVM, TSTORE y TLOAD.

El almacenamiento transitorio tiene las siguientes características:

  • Bajo costo de gas: el costo de gas de TSTORE y TLOAD está fijo en 100
  • Persistencia dentro de la transacción: los datos se mantienen válidos durante toda la transacción
  • Eliminación automática: se restablece a cero automáticamente al finalizar la transacción

Residuos mortales: un robo en cadena de 300,000 dólares provocado por almacenamiento transitorio

Causa de la vulnerabilidad

La causa fundamental de este evento es que los valores utilizados en el almacenamiento transitorio con tstore en la función no se eliminaron después de que terminó la llamada a la función. Esto permitió a los atacantes aprovechar esta característica para construir direcciones maliciosas específicas y eludir la verificación de permisos para retirar tokens.

Residuos mortales: un robo en cadena de 300,000 dólares desencadenado por almacenamiento transitorio

Proceso de ataque

  1. El atacante crea dos tokens maliciosos A y B, y en un DEX crea un pool para estos dos tokens inyectando liquidez, donde el token A es el contrato de ataque.

  2. El atacante llama a la función initialize del contrato Vault, utilizando el token A como colateral y el token B como deuda para crear el mercado de comercio apalancado APE-21.

  3. El atacante llama a la función mint del contrato Vault, depositando el token de deuda B para acuñar el token apalancado APE. En este proceso, la dirección del grupo DEX y la cantidad acuñada se almacenan temporalmente en orden.

  4. El atacante crea un contrato malicioso cuya dirección es la misma que el valor del segundo almacenamiento transitorio.

  5. El atacante llama directamente a la función de callback del contrato Vault a través de este contrato malicioso para retirar tokens. Debido a que los valores en el almacenamiento temporal no se han borrado, se pasa incorrectamente la verificación de identidad.

  6. Por último, el atacante llama a la función de callback del contrato Vault a través del contrato de ataque (token A) y transfiere otros tokens (WBTC, WETH) del contrato Vault para obtener ganancias.

Residuos mortales: un atraco en cadena de 300,000 dólares provocado por almacenamiento transitorio

Residuos mortales: un robo en cadena de 300,000 dólares provocado por almacenamiento transitorio

Residuos mortales: un robo en cadena de 300,000 dólares provocado por almacenamiento transitorio

Residuos mortales: un robo en cadena de 300,000 dólares provocado por almacenamiento transitorio

Residuos mortales: un atraco en cadena de 300,000 dólares provocado por almacenamiento transitorio

Residuos mortales: un robo en cadena de 300,000 dólares provocado por almacenamiento transitorio

Residuos mortales: un asalto en cadena de 300,000 dólares provocado por almacenamiento transitorio

Residuos mortales: un robo en cadena de 300,000 dólares provocado por almacenamiento transitorio

Residuos mortales: un robo en cadena de 300,000 dólares provocado por almacenamiento transitorio

Residuos Mortales: Un Robo en Cadena de $300,000 Provocado por Almacenamiento Transitorio

Residuos mortales: un atraco en cadena de 300,000 dólares provocado por el almacenamiento transitorio

Análisis de flujo de fondos

Según el análisis en cadena, el atacante robó aproximadamente 300,000 dólares en activos, incluyendo 17,814.8626 USDC, 1.4085 WBTC y 119.871 WETH.

  • WBTC se ha intercambiado por 63.5596 WETH
  • USDC fue canjeado por 9.7122 WETH
  • Un total de 193.1428 WETH se ha transferido a un servicio de mezcla de monedas.

El capital inicial del atacante proviene de 0.3 ETH transferidos desde un servicio de mezcla de monedas.

Residuos mortales: un robo en cadena de 300,000 dólares provocado por almacenamiento transitorio

Residuos mortales: un robo en cadena de 300,000 dólares provocado por almacenamiento transitorio

Residuos mortales: un robo en la cadena de 300,000 dólares provocado por el almacenamiento transitorio

Residuos mortales: un robo en la cadena de 300,000 dólares provocado por el almacenamiento transitorio

Resumen y recomendaciones

El núcleo de este ataque radica en aprovechar la característica del almacenamiento transitorio que mantiene valores durante toda la duración de la transacción, eludiendo la verificación de permisos de la función de devolución de llamada. Se recomienda que el equipo del proyecto utilice inmediatamente tstore(key, 0) para limpiar los valores en el almacenamiento transitorio, de acuerdo con la lógica del negocio, después de que se complete la llamada a la función. Además, se debe fortalecer la auditoría del código del contrato y las pruebas de seguridad para evitar que situaciones similares ocurran.

Ver originales
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Recompensa
  • 3
  • Compartir
Comentar
0/400
CommunitySlackervip
· hace15h
Otro proyecto que se ha convertido en un cajero automático.
Ver originalesResponder0
BlockchainDecodervip
· hace15h
Desde un punto de vista técnico, este es un uso inadecuado del almacenamiento transitorio.
Ver originalesResponder0
StealthMoonvip
· hace15h
¿Otra vulnerabilidad de almacenamiento temporal? Pongan atención.
Ver originalesResponder0
  • Anclado
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)