La vulnerabilidad de almacenamiento transitorio llevó a un ataque de 300,000 dólares a un proyecto de Ethereum. El equipo de seguridad analiza los detalles clave.

robot
Generación de resúmenes en curso

Análisis del incidente de ataque on-chain de 300,000 dólares provocado por una vulnerabilidad de almacenamiento transitorio

El 30 de marzo de 2025, un proyecto de trading apalancado en la cadena de Ethereum fue atacado, lo que resultó en una pérdida de más de 300,000 dólares en activos. El equipo de seguridad realizó un análisis profundo de este incidente 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. Sus principales características incluyen:

  1. Bajo costo de gas: el costo de gas de las operaciones TSTORE y TLOAD está fijado en 100.
  2. Persistencia de la transacción: los datos se mantienen válidos durante toda la transacción.
  3. Eliminación automática: después de que la transacción finaliza, el almacenamiento transitorio se restablece automáticamente a cero.

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

Motivo del ataque

La causa fundamental de este evento es que los valores almacenados temporalmente en la función utilizando tstore no se borran al finalizar la llamada a la función. Los atacantes aprovecharon esta característica para construir direcciones maliciosas específicas que eluden la verificación de permisos, permitiendo así la transferencia de tokens.

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

Pasos de ataque

  1. El atacante crea dos tokens maliciosos A y B, y crea un pool para estos dos tokens en un DEX inyectando liquidez.

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

  3. El atacante llama a la función mint del contrato Vault, depositando el token de deuda B para acuñar el token de apalancamiento. En este proceso, la dirección del pool DEX se almacena de forma transitoria por primera vez.

  4. Cuando la piscina DEX realiza una operación de intercambio, se llamará a la función uniswapV3SwapCallback del contrato Vault. Esta función utiliza tload para obtener un valor del almacenamiento transitorio para verificar la identidad del llamador y realizará un segundo almacenamiento transitorio de la cantidad acuñada.

  5. El atacante crea un contrato malicioso cuya dirección es la misma que el valor almacenado de forma transitoria por segunda vez.

  6. El atacante llama directamente a la función uniswapV3SwapCallback del contrato Vault a través de este contrato malicioso para retirar tokens. Debido a que los valores en el almacenamiento transitorio no se han borrado, se produce una validación incorrecta.

  7. Por último, el atacante llama a la función uniswapV3SwapCallback del contrato Vault atacando el contrato (token A), para retirar otros tokens del contrato Vault (como WBTC, WETH) y obtener ganancias.

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

Residuos mortales: un robo on-chain 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 de 300,000 dólares en cadena 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 de 300,000 dólares en cadena provocado por almacenamiento transitorio

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

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

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

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

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

Análisis del flujo de fondos

Según el análisis de herramientas de anti-lavado de dinero y seguimiento on-chain, los atacantes robaron aproximadamente 300,000 dólares en activos, que incluyen:

  • 17,814.8626 USDC
  • 1.4085 WBTC
  • 119.871 WETH

Luego, el atacante intercambió WBTC y USDC por WETH, un total de 193.1428 WETH fue transferido a una herramienta de mezcla. Los fondos iniciales del atacante provenían de 0.3 ETH transferidos a esa herramienta de mezcla.

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

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

Consejos de seguridad

  1. El equipo del proyecto debe utilizar tstore(key, 0) para limpiar inmediatamente los valores en el almacenamiento transitorio después de que la llamada a la función haya finalizado, de acuerdo con la lógica del negocio.

  2. Fortalecer la auditoría del código de contratos y las pruebas de seguridad para evitar vulnerabilidades similares.

  3. Utilice con precaución las características recién introducidas y comprenda plenamente sus riesgos potenciales.

  4. Establecer un mecanismo de múltiples verificaciones, no depender únicamente de un único método de autenticación.

  5. Realizar evaluaciones de seguridad y escaneos de vulnerabilidades de forma regular, y reparar de manera oportuna los problemas detectados.

Este incidente de ataque enfatiza una vez más la necesidad de que los proyectos de blockchain sean especialmente cautelosos al utilizar nuevas características tecnológicas, y también resalta la importancia de las auditorías de seguridad continuas. Los desarrolladores deben estar siempre atentos a las mejores prácticas de seguridad más recientes y seguir estrictamente en la implementación del código.

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
  • 7
  • Compartir
Comentar
0/400
DegenWhisperervip
· hace20h
Ser engañados un día más ha comenzado.
Ver originalesResponder0
PensionDestroyervip
· hace20h
30w se ha vuelto a humectar
Ver originalesResponder0
AirDropMissedvip
· hace20h
Otra vez han tomado a la gente por tonta.
Ver originalesResponder0
ruggedNotShruggedvip
· hace20h
La perspectiva es limitada. Ahora, este tipo de ataque no es nada.
Ver originalesResponder0
SillyWhalevip
· hace20h
Otra vez, pequeños proyectos han sido Ser engañados.
Ver originalesResponder0
RugPullAlarmvip
· hace20h
Otro contrato fue expuesto por no haberse limpiado bien.
Ver originalesResponder0
SwingingLittleLeekvip
· hace20h
¡Ethereum se mueve por encima de 3000 recientemente! En el futuro, seguirá por encima de 3000.
Ver originalesResponder0
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)