Vulnerabilidad de almacenamiento transitorio provoca el robo de activos por valor de 300,000 dólares
El 30 de marzo de 2025, un proyecto de trading con apalancamiento en la cadena de Ethereum fue atacado, con pérdidas 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:
Fondo
La versión 0.8.24 de Solidity introdujo características de almacenamiento transitorio basadas en EIP-1153. Esta es una nueva ubicación de almacenamiento de datos, diseñada para proporcionar a los desarrolladores una forma de almacenamiento temporal de bajo costo y efectiva durante las transacciones. El almacenamiento transitorio se implementa a través de dos nuevas instrucciones EVM, TSTORE y TLOAD, que tienen características como bajo costo de gas, persistencia dentro de la transacción y eliminación automática.
Motivo del ataque
La causa fundamental de este evento es que el valor almacenado temporalmente en la función mediante tstore no se borró al finalizar la llamada a la función. Los atacantes aprovecharon esta característica para construir direcciones maliciosas específicas y eludir la verificación de permisos para transferir tokens.
Pasos del ataque
El atacante crea dos tokens maliciosos A y B, y crea un fondo para estos dos tokens en un DEX y proporciona liquidez.
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.
El atacante llama a la función mint del contrato Vault, depositando el token de deuda B para acuñar el token apalancado. En este proceso, la dirección del grupo DEX y la cantidad acuñada se almacenan de forma transitoria.
El atacante crea un contrato malicioso cuya dirección es la misma que el valor almacenado de forma temporal en la segunda vez.
El atacante utiliza un contrato malicioso para llamar a la función de retorno del contrato Vault y retirar tokens. Debido a que los valores de almacenamiento transitorio no se han borrado, se produce un error en la verificación de identidad.
Finalmente, el atacante llama a la función de callback del contrato Vault a través del contrato de ataque (token A), transfiriendo otros tokens (como WBTC, WETH) para obtener beneficios.
Análisis del flujo de fondos
Los atacantes robaron aproximadamente 300,000 dólares en activos, incluyendo 17,814.8626 USDC, 1.4085 WBTC y 119.871 WETH. El WBTC fue cambiado por 63.5596 WETH, y el USDC fue cambiado por 9.7122 WETH. Posteriormente, un total de 193.1428 WETH fue transferido a una plataforma anónima. Los fondos iniciales de los atacantes provinieron de 0.3 ETH transferidos a esa plataforma.
Resumen
El núcleo de este ataque radica en que el atacante aprovecha la característica de que el almacenamiento transitorio se mantiene constante durante toda la transacción, eludiendo la verificación de permisos de la función de callback. Se sugiere que el equipo del proyecto elimine inmediatamente los valores en el almacenamiento transitorio utilizando tstore(key, 0) al finalizar la llamada de función, de acuerdo con la lógica de negocio. Al mismo tiempo, se debe fortalecer la auditoría del código del contrato y las pruebas de seguridad para prevenir la ocurrencia de situaciones similares.
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.
7 me gusta
Recompensa
7
7
Republicar
Compartir
Comentar
0/400
VitaliksTwin
· hace11h
Esta ola de resumen aún desperdicia gas.
Ver originalesResponder0
CountdownToBroke
· hace11h
30w viene otro hermano de envío
Ver originalesResponder0
0xLuckbox
· hace11h
Otra vez me robaron trescientos mil~contratos inteligentes cuídate
Ver originalesResponder0
OnchainGossiper
· hace11h
¿Otra vez se ha explotado una vulnerabilidad? ¿Es tonto o qué?
Ver originalesResponder0
GateUser-0717ab66
· hace11h
30w también se atreve a mencionarlo
Ver originalesResponder0
VibesOverCharts
· hace11h
¿30w? Solo la tarifa de transacción de un día.
Ver originalesResponder0
DefiPlaybook
· hace11h
¡Atención! Según el muestreo de datos, este tipo de vulnerabilidades de almacenamiento puede causar una tasa de pérdida de hasta el 86.3%.
Una vulnerabilidad de almacenamiento transitorio causó pérdidas de 300,000 dólares en un proyecto de comercio de márgen de Ethereum.
Vulnerabilidad de almacenamiento transitorio provoca el robo de activos por valor de 300,000 dólares
El 30 de marzo de 2025, un proyecto de trading con apalancamiento en la cadena de Ethereum fue atacado, con pérdidas 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:
Fondo
La versión 0.8.24 de Solidity introdujo características de almacenamiento transitorio basadas en EIP-1153. Esta es una nueva ubicación de almacenamiento de datos, diseñada para proporcionar a los desarrolladores una forma de almacenamiento temporal de bajo costo y efectiva durante las transacciones. El almacenamiento transitorio se implementa a través de dos nuevas instrucciones EVM, TSTORE y TLOAD, que tienen características como bajo costo de gas, persistencia dentro de la transacción y eliminación automática.
Motivo del ataque
La causa fundamental de este evento es que el valor almacenado temporalmente en la función mediante tstore no se borró al finalizar la llamada a la función. Los atacantes aprovecharon esta característica para construir direcciones maliciosas específicas y eludir la verificación de permisos para transferir tokens.
Pasos del ataque
El atacante crea dos tokens maliciosos A y B, y crea un fondo para estos dos tokens en un DEX y proporciona liquidez.
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.
El atacante llama a la función mint del contrato Vault, depositando el token de deuda B para acuñar el token apalancado. En este proceso, la dirección del grupo DEX y la cantidad acuñada se almacenan de forma transitoria.
El atacante crea un contrato malicioso cuya dirección es la misma que el valor almacenado de forma temporal en la segunda vez.
El atacante utiliza un contrato malicioso para llamar a la función de retorno del contrato Vault y retirar tokens. Debido a que los valores de almacenamiento transitorio no se han borrado, se produce un error en la verificación de identidad.
Finalmente, el atacante llama a la función de callback del contrato Vault a través del contrato de ataque (token A), transfiriendo otros tokens (como WBTC, WETH) para obtener beneficios.
Análisis del flujo de fondos
Los atacantes robaron aproximadamente 300,000 dólares en activos, incluyendo 17,814.8626 USDC, 1.4085 WBTC y 119.871 WETH. El WBTC fue cambiado por 63.5596 WETH, y el USDC fue cambiado por 9.7122 WETH. Posteriormente, un total de 193.1428 WETH fue transferido a una plataforma anónima. Los fondos iniciales de los atacantes provinieron de 0.3 ETH transferidos a esa plataforma.
Resumen
El núcleo de este ataque radica en que el atacante aprovecha la característica de que el almacenamiento transitorio se mantiene constante durante toda la transacción, eludiendo la verificación de permisos de la función de callback. Se sugiere que el equipo del proyecto elimine inmediatamente los valores en el almacenamiento transitorio utilizando tstore(key, 0) al finalizar la llamada de función, de acuerdo con la lógica de negocio. Al mismo tiempo, se debe fortalecer la auditoría del código del contrato y las pruebas de seguridad para prevenir la ocurrencia de situaciones similares.