La pérdida de activos en cadena de 300,000 dólares causada por el residuo de almacenamiento transitorio: los desarrolladores deben tener cuidado con los riesgos de nuevas características.

Residuo mortal: Análisis de un evento en cadena de 300,000 dólares provocado por el almacenamiento transitorio

El 30 de marzo de 2025, un sistema de monitoreo de seguridad en cadena detectó un ataque a un proyecto de trading de apalancamiento en la red de Ethereum, lo que resultó en pérdidas de activos superiores a 300,000 dólares. El equipo de seguridad realizó un análisis exhaustivo de este incidente y ahora comparte los resultados a continuación:

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

Contexto

La versión 0.8.24 de Solidity introduce características de almacenamiento transitorio basadas en EIP-1153. Esta es una nueva ubicación de almacenamiento de datos que ofrece a los desarrolladores una forma de almacenamiento temporal de bajo costo y válida durante la transacción. Las principales características del almacenamiento transitorio incluyen:

  1. Bajo costo de gas: la operación consume 100 gas de forma fija, muy por debajo de la operación de almacenamiento convencional.
  2. Persistencia dentro de la transacción: los datos permanecen válidos durante toda la transacción.
  3. Eliminación automática: Después de que la transacción haya finalizado, el almacenamiento transitorio se restablece automáticamente a cero.

Residuos mortales: un robo on-chain de 300,000 dólares provocado por almacenamiento transitorio

Análisis de eventos

La causa fundamental de este incidente es que los valores almacenados temporalmente en la función mediante tstore no se borran después de que termina la llamada a la función, lo que permite a los atacantes aprovechar esta característica para construir direcciones maliciosas específicas y eludir la verificación de permisos para transferir tokens.

Los pasos del ataque son los siguientes:

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

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

  1. Llamar a la función initialize del contrato objetivo, utilizando el token A como colateral y el token B como token de deuda para crear un mercado de trading apalancado.

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

  1. Llamar a la función mint para depositar el token de deuda B y acuñar el token apalancado. Durante este proceso, la dirección del pool DEX y la cantidad acuñada se almacenan de forma transitoria.

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

  1. Crear un contrato malicioso con una dirección que tenga la misma cantidad de acuñación en el almacenamiento transitorio.

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

  1. A través de contratos maliciosos, se llama a la función de devolución de llamada del contrato objetivo, aprovechando los valores residuales en el almacenamiento transitorio para eludir la autenticación.

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

  1. Por último, el atacante llama directamente a la función de callback del contrato objetivo a través de un ataque al contrato, transfiriendo otros tokens (como WBTC, WETH) para obtener ganancias.

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

Flujo de capital

Según los datos de la herramienta de análisis on-chain, los atacantes robaron activos por valor de aproximadamente 300,000 dólares, incluyendo:

  • 17,814.8626 USDC
  • 1.4085 WBTC
  • 119.871 WETH

Estos activos fueron posteriormente convertidos a WETH, con un total de 193.1428 WETH transferidos a una herramienta de anonimización. La fuente inicial de fondos del atacante provino de 0.3 ETH transferidos a esa herramienta.

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

Consejos de seguridad

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

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

  1. Fortalecer la auditoría del código del contrato y las pruebas de seguridad, prestando especial atención a las nuevas características del lenguaje introducidas y sus riesgos potenciales.

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

  1. Implementar mecanismos de múltiples verificaciones para evitar pérdidas masivas de activos causadas por una única vulnerabilidad.

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

  1. Realizar evaluaciones de seguridad y escaneos de vulnerabilidades de forma periódica, y corregir de inmediato los problemas potenciales.

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

  1. Considerar la introducción de un sistema de monitoreo de seguridad para supervisar en tiempo real comportamientos de transacciones anómalas.

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

Este evento nos recuerda una vez más que debemos ser especialmente cautelosos al adoptar nuevas tecnologías, entendiendo plenamente sus características y riesgos potenciales. Al mismo tiempo, las prácticas de seguridad continuas y las auditorías regulares son cruciales para garantizar la seguridad de los proyectos on-chain.

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 provocado por almacenamiento transitorio

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

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
  • 5
  • Compartir
Comentar
0/400
MemeTokenGeniusvip
· 07-22 16:28
¿Así que 30 mil dólares se fueron? ¿Cuántas personas murieron?
Ver originalesResponder0
WhaleStalkervip
· 07-21 21:55
Otra vez un contrato inteligente cayó en el agujero.
Ver originalesResponder0
GateUser-1a2ed0b9vip
· 07-19 16:59
Otra persona ha fallado. ¿Quién te mandó a ser codicioso por lo barato?
Ver originalesResponder0
ProxyCollectorvip
· 07-19 16:55
Otra vez tomar a la gente por tonta 30w, tsk tsk
Ver originalesResponder0
BugBountyHuntervip
· 07-19 16:50
¡Máxima velocidad de captura de insectos!
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)