Una vulnerabilidad de almacenamiento transitorio llevó a un ataque de 300,000 dólares por parte de un hacker en un proyecto de Ethereum.

robot
Generación de resúmenes en curso

Un robo on-chain causado por el almacenamiento transitorio: detrás de una pérdida de 300,000 dólares

El 30 de marzo de 2025, un proyecto de trading apalancado en la cadena de Ethereum llamado SIR.trading fue atacado, lo que resultó en una pérdida de activos de más de 300,000 dólares. El equipo de seguridad llevó a cabo un análisis profundo de este incidente, revelando los detalles y las causas del ataque.

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

Antecedentes del evento

Los atacantes aprovecharon la característica de almacenamiento transitorio introducida en la versión 0.8.24 de Solidity. Esta nueva ubicación de almacenamiento de datos está diseñada para proporcionar una forma de almacenamiento temporal efectiva y de bajo costo durante la transacción. Las principales características del almacenamiento transitorio incluyen:

  1. Bajo costo de gas: el costo de operación es fijo en 100 gas.
  2. Persistencia 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 se restablece automáticamente a cero.

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

Raíz del ataque

La raíz del ataque radica en que los valores almacenados transitoriamente mediante tstore en la función no se borran al finalizar la llamada a la función. Esto permite a los atacantes construir direcciones maliciosas específicas, eludir la verificación de permisos y transferir tokens.

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

Proceso de ataque

  1. El atacante crea dos tokens maliciosos A y B, y crea piscinas para estos dos tokens en un DEX e inyecta liquidez.

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

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

  4. El atacante crea un contrato malicioso cuya dirección es la misma que la cantidad de acuñación almacenada temporalmente anteriormente.

  5. El atacante llamó a la función de devolución de llamada del contrato Vault a través de un contrato malicioso, y debido a que los valores en el almacenamiento transitorio no se habían limpiado, logró eludir la verificación de permisos.

  6. Por último, el atacante llama directamente a la función de retorno del contrato Vault mediante 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

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 fatales: 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

Residuo mortal: 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 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 el almacenamiento transitorio

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

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

Análisis del flujo de capital

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

  • 17,814.8626 USDC
  • 1.4085 WBTC
  • 119.871 WETH

Estos activos fueron luego convertidos a WETH y finalmente transferidos a una herramienta de anonimato. La fuente inicial de fondos del atacante fue de 0.3 ETH transferidos desde esa herramienta.

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

Sugerencias de seguridad

Para prevenir ataques similares, el equipo del proyecto debe:

  1. Después de que finalice la llamada a la función, use inmediatamente tstore(key para limpiar los valores en el almacenamiento transitorio.
  2. Fortalecer la auditoría del código de los contratos y las pruebas de seguridad.
  3. Use con precaución las nuevas características del lenguaje introducidas, comprendiendo plenamente sus riesgos potenciales.

Este incidente enfatiza una vez más la importancia de mantener un equilibrio entre la seguridad y la aplicación de nuevas tecnologías en el desarrollo de proyectos de blockchain. A medida que la tecnología avanza constantemente, los desarrolladores y expertos en seguridad deben mantenerse alerta, identificando y respondiendo a nuevos desafíos de seguridad de manera oportuna.

ETH5.54%
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
MemeTokenGeniusvip
· hace14h
¿Qué adorable es esto? ¿Se lanza sin siquiera una prueba?
Ver originalesResponder0
quiet_lurkervip
· hace14h
Otro proyecto ha sido aplastado contra el suelo.
Ver originalesResponder0
PumpBeforeRugvip
· hace14h
Escuché que esta vez se dio la vuelta y salió corriendo~contratos inteligentes pequeño fallo
Ver originalesResponder0
MEVHuntervip
· hace14h
¡30 mil es demasiado barato! Ni siquiera vale la pena usar Flash Loans.
Ver originalesResponder0
ContractSurrendervip
· hace15h
Viejos proyectos Todo dentro nuevas características Fresco...
Ver originalesResponder0
MissedAirdropAgainvip
· hace15h
Eh, solo son 300k de tonterías.
Ver originalesResponder0
NeverPresentvip
· hace15h
¿Un error tan básico puede afectar?
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)