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.
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:
Bajo costo de gas: el costo de gas de las operaciones TSTORE y TLOAD está fijado en 100.
Persistencia de la transacción: los datos se mantienen válidos durante toda la transacción.
Eliminación automática: después de que la transacción finaliza, el almacenamiento transitorio se restablece automáticamente a cero.
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.
Pasos de ataque
El atacante crea dos tokens maliciosos A y B, y crea un pool para estos dos tokens en un DEX inyectando liquidez.
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.
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.
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.
El atacante crea un contrato malicioso cuya dirección es la misma que el valor almacenado de forma transitoria por segunda vez.
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.
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.
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.
Consejos de seguridad
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.
Fortalecer la auditoría del código de contratos y las pruebas de seguridad para evitar vulnerabilidades similares.
Utilice con precaución las características recién introducidas y comprenda plenamente sus riesgos potenciales.
Establecer un mecanismo de múltiples verificaciones, no depender únicamente de un único método de autenticación.
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.
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.
14 me gusta
Recompensa
14
7
Compartir
Comentar
0/400
DegenWhisperer
· hace20h
Ser engañados un día más ha comenzado.
Ver originalesResponder0
PensionDestroyer
· hace20h
30w se ha vuelto a humectar
Ver originalesResponder0
AirDropMissed
· hace20h
Otra vez han tomado a la gente por tonta.
Ver originalesResponder0
ruggedNotShrugged
· hace20h
La perspectiva es limitada. Ahora, este tipo de ataque no es nada.
Ver originalesResponder0
SillyWhale
· hace20h
Otra vez, pequeños proyectos han sido Ser engañados.
Ver originalesResponder0
RugPullAlarm
· hace20h
Otro contrato fue expuesto por no haberse limpiado bien.
Ver originalesResponder0
SwingingLittleLeek
· hace20h
¡Ethereum se mueve por encima de 3000 recientemente! En el futuro, seguirá por encima de 3000.
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.
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:
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.
Pasos de ataque
El atacante crea dos tokens maliciosos A y B, y crea un pool para estos dos tokens en un DEX inyectando liquidez.
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.
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.
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.
El atacante crea un contrato malicioso cuya dirección es la misma que el valor almacenado de forma transitoria por segunda vez.
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.
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.
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:
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.
Consejos de seguridad
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.
Fortalecer la auditoría del código de contratos y las pruebas de seguridad para evitar vulnerabilidades similares.
Utilice con precaución las características recién introducidas y comprenda plenamente sus riesgos potenciales.
Establecer un mecanismo de múltiples verificaciones, no depender únicamente de un único método de autenticación.
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.